Chương 1: Giới thiệu Chương 5 trình bày về cách tạo tập thí nghiệm, kết quả chạy thí nghiệm và đưa ra một số đánh giá về hệ thống. Chương 6 đưa ra kết luận và đề xuất một số hướng phát triển tiếp theo trong tương lai của đề tài. 10 Chương 2: Các nghiên cứu liên quan Chương 2: Tổng quan Trong chương này chúng tôi sẽ khảo sát các công trình đã đăng tải có liên quan cùng hướng tiếp cận của đề tài.1 Phân loại các phương pháp tổ hợp Tổ hợp các dịch vụ web liên quan đến việc kết hợp một số dịch vụ web hiện có lại với nhau để tạo ra một dịch vụ web phức tạp và hữu ích hơn. Tổ hợp các dịch vụ web là chủ đề thu hút sự quan tâm của rất nhiều nhà nghiên cứu.
Nó cho thấy có rất nhiều vấn đề phức tạp mà chúng ta cần phải giải quyết khi tổ hợp các dịch vụ web đơn giản hiện có lại với nhau [1,2]. Một trong những mục tiêu chính của việc tổ hợp dịch vụ web là tái sử dụng các dịch vụ hiện có và kết hợp chúng thành một dịch vụ web phức hợp. Sự đa dạng của các kỹ thuật tổ hợp dịch vụ web có thể được phân loại theo hai cách tiếp cận: tổ hợp theo cú pháp hoặc tổ hợp theo ngữ nghĩa [3]. Chúng ta cũng có một cách phân chia khác, đó là các phương pháp tổ hợp tĩnh, nghĩa là các dịch vụ web được tổ hợp trong giai đoạn thiết kế và phương pháp tổ hợp động, nghĩa là các dịch vụ web được tổ hợp trong thời gian chạy, vừa thực thi vừa tổ hợp, kết quả của bước thực thi trước sẽ quyết định việc tổ hợp ở bước sau.
Kết hợp hai cách phân loại trên ta có tất cả bốn kỹ thuật chính: tổ hợp bằng tay và tĩnh (Manual, Static Composition), tổ hợp tự động và tĩnh (Automatic, Static Composition), tổ hợp tự động và được thực hiện động lúc chạy (Automatic, Dynamic Composition) và cuối cùng là tổ hợp bán tự động và được thực hiện tĩnh hoặc động (Semi-automatic, Static or Dynamic Composition). Phương pháp Manual, Static Composition là thuộc nhóm tổ hợp dựa trên cú pháp. Ba phương pháp còn lại là thuộc nhóm tổ hợp dựa trên ngữ nghĩa. 11 Chương 2: Các nghiên cứu liên quan 1.
Phương pháp tổ hợp bằng tay và tĩnh: Tổ hợp tĩnh có nghĩa là người dùng phải xây dựng một mô hình tiến trình trừu tượng trước khi bắt đầu các kết hợp [4]. Mô hình tiến trình trừu tượng bao gồm một tập hợp các tác vụ và sự phụ thuộc, ràng buộc giữa chúng. Mỗi tác vụ có một câu truy vấn được sử dụng để tìm kiếm các dịch vụ web đơn để hoàn thành nhiệm vụ. Có hai cách tiếp cận hiện đang được nghiên cứu trong nhóm các phương pháp tổ hợp dịch vụ web tĩnh/ thực hiện bằng tay.
Hướng tiếp cận thứ nhất đó là Web Services Orchestration [5]. Cách tiếp cận này kết hợp các dịch vụ web có sẵn với việc thêm một thành phần đóng vai trò điều phối viên trung tâm có trách nhiệm gọi và kết hợp các dịch vụ web đơn lại với nhau. Phương pháp thứ hai được gọi Web Services Choreography [6]. Phương pháp này không sử dụng thành phần điều phối viên trung tâm mà nó thực hiện các tác vụ phức tạp thông qua việc định nghĩa các giao tiếp sẽ được thực hiện bởi các dịch vụ thành phần [7].
Trong phương pháp tổ hợp tĩnh, việc tổ hợp các dịch vụ được thực hiện tại thời điểm thiết kế và việc tổ hợp được thực hiện bằng tay, sau khi có lược đồ tổ hợp hoàn chỉnh thì chúng ta mới thực thi lược đồ tổ hợp này để đạt được mục tiêu/ yêu cầu mong muốn. Phương pháp tổ hợp này là không linh hoạt. Tuy nhiên, có rất nhiều kỹ thuật tổ hợp bằng tay đã được đề xuất. Những kỹ thuật này thường được sử dụng để thiết kế quy trình nghiệp vụ trong các hệ thống quản lý workflow.
Có một số ngôn ngữ đặc tả lược đồ tổ hợp đã được đề xuất theo hướng tiếp cận này (ví dụ như ngôn ngữ BPEL4WS [8]). Bên cạnh tính không linh hoạt, các kỹ thuật này còn có những hạn chế như chúng thường được sử dụng bởi các nhà phát triển phần mềm chứ không phải bởi người dùng cuối. Vì vậy, đây là một trong những điểm hạn chế làm kìm hãm sự phát triển của hướng nghiên cứu này [9]. 12 Chương 2: Các nghiên cứu liên quan 2.
Phương pháp tổ hợp tự động và tĩnh: Tổ hợp tự động là việc tạo ra mô hình tổ hợp và lựa chọn các dịch vụ web một cách tự động dựa trên các yêu cầu của người sử dụng [10]. Do các phương pháp tổ hợp bằng tay rất tốn thời gian và khó thực hiện nên việc tổ hợp tự động hoặc bán tự động là một hướng nghiên cứu mới. Việc tự động tổ hợp các dịch vụ web ngày càng trở nên cần thiết khi số lượng các dịch vụ web trên internet ngày càng tăng lên nhanh chóng. Tự động nghĩa là phương pháp tổ hợp có khả năng tạo ra các mô hình tiến trình trừu tượng một cách tự động và có khả năng xác định đúng dịch vụ cần phải gọi thực thi từ mô hình tiến trình trừu tượng này.
Để thực hiện việc tổ hợp các dịch vụ web tự động, khái niệm về web ngữ nghĩa đã được đề xuất. Ontology được sử dụng như là phương tiện để cung cấp ngữ nghĩa cho các dịch vụ web [9]. Tổ hợp các dịch vụ web ngữ nghĩa là một tính năng cải thiện tính linh hoạt của hệ thống. Một công cụ kết hợp dịch vụ web tự động sẽ lựa chọn “đúng” dịch vụ web thành phần để xây dựng nên một dịch vụ web tổ hợp phù hợp với các đặc tả yêu cầu của người dùng.
Khả năng tự động tổ hợp các dịch vụ web để tạo ra một dịch vụ web mới là một trong những tính năng quan trọng của web ngữ nghĩa. Phương pháp tổ hợp tự động và động: Các dịch vụ web được tổ hợp động (dynamic) [11] có nghĩa là các thành phần của chúng có thể được chọn tự động tại thời gian chạy, dựa trên các yêu cầu cụ thể. Hầu hết các kỹ thuật kết hợp tự động là dựa trên giao diện (interface) hoặc dựa trên chức năng (function). Trong việc kết hợp dựa trên giao diện, các thành phần đầu vào (input) và đầu ra (output) trong giao diện của các dịch vụ được sử dụng để tổ hợp.
Phương pháp này tuy đơn giản nhưng chúng có hạn chế là các chức năng không đảm bảo. Trong khi đó, phương pháp kết hợp dựa trên chức năng căn cứ vào các công thức logic mô tả chức năng của các 13 Chương 2: Các nghiên cứu liên quan dịch vụ, kết hợp với các thông tin về giao diện của dịch vụ sẽ cho kết quả chính xác hơn. Hầu hết các phương pháp này đều dựa việc lập kế hoạch của lĩnh vực trí tuệ nhân tạo(AI planning) [11]. Phương pháp tổ hợp bán tự động, tĩnh hay động: Tổ hợp dịch vụ bán tự động khá giống với tổ hợp tự động.
Tuy nhiên, chúng có sự khác nhau đó là tùy theo các điều kiện khác nhau mà chúng chọn các tiến trình (dịch vụ) khác nhau để đạt được mục tiêu. Trong hướng nghiên cứu này, có nhiều phương pháp tổ hợp chỉ mang tính chất gợi ý còn việc chọn dịch vụ cụ thể để thực thi là công việc của người sử dụng.2 Các phương pháp tổ hợp hiện nay Kể từ khi các dịch vụ web ra đời và ngày càng khẳng định thế mạnh của mình so với các phần mềm truyền thống, nhu cầu tổ hợp các dịch vụ web xuất hiện đòi hỏi phải có một ngôn ngữ để mô tả việc tổ hợp này. Thế hệ ngôn ngữ đầu tiên bao gồm WSFL (IBM’s Web Service Flow Language) và WSCI (BEA Systems’ Web Services Choreography Interface) [2]. WSFL bắt nguồn từ mô hình của ngôn ngữ đặc tả các luồng công việc (workflow): mỗi dịch vụ được gọi tương ứng với một nhiệm vụ (task) của luồng công việc và các luồng dữ liệu, luồng điều khiển được biểu diễn bởi các cung (arc) nối giữa các nhiệm vụ đó [12].
WSCI là một ngôn ngữ đặc tả giao diện dựa trên chuẩn XML dùng để mô tả các luồng thông điệp được trao đổi bởi một dịch vụ web với các dịch vụ khác thông qua phương pháp Web Services Choreography. Hình 2-1: Thế hệ đầu tiên của ngôn ngữ tổ hợp dịch vụ web 14 Chương 2: Các nghiên cứu liên quan Bởi vì WSFL và WSCI không phù hợp với các nhu cầu thực tế của việc tổ hợp, các nhà nghiên cứu đã phát triển thế hệ ngôn ngữ thứ hai. Các phương pháp phổ biến hiện nay được dùng trong việc tổ hợp các dịch vụ web: BPEL (Business Process Execution Language for Web Services), Semantic Web (OWL-S), Web Components, Petri Nets, Model Checking. BPEL BPEL là một ngôn ngữ đặc tả hình thức được sử dụng trong quá trình tự động hóa hoạt động nghiệp vụ.
Trong BPEL, các thành phần của dịch vụ web được gọi là quá trình (process), các dịch vụ tham gia vào quá trình tổ hợp được gọi là đối tác (partners) và thông điệp trao đổi giữa các dịch vụ web với nhau được gọi là một hoạt động (activity). Một quá trình có thể có chưa nhiều hoạt động. Các quá trình được thể hiện trong BPEL dưới dạng các tài liệu XML được cấu trúc một cách chặt chẽ dưới dạng các tương tác đã được chuẩn hóa giữa dịch vụ web với nhau. Toàn bộ BPEL được sử dụng để gọi các giao diện (interface) bên ngoài và lấy kết quả trả về thông qua các thông số đầu vào của các giao diện.
Để có thể thực hiện công việc tổ hợp, BPEL cung cấp các khái niệm: phép gán (assignment) gán giá trị biến vào thông số đầu vào của các giao diện được gọi, phép gọi dịch vụ (invoke) gọi các dịch vụ bên ngoài), điều kiện (condition) được dùng để xác định một dịch vụ có được phép thực hiện hay không [13]. Bên cạnh đó, BPEL còn cho phép các dịch vụ có thể thực hiện theo tuần tự (sequence) hoặc song song (flow) giúp linh hoạt hơn trong quá trình tổ hợp. Mô tả quá trình sử dụng BPEL trong thực tế. Đầu tiên, một chuyên gia BPEL sử dụng một chương trình thiết kế BPEL (BPEL designer) như một môi trường phát triển tích hợp (IDE) để có thể tạo ra mô hình các quá trình nghiệp vụ.
Mô hình này là sự sắp xếp các dịch vụ web xác định cách các dịch vụ này liên kết với nhau và thứ tự kết nối giữa chúng.