Tên hàm/dữ liệu Ý nghĩa Khai báo
STATE Dữ liệu kiểu liệt kê, biểu diễn các trạng thái của hoạt động, cũng là trạng thái của kế hoạch như FEASIBLE,
INFEASIBLE, UNKNOWN.
enum STATE {FEASIBLE, INFEASIBLE, UNKNOWN};
getState(Activity A) Hàm trả về trạng thái hiện tại của một hoạt động, được biểu diễn bằng một nút trong đồ thị.
STATE getState(Activity A);
ActivityList Kiểu dữ liệu biểu diễn danh sách các hoạt động.
GetChildren(Activity A) Hàm trả về các hoạt động con của của một hoạt động A. Đó là các hoạt động mà xác định khả thi A. Tức là, nếu A1→ A2, thì A1 là nút con của A2 trong đồ thị. ActivityList GetChildren(Activity A);
Size(ActivityList L) Hàm trả về số lượng các hoạt động của danh sách L
int Size(ActivityList L); GetType(Activity A) Hàm trả về kiểu của hoạt động
A, nó có thể là một trong hai loại, nút AND hoặc nút OR.
enum NODETYPE {AND, OR};
NODETYPE
GetType(Activity A);
Định lý 2-1: Giải thuật 2-1 là dừng và xác định đúng trạng thái của một kế hoạch có nút gốc là A1.
Chứng minh: Có hai vấn đề cần chứng minh: thứ nhất là giải thuật trên là dừng và thứ hai là nó đúng.
1. Chứng minh tính dừng: giải thuật 2-1 thực ra là giải thuật duyệt đồ thị theo chiều sâu, bắt đầu từ nút gốc A1, vì mục đích của giải thuật là tìm các đường dẫn khả thi trong đồ thị. Nên số nút mà giải thuật phải thăm nhiều nhất là n (là số lượng hoạt động trong kế hoạch). Do số lượng hoạt động trong một kế hoạch là hữu hạn, nên chắc chắn giải thuật này sẽ dừng.
2. Chứng minh tính đúng đắn: Để chứng minh tính chất này, ta sẽ chỉ ra giải thuật đã dự trù tất cả các khả năng của kế hoạch để xác định đúng trạng thái của nó. Kế hoạch khả thi khi nó chứa ít nhất một đường dẫn khả thi. Ở dòng lệnh 2, giải thuật kiểm tra nếu nút gốc A1 đã khả thi thì hiển nhiên kế hoạch đã khả thi và giải thuật sẽ dừng. Còn trái lại,
64
quá trình tìm đường dẫn khả thi sẽ tiếp tục với các nút con của A1, được đặt ở danh sách L (dòng lệnh 4). Ở đây lại có ba khả năng đối với L:
a. Nếu L rỗng: tức là A1 không có phụ thuộc khả thi vào hoạt động nào nữa, mà nó cũng đang ở trạng thái UNKNOWN, nên trạng thái của kế hoạch cũng phải là UNKNOWN.
b. Nếu L có đúng một hoạt động: thì rõ ràng tính khả thi của A1 sẽ phụ thuộc vào hoạt động con này, nên có lời gọi đệ quy để kiểm tra và trả về trạng thái của hoạt động con này (dòng lệnh 10).
c. Nếu L có từ hai hoạt động trở lên: lúc này lại tùy thuộc vào A1 là loại nút nào trong đồ thị VÀ/HOẶC. Có một trong hai khả năng:
i. Nếu A1 là nút AND: khi đó cần kiểm tra tất cả các nút con của nó trong L. Nếu tất cả chúng đều khả thi thì A1 khả thi (các dòng lệnh 13-15). Còn trái lại thì A1 chưa xác định (dòng lệnh 16).
ii. Nếu A1 là nút OR: khi đó cần kiểm tra tất cả các nút con của nó trong L. Nếu tất cả chúng đều chưa xác định thì A1 cũng chưa xác định (các dòng lệnh 18-20). Còn trái lại thì A1 khả thi (dòng lệnh 21).
Như vậy, giải thuật trên là dừng và đúng đắn.
2.2 Khung cộng tác đa dụng
2.2.1 Các yêu cầu đối với khung cộng tác đa dụng
Phần này sẽ trình bày về khái niệm của một khung cộng tác đa dụng có hỗ trợ kế hoạch và các yêu cầu của khung đó.
Định nghĩa 2-12. Khung cộng tác có hỗ trợ kế hoạch: là một hệ thống phần mềm hỗ trợ việc quản lý các kế hoạch, ít nhất là các thao tác sau đây:
- Định nghĩa các hoạt động: hệ thống cần phải hỗ trợ một hoặc một số ngôn ngữ thích hợp cho phép định nghĩa các hoạt động. Các ngôn ngữ luồng công việc như BPMN và BPEL rất thích hợp cho thao tác này (Phần mô tả các hoạt động sử dụng ngôn ngữ luồng công việc sẽ được trình bầy trong phần sau 2.2.2).
- Quản lý kế hoạch: như đã trình bầy ở phần Mô hình kế hoạch, mỗi kế hoạch được biểu diễn dưới dạng một đồ thị VÀ/HOẶC. Có thể sử dụng một trong các cách cài đặt đồ thị trong Lý thuyết đồ thị để cài đặt cho cho kế hoạch. Trong cài đặt đó, cần cài đặt các thao tác cho phép cập nhật kế hoạch, như thêm/bớt hoạt động, thêm/bớt các phụ thuộc khả thi; các phép tìm kiếm hoạt động và phụ thuộc khả thi.
- Làm mịn (Refinement): Là quá trình chuyển đổi tự động hay bán tự động kế hoạch từ mức này sang mức khác (Quá trình này sẽ được trình bày chi tiết hơn ở Chương 3).
- Thực thi (Execution): Cho phép thực thi kế hoạch nhờ các engine thực thi hay hạ tầng tính toán nào đó. Việc thực thi sẽ ra kết quả nào đó, và kế hoạch là thành công nếu kết quả thực thi là khớp với kết quả mong muốn. Trái lại kế hoạch là chưa thành công và kế hoạch cần được thay đổi lại cho phù hợp.
65
Tổng quan về khung cộng tác được minh họa ở Hình 2-23. Như có thể thấy, khung cộng tác có khả năng hỗ trợ nhiều người dùng cùng tham gia vào quá trình quản lý các kế hoạch, từ việc xây dựng kế hoạch, chuyển đổi nó sang các mức chi tiết hơn mà có thể thực thi được, rồi thực thi và giám sát kế hoạch.
Hình 2-23: Tổng quan về khung cộng tác đa dụng
2.2.2 Mô tả các hoạt động
Phần này sẽ trình bày chi tiết hơn về vấn đề mô tả các hoạt động. Trong phần trước, khi dùng định nghĩa về hoạt động hay sơ đồ hoạt động, có thể thấy là mô tả đó còn khá trừu tượng, nhất là phần biểu diễn các quan hệ giữa các thành phần khá sơ sài. Các mô tả đó gắn với các ba thành phần chính là Chủ thể, Đối tượng đích và Công cụ. Trong phần này, luận án sẽ đưa ra hai cách biểu diễn mới giúp biểu diễn chi tiết và đầy đủ hơn về các hoạt động:
đặc tả hoạt động (activity specification) và mô hình hóa dựa trên luồng công việc
(workflow-based modeling).
Đặc tả hoạt động
Xuất phát từ định nghĩa 2-1 về hoạt động và sơ đồ hoạt động ở Hình 2-1, đặc tả hoạt động sẽ bổ sung thêm một số thành phần còn thiếu, chưa rõ ràng, chưa đầy đủ trong các mô tả. Bảng 2-2 biểu diễn cấu trúc của một đặc tả hoạt động mà bao gồm các trường thông tin với ý nghĩa như sau:
1. Tên của hoạt động (Activity Name): tên này cần rõ ràng và ngắn gọn.
2. Tóm tắt (Abstract): diễn giải ngắn gọn về các mục tiêu của hoạt động (đối tượng tường minh hoặc ngầm định của hoạt động). Chủ thể của hoạt động cũng có thể được giới thiệu ở đây.
66
3. Đối tượng (Object): liệt kê các đối tượng đích của hoạt động.
4. Chủ thể (Subject): liệt kê các chủ thể của hoạt động. Khi phần này được để trống - có nghĩa là chủ thể chưa được xác định hoặc chưa quan trọng tại thời điểm đặc tả này.
5. Công cụ (Tool): liệt kê các công cụ trung gian của hoạt động. Tương tự như mục
Subject, mục này cũng có thể được để trống.
6. Liên kết (Relationships): liệt kê các liên kết giữa các thành phần của hoạt động. Đối với hoạt động đơn, thì phần này mô tả khái quát mối quan hệ giữa ba thành phần Chủ thể, Đối tượng và Công cụ. Còn đối với hoạt động tập thể, liên kết này bao gồm các danh mục các hoạt động con và các mối quan hệ phụ thuộc giữa chúng.
7. Diễn giải (Explanation): diễn giải chi tiết quá trình thực thi hoạt động, mô tả chi tiết hơn các bước (có thể là các hoạt động con) cần tiến hành của hoạt động. Qua đó cũng mô tả chi tiết hơn việc chủ thể sử dụng công cụ để tạo ra đối tượng đích như thế nào.