PHỤ LỤC B: NGÔN NGỮ VÀ HỆ THỐNG LUỒNG CÔNG VIỆC
B.2 Các ngôn ngữ luồng công việc
Phân loại ngôn ngữ luồng
Thành phần trung tâm của mọi WMS là ngôn ngữ luồng công việc (WL - workflow language). Có nhiều cách tiếp cận khác nhau trong việc mô hình hóa và thực thi các luồng công việc và điều này cũng dẫn đến nhiều loại ngôn ngữ luồng công việc khác nhau. Ví dụ để cho phép người dùng mô hình hóa các luồng công việc, thường yêu cầu các ngôn ngữ luồng công việc cần có tính trực quan và dễ sử dụng, thường được biểu diễn bằng đồ thị. Để thực thi luồng công việc, việc sử dụng các ngôn ngữ kịch bản (văn bản) lại phù hợp hơn. Do đó trong các WMS đầy đủ có hỗ trợ cả mô hình hóa và thực thi các luồng công việc, thường có thể có nhiều mức biểu diễn các luồng công việc, từ mức trừu tượng (sử dụng đồ thị) cho đến mức chi tiết thực thi (sử dụng kịch bản). Hơn nữa, việc chuyển từ biểu diễn trừu tượng sang các kịch bản thường được làm tự động hoặc bán tự động. Có hai hướng tiếp cận đang được các WL sử dụng phổ biến hiện nay là hướng luồng dữ liệu và hướng tiến trình:
- Các WL hướng luồng dữ liệu: đại diện cho cách tiếp cận này là ngôn ngữ SCUFL
(Simple Conceptual Unified Flow Language) được sử dụng trong hệ quản trị luồng công việc Taverna [54]. Trong cách tiếp cận này, việc biểu diễn các luồng dữ liệu và biến đổi chúng là trọng tâm của luồng. Trong Hình B-2 minh họa việc sử dụng SCUFL để mô hình hóa một luồng công việc trong Taverna, được lấy từ một ví dụ trong bộ mẫu các luồng công việc của Taverna phiên bản 2.3 [92]. Trong hình này ta có thể thấy các dữ liệu vào sẽ bắt đầu được đưa vào thông qua các Workflow Input (luồng dữ liệu vào, cụ thể là ID và namespace), sau đó chúng sẽ được xử lý bằng các processor (bộ xử lý). Giữa các processor với nhau và với các thành phần dữ liệu được nối với nhau bằng các liên kết dữ liệu. Cuối cùng, các dữ liệu xử lý xong sẽ được đưa ra các luồng dữ liệu ra. Cách biểu diễn hướng luồng dữ liệu này rất thích hợp và dễ dàng cho những người dùng không có nhiều kinh nghiệm và kiến thức về tin học, vì không yêu cầu người dùng phải biểu diễn tường minh các cơ chế điều khiển và hoạt động phức tạp của luồng (như trình tự thu thập dữ liệu, các cơ chế xử lý song song,v.v). Thông thường, thứ tự thực thi của các processor chủ yếu được xác định dựa vào sự sẵn sàng của các luồng dữ liệu vào. Bất kỳ processor nào mà có các luồng dữ liệu vào đã sẵn sàng thì đều được xếp lịch để thực thi. Các cơ chế xếp lịch này sẽ được ngầm cài đặt bởi workflow engine là thành phần chịu trách nhiệm dịch và thực thi các mô hình luồng mà người dùng đã thiết kế. Do đó, các hoạt động song song của các processor độc lập cũng là ngầm định do các engine này quản lý.
Hình B-2. Một workflow được biểu diễn trong Taverna
- Các WL hướng tiến trình: đại diện cho cách tiếp cận này là ngôn ngữ BPEL
(Business Process Execution Language). Trái với các WL hướng luồng dữ liệu, thứ tự hoạt động của các bộ xử lý (hay còn gọi là các hoạt động) cần được định nghĩa tường mình bằng các luồng điều khiển. Đặc biệt là các thực thi song song của các bộ xử lý độc lập cũng cần phải được đặc tả rõ ràng. Ngôn ngữ này sẽ được trình bày chi tiết hơn ở phần sau.
Các ngôn ngữ luồng công việc cho lưới
GSFL
GSFL (Grid Service Flow Language) [97] là một trong số những ngôn ngữ luồng được đề xuất đầu tiên cho môi trường lưới. Mục tiêu phát triển của GSFL là kế thừa các kết quả đã có trong các hệ thống luồng, có thể sáng tác các luồng mới từ các Web Service hiện có, để từ đó tạo ra một hệ thống luồng có thể hỗ trợ việc sáng tác các luồng mới từ các Grid Service. Việc phát triển GSFL cũng nhằm mục đích tương thích với chuẩn OGSA (Open Grid Service Architechture).
Trong [97] đã đưa ra một số phân tích các yêu cầu riêng biệt của luồng công việc trong môi trường lưới, so với môi trường Dịch vụ Web thông thường. Một số yêu cầu đó là:
- Đặc tả của luồng công việc cho lưới cần phải cho phép bản thân luồng công việc được xuất ra như là một dịch vụ (Dịch vụ web hoặc Dịch vụ lưới), và nó cũng có thể được mô tả bằng cách tương như các loại dịch vụ đó. Điều này sẽ cho phép dễ dàng tạo ra các luồng công việc cho lưới một cách đệ quy.
- Bản thân luồng công việc cho lưới cần hỗ trợ cơ chế cho phép các dịch vụ thành phần có thể trao đổi dữ liệu/thông báo trực tiếp với nhau mà không cần luồng công việc đóng vai trò trung chuyển các dữ liệu này. Điều này rất quan trọng, nhất là trong môi trường lưới, vì kích thước dữ liệu trao đổi thường khá lớn, nên nếu thiếu cơ chế trao đổi trực tiếp này giữa các dịch vụ, bản thân luồng công việc rất dễ trở thành điểm “cổ chai” cho các dịch vụ thành phần và đồng thời cũng giảm đáng kể khả năng thực thi song song của các dịch vụ này. Trong OGSA có sử dụng các cơ chế notificationSources và notificationSinks để giải quyết vấn đề này, nên các ngôn ngữ luồng công việc cho lưới cũng nên hỗ trợ các cơ chế này.
Tuy nhiên trong [97], một yêu cầu khá quan trọng của các ngôn ngữ luồng công việc cho lưới là khả năng hỗ trợ gọi các dịch vụ lưới lại không được đề cập đến, chủ yếu chỉ tận dụng khả năng gọi các dịch vụ web mà đã được các ngôn ngữ luồng trước đó hỗ trợ như XLANG và WSFL. Ngoài ra, dường như còn thiếu các cài đặt hoàn chỉnh để từ đó đánh giá được hiệu quả thực thi và tính thực tế của ngôn ngữ này.
A-GWL
A-GWL (viết tắt của Abstract Grid Workflow Language) [37] là một ngôn ngữ luồng ở mức cao nhằm để mô tả các luồng ở mức logic trừu tượng. Ngôn ngữ này dựa trên lược đồ hoạt động của ngôn ngữ UML, là một ngôn ngữ mô hình hóa hướng đối tượng hiện đang được sử dụng rất rộng rãi. Luồng có thể được tạo ra từ UML, và sau đó nó có thể được tự động chuyển sang A-GWL bằng một công cụ gọi là Teuta [82]. Ưu điểm của ngôn ngữ này là sự kế thừa khả năng biểu diễn phong phú của lược đồ hoạt động của UML, trong đó đã cung cấp khá đầy đủ các thành phần để biểu diễn các loại luồng công việc ở nhiều mức trừu tượng khác nhau, như các cấu trúc điều khiển luồng (tuần tự và cả song song), các luồng dữ liệu, các cơ chế đồng bộ hóa giữa các hoạt động và cả cơ chế gửi tin nhắc để cho phép các dịch vụ trực tiếp gửi thông tin cho nhau (nhất là gửi dữ liệu kích thước lớn), không cần phải qua một trung tâm điều phối (như workflow engine).
Tuy nhiên, A-GWL mới chỉ dừng ở mức mô tả được các luồng công việc ở mức trừu tượng và nó còn thiếu khả năng chuyển đổi sang các ngôn ngữ chi tiết hơn để có thể thực thi được luồng công việc đã được mô hình hóa.
GWEL
Grid Workflow Execution Language (GWEL) là một ngôn ngữ luồng công việc nhằm hỗ trợ trực tiếp cho việc kết hợp các dịch vụ lưới [26]. Tuy nhiên, nghiên cứu này mới dừng ở các ý tưởng khái quát, còn nhiều chi tiết như cú pháp của ngôn ngữ, phương pháp kết nối với các dịch vụ lưới như thế nào,v.v vẫn chưa được đề cập đến.
Trong [103], các tác giả đưa ra một khảo sát và phân loại chi tiết hơn về các hệ thống và ngôn ngữ luồng công việc cho môi trường lưới. Trong số các ngôn ngữ luồng công việc, có
hai ngôn ngữ được luận án lựa chọn để biểu diễn cho các kế hoạch trong khung cộng tác, đó là BPMN và BPEL. Phần tiếp theo sẽ tóm tắt một số nội dung chính của hai ngôn ngữ này.