PHỤ LỤC B: NGÔN NGỮ VÀ HỆ THỐNG LUỒNG CÔNG VIỆC
B.3 BPEL và BPMN
BPEL
Giới thiệu
Các nỗ lực xây dựng dịch vụ Web nhằm đạt được sự tương thông giữa các ứng dụng có sử dụng các tiêu chuẩn WEB. Với mục tiêu đó, một mô hình tích hợp nối kết lỏng lẻo đã được dịch vụ WEB sử dụng để cho phép có sự tích hợp linh hoạt giữa các hệ thống không đồng nhất thuộc các lĩnh vực ứng dụng khác nhau. Với các đặc tả cho dịch vụ WEB như SOAP, WSDL, UDDI, các ứng dụng khác nhau có thể tìm kiếm nhau và tương tác lẫn nhau theo một mô hình nối kết lỏng lẻo và độc lập với hạ tầng mà chúng đang chạy.
Tuy nhiên, việc tích hợp hệ thống đòi hỏi thêm những khả năng khác chứ không chỉ là những tương tác đơn giản như trong mô hình dịch vụ Web. Mô hình này chủ yếu hỗ trợ các tương tác theo kiểu hỏi-đáp không có thông tin trạng thái, hoặc các tương tác một chiều không có sự liên hệ. Các ứng dụng và các tiến trình nghiệp vụ trong thực tế yêu cầu các tương tác phức tạp, và do đó chúng yêu cầu cần có sự hỗ trợ của các mô hình tích hợp các tiến trình nghiệp vụ chuẩn hóa và linh hoạt [68].
Mô hình cho các tương tác nghiệp vụ thường đòi hỏi dãy các trao đổi thông báo ngang hàng, theo kiểu hỏi-đáp hoặc một chiều có thông tin trạng thái và tương tác trong một thời gian lâu dài giữa hai hay nhiều đối tác tham gia. Do vậy, một mô tả hình thức cho các giao thức trao đổi thông báo như vậy là cần thiết để định nghĩa các tương tác nghiệp vụ được sử dụng trong các tiến trình nghiệp vụ. WS-BPEL (Web Services - Business Process Execution Language) được ra đời chính là nhằm mục đích này. Nó là một ngôn ngữ tiêu chuẩn cho phép định nghĩa các tiến trình nghiệp vụ mới thông qua việc kết hợp và tương tác của các tiến trình nghiệp vụ (hay các dịch vụ) hiện có.
Khởi đầu nó có cái tên là BPEL for Web services, BPEL4WS, rồi sau đó chuyển thành WS-BPEL. Gần đây, BPEL đang trở thành một trong các ngôn ngữ chuẩn hóa thông dụng để cấu thành các Web service.
BPEL có thể được dùng để định nghĩa hai loại tiến trình: trừu tượng và khả thi. Một tiến trình trừu tượng chủ yếu hướng tới khía cạnh nghiệp vụ không quan tâm làm cho nó có thể thực thi được, và nó sẽ được khai báo tường minh là “abstract”. Trong khi đó, tiến trình khả thi sẽ được đặc tả chi tiết và đầy đủ để nó có thể thực thi được.
WS-BPEL định nghĩa một mô hình và một cú pháp nhằm mô tả hành vi của một tiến trình nghiệp vụ dựa trên sự tương tác giữa nó và các đối tác. Những tương tác này xuất hiện thông qua các giao diện dịch vụ Web và cấu trúc của quan hệ này tại mức giao diện được đóng gói trong một đối tượng được gọi là liên kết đối tác. Tiến trình BPEL sẽ xác định
những tương tác với các đối tác này sẽ được phối hợp như thế nào để đạt được mục tiêu về nghiệp vụ, cũng như các trạng thái và lôgic cần thiết cho sự phối hợp này.
Ngoài ra, WS-BPEL cũng đưa vào những cơ chế để giải quyết các trường hợp ngoại lệ và xử lý lỗi, cũng như cơ chế bồi thường cho các hoạt động nghiệp vụ trong trường hợp xuất hiện ngoại lệ hay khi có yêu cầu từ đối tác.
Các mục tiêu thiết kế của BPEL
Ban đầu khi thiết kế BPEL (lúc đó còn được gọi là BPEL4WS (BPEL For Web Services)), các nhà thiết kế đã đề ra mười mục tiêu cho nó [33]:
- Mục tiêu 1: BPEL4WS định nghĩa các tiến trình nghiệp vụ mà tương tác với các
thực thể bên ngoài thông qua các thao tác của dịch vụ WEB được định nghĩa bởi chuẩn WSDL 1.1 và bản thân chúng cũng được biểu diễn như là các dịch vụ WEB được định nghĩa bởi WSDL 1.1. Những tương tác này là “trừu tượng” theo nghĩa là các phụ thuộc là ở định nghĩa ở portType, chứ không phải là ở định nghĩa ở port. - Mục tiêu 2: BPEL4WS định nghĩa các tiến trình nghiệp vụ sử dụng ngôn ngữ dạng
XML (XML based language). BPEL4WS không quan tâm đến những biểu diễn đồ thị của các tiến trình, cũng như không xác định phương pháp luận cụ thể nào cho các tiến trình.
- Mục tiêu 3: BPEL4WS nên định nghĩa một tập các khái niệm về sự phối hợp các
dịch vụ WEB như là một phương tiện sẽ được sử dụng bởi cả hai loại khung nhìn bên ngoài (trừu tượng) và bên trong (khả thi) của tiến trình nghiệp vụ.
- Mục tiêu 4: BPEL4WS nên cung cấp cả hai chế độ điều khiển là theo kiểu phân cấp
và theo kiểu đồ thị và cho phép sử dụng trộn lẫn cả hai cách này một cách liền mạch nhất. Điều này sẽ giúp giảm được sự phân mảnh của không gian mô hình hóa tiến trình.
- Mục tiêu 5: BPEL4WS cung cấp các một cách giới hạn các hàm thao tác dữ liệu sao cho chúng đủ để thực hiện các thao tác dữ liệu đơn giản cho việc định nghĩa các dữ liệu liên quan đến tiến trình và các luồng điều khiển.
- Mục tiêu 6: BPEL4WS nên hỗ trợ một cơ chế định danh cho các thể hiện của tiến
trình mà cho phép xác định định danh của thể hiện tiến trình tại mức thông báo ứng dụng. Định danh của thể hiện nên do đối tác định nghĩa và có thể thay đổi theo thời gian.
- Mục tiêu 7: BPEL4WS nên hỗ trợ việc sinh ra và kết thúc ngầm định các thể hiện
của tiến trình như một cơ chế quản lý vòng đời cơ bản. Các thao tác quản lý vòng đời nâng cao như tạm dừng, hồi phục có thể được bổ sung trong các phiên bản sau. - Mục tiêu 8: BPEL4WS nên định nghĩa một mô hình giao tác thực thi trong thời
gian dài mà dựa trên các kỹ thuật đã được kiểm chứng qua thực tiễn như hành động bù đắp và phân phạm vi nhằm hỗ trợ việc khắc phục sự cố cho các phần của các tiến trình nghiệp vụ thực thi trong thời gian dài.
- Mục tiêu 9: BPEL4WS nên sử dụng dịch vụ WEB như là mô hình để tách và ghép các tiến trình. Kết hợp cách tiếp cận này với chuẩn WS-Policy sẽ làm mô hình này mạnh mẽ hơn.
- Mục tiêu 10: BPEL4WS nên được xây dựng dựa trên các chuẩn dịch vụ WEB tương thích và các đề xuất tiêu chuẩn một cách tối đa theo cách modul và có thể kết hợp được. Chỉ trong trường hợp chưa có chuẩn hoặc đề xuất phù hợp, một đặc tả tương ứng mới cần được phát triển như một đặc tả của BPEL4WS hoặc một đề xuất tiêu chuẩn Dịch vụ WEB riêng biệt.
Các khái niệm cơ bản
Có hai cách tiếp cận trong việc cấu thành các dịch vụ Web: orchestration và choreography. Theo cách orchestration, chỉ một dịch vụ đóng vai trò là dịch vụ chính sẽ gọi các dịch vụ khác. Thế nên, chỉ dịch vụ chính này biết về trình tự các activity, trạng thái của các yêu cầu và trả lời của các dịch vụ được gọi. Ngược lại, trong cách choreography không có dịch vụ chính. Sự phản ứng giữa các dịch vụ do cơ chế điều phối hỗ trợ. BPEL hiện nay chỉ hỗ trợ cách orchestration.
Trong BPEL, dịch vụ chính này được gọi là tiến trình nghiệp vụ (Business Process, BP) và các dịch vụ khác được gọi là đối tác. Có hai loại đối tác trong BPEL: đối tác được gọi là đối tác được gọi bởi dịch vụ chính và đối tác client là đối tác sẽ gọi dịch vụ chính. Mối liên kết tiềm tàng giữa một đối tác và một BP được gọi là liên kết đối tác (Partner Link, PL). Giao diện giữa một tiến trình và một đối tác là thông qua một portType mà đề xuất các thao tác. BPEL hỗ trợ hai lớp thao tác: input-only và input-output.
Cấu tạo của một tiến trình BPEL
Các thành phần chính của một tiến trình nghiệp vụ được mô tả trong Hình B-3
Hình B-3.Các thành phần chính của một tiến trình nghiệp vụ
Trong Hình B-4 đưa ra một tiến trình nghiệp vụ cụ thể thực hiện việc giải một phương trình bậc 2.
Hình B-4. Tiến trình BPEL giải phương trình bậc 2. Các BPEL engine
BPEL engine là một phân hệ phần mềm có nhiệm vụ thực thi các tiến trình nghiệp vụ được biểu diễn bằng BPEL. Phân hệ này thường được tích hợp trong những hệ thống phần mềm có hỗ trợ BPEL.
Phần này sẽ giới thiệu tóm tắt về ba loại BPEL engine đang được sử dụng rộng rãi hiện nay là ActiveBPEL engine, BPEL engine trong JBI và ODE engine của Apache.
ActiveBPEL engine Phiên bản 5.0 mới nhất của engine này là cài đặt mã nguồn mở cho
BPEL engine, được viết bằng JAVA. Nó hỗ trợ cả hai chuẩn BPEL4WS 1.1 và WS-BPEL 2.0. Một trong những nhược điểm của engine này là quá trình khai thác các tiến trình BPEL không được tự động và rất phức tạp trong việc tạo tệp khai thác.
BPEL engine trong JBI Engine này chỉ được tích hợp trong môi trường phát triển ứng
dụng Netbeans. Một trong những hạn chế lớn nhất của engine này hiện nay là nó chỉ hỗ trợ chuẩn BPEL4WS 1.1 mà không có hỗ trợ cho chuẩn WS-BPEL 2.0.
ODE engine ODE Engine (Orchestration Director Engine) là một BPEL engine mã
nguồn mở của Apache. Phiên bản mới nhất hiện nay là 1.3 có nhiều đặc tính quan trọng như:
- Hỗ trợ cả hai chuẩn BPEL4WS 1.1 và WS-BPEL 2.0.
- Hỗ trợ 2 lớp truyền thông: Web service http transport của Axis2 và ServiceMix của JBI.
- Nó có thể được tích hợp dễ dàng với gần như tất cả các lớp truyền thông nhờ giao diện API với engine.
- Cho phép việc khai thác nhanh các tiến trình BPEL. Điều này có nghĩa là chỉ cần sao chép các tệp cần thiết vào thư mục khai thác (do engine quy định trước), sau đó engine đang chạy sẽ tự động phát hiện ra các tệp này, rồi dịch và làm chúng sẵn sàng cho việc sử dụng.
Bản ODE hiện nay không nhận ra tất cả các thông tin cần thiết được gửi đến từ các tiến trình BPEL và cũng không hỗ trợ việc gọi các dịch vụ lưới. Chương 4 sẽ khảo sát vấn đề này một cách chi tiết hơn và đưa ra giải pháp của luận án.
BPMN
Giới thiệu
BPMN (đầu tiên được gọi là “Business Process Modeling Notation” trong phiên bản 1 [69]. Sang phiên bản 2, nó được đổi thành “Business Process Model & Notation” [70]) là một hệ thống ký hiệu sử dụng đồ họa, dùng để mô hình hóa các tiến trình nghiệp vụ. Nó được phát triển bởi BPMI (Business Process Management Initiative) và OMG (Object Management Group) với mục đích chính là tạo ra một hệ thống ký hiệu thống nhất và dễ hiểu cho tất cả những người sử dụng các tiến trình nghiệp vụ, từ những người phân tích nghiệp vụ bắt đầu tạo ra bản phác thảo cho tiến trình nghiệp vụ, cho đến những người phát triển các công nghệ để cài đặt việc thực thi các tiến trình nghiệp vụ đó. BPMN cũng hướng đến mục tiêu có thể tạo ra các tiến trình tự động mà có thể được thực thi trên máy tính, qua việc hỗ trợ tối đa khả năng chuyển đổi thành các tiến trình nghiệp vụ được biểu diễn bằng BPEL [99]. Hiện nay, BPMN đã được chuẩn hóa và được hỗ trợ của hơn 70 công ty trên thế giới, trong đó có nhiều công ty lớn.
Trong hệ thống được xác định trong luận án, BPMN được lựa chọn làm công cụ để xây dựng các kế hoạch (plan), vì vai trò của các kế hoạch chính là các tiến trình nghiệp vụ ở dạng khởi đầu.
Các loại mô hình trong BPMN
Từ phiên bản 2, BPMN hỗ trợ ba loại mô hình:
- Tiến trình (hay Orchestration): loại mô hình này lại có thể bao gồm ba loại:
• Tiến trình nghiệp vụ riêng tư không thực thi được.
• Tiến trình nghiệp vụ riêng tư thực thi được.
• Tiến trình nghiệp vụ công. - Choreographies
- Tiến trình nghiệp vụ cộng tác
Hình B-5. Tiến trình nghiệp vụ riêng tư.
Hình B-6.Tiến trình nghiệp vụ công.
Hình B-8. Tiến trình nghiệp vụ cộng tác Các thành phần cơ bản của BPMN
Thành phần cơ bản nhất của BPMN là các “biểu đồ tiến trình nghiệp vụ” (Business Process Diagram - BPD). Nó là một loại lưu đồ được điều chỉnh để mô hình hóa các tiến trình nghiệp vụ. Một BPD được cấu thành từ nhiều phần tử đồ họa. Có khá nhiều phần tử đồ họa trong BPMN và được chia làm năm nhóm:
- Các đối tượng luồng - Dữ liệu
- Các đối tượng kết nối - Các làn (Swimlanes)
- Các ký hiệu gia công (Artifacts)
Các đối tượng luồng
Gồm có ba đối tượng cơ bản nhất của BPD là Event, Activity và Gateway (xem Hình B-9).
Hình B-9.Các loại đối tượng luồng cơ bản
- Sự kiện: được biểu diễn bởi hình tròn, biểu thị cho điều gì đó xảy ra trong quá trình
hoạt động của tiến trình nghiệp vụ, và gây ảnh hưởng đến luồng hoạt động này. Có ba loại sự kiện: Bắt đầu, Trung gian và Kết thúc.
- Hoạt động: là thuật ngữ chung để biểu thị cho công việc cần được thực hiện. Nó
được biểu diễn bởi hình chữ nhật có góc tròn. Có hai loại Hoạt động là Nhiệm vụ là loại hoạt động nguyên tố và Tiến trình con là loại hoạt động phức mà bên trong có chức các hoạt động khác.
- Rẽ nhánh: được dùng để biểu diễn việc hợp hay tách các luồng hoạt động. Nó được
biễu diễn bởi một hình thoi. Có khá nhiều loại gateway được cung cấp trong BPMN nhằm biểu diễn nhiều cách điều khiển các luồng khác nhau (xem Hình B- 10).
Hình B-10. Các loại gateway trong BPMN Dữ liệu
Có bốn phần tử dữ liệu trong BPMN (xem B-11 cho cách ký hiệu các phần tử):
- Đối tượng dữ liệu: biểu diễn thông tin được các hoạt động sử dụng để thực thi được hoặc kết quả chúng tạo ra
- Dữ liệu vào: biểu diễn dữ liệu đầu vào cho các tiến trình - Dữ liệu ra: biểu diễn dữ liệu đầu ra cho các tiến trình - Kho dữ liệu: biểu diễn dữ liệu cần được lưu trữ.
Hình B-11. Các loại phần tử dữ liệu
Các đối tượng kết nối
Khi các đối tượng luồng cần kết nối với nhau, chúng sẽ sử dụng các đối tượng kết nối. Có ba loại đối tượng kết nối là: Luồng tuần tự, luồng thông báo và liên kết (xem hình B-12).
Hình B-12.Các loại đối tượng kết nối cơ bản Các làn
Các làn là công cụ cho phép tổ chức hay chia các hoạt động trong tiến trình thành các nhóm. Có hai loại làn trong BPMN là Pool và Lane (xem Hình B-13):
- Pool: là công cụ cho phép chia các tiến trình theo nhóm các thành viên. Mỗi Pool sẽ đại diện cho một thành viên trong tiến trình.
- Lane: là công cụ phân chia bên trong Pool. Tức là mỗi Pool có thể bao gồm một hoặc nhiều Lane.
Hình B-13. Các loại Làn Các ký hiệu gia công (Artifacts)
Ngoài các kí hiệu cơ bản ở trên, BPMN còn cho phép người mô hình và các công cụ phát triển mở rộng thêm các thành phần ký hiệu mới và chúng được gọi là các ký hiệu gia công. Có hai loại ký hiệu gia công đã được định nghĩa trước trong BPMN là Nhóm và Chú thích (xem Hình B-14).
Hình B-14. Các ký hiệu gia công đã được định nghĩa sẵn. Một số công cụ hỗ trợ BPMN
- Bonita Open Solution: Bonita Open Solution phiên bản 5 một môi trường hỗ trợ BPMN2, mã nguồn mở, là sản phẩm của hãng BonitaSoft [23].
- jBPM: jBPM [46] là sản phẩm mã nguồn mở của Jboss. - Activity BPM