Giới thiệu về BPEL (Bussiness Process execution language)

Tổng quan về BPEL

BPEL (Bussiness Process Execution Language) là là một ngôn ngữ dùng để hổ trợ phát triển các ứng dụng phức tạp, lớn đòi hỏi phải tổng hợp nhiều dịch vụ web khác nhau.

BPEL cho phép bạn mô tả và xử lý luồng công việc bằng cách sử dụng trình soạn thảo đồ họa than thiện với con người. Ngoài ra BPEL còn định nghĩa các cách quản lý các sự kiện và ngoại lệ, cơ chế bảo toàn dữ liệu khi có ngoại lệ xảy ra.BPEL hoạt động dựa trên nguyên tắc gửi các thông điệp dạng XML đến một dịch vụ khác, thao tác trên cấu trúc XML, nhận các thông điệp XML (đồng bộ hay không đồng bộ) từ các service bên ngoài.Nó phụ thuộc vào bốn chuẩn XML cơ bản được xem như là các đặt tả để thực thi một tiến trình BPEL: WSDL, XML Schema 2.0,XPath 2.0 và WS-Addressing.

bpel.png

** Hình ảnh thể hiện một tiến trình BPEL trong thực tế. **

2. Các thành phần của BPEL

  • PartnerLinkType: Các service trong tương tác của tiến trình nghiệp vụ được mô tả là các PartnerLinkType trong BPEL. Mỗi một PartnerLink được mô tả bằng một PartnerLinkType, được đặt tên để đại diện cho tất cả các tương tác thông qua PartnerLink đó. Nếu PartnerLinkType tương ứng chỉ có một role thì role này sẽ mặc định được gán cho thuộc tính myRole của PartnerLink, nhưng nếu có nhiều role thì phải chỉ ra để cho biết PartnerLink này hoạt động với PortType nào.
<partnerLinkType name="BuyerSellerLink"
xmlns="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
  <role name="Buyer">
    <portType name="buy:BuyerPortType"/>
  </role>
  <role name="Seller">
    <portType name="sell:SellerPortType"/>
  </role>
</partnerLinkType>
  • PartnerLink: PartnerLinkType được mô tả trong tập tin WSDL như là một khái niệm mở rộng cho chuẩn WSDL. Còn các partnerLink nào được dùng trong tiến trình BPEL thì được chỉ ra trong tập tin BPEL.
<partnerLinks>
  <partnerLink name="ncname" partnerLinkType="qname" myRole="ncname"? partnerRole="ncname"?>
  </partnerLink>
</partnerLinks>

3. Cấu trúc của một tiến trình BPEL

Cấu trúc của một tiến trình BPEL được mô tả trong tập tin BPEL như sau:

<bpel:process name="helllo" >
    <!-- Import the client WSDL -->
	<bpel:import location="aloArtifacts.wsdl" namespace="http://eclipse.org/bpel/sample"
	        importType="http://schemas.xmlsoap.org/wsdl/" />

    <bpel:partnerLinks>
	.
	.
	.
    </bpel:partnerLinks>

    <bpel:variables>
        ………………
    </bpel:variables>
     <bpel:sequence name="main">
    </bpel:sequence>
</bpel:process>

Các thành phần chính:

  • Process: Mọi file BPEL đều bắt đầu với thẻ <process> .Các mô tả cho tiến trình cũng như các namespace liên quan được định nghĩa ở thẻ này.
  • Imports: Chứa thông tin các tập tin WSDL được import vào.
  • PartnerLinks: Chứa tập hợp các partnerLink được sử dụng trong tiến trình. Mỗi partnerLink sẽ thiết lập một quan hệ giữa bản thân BPEL service với một service bên ngoài.
  • Variables: Phần này định nghĩa các biến được dùng trong tiến trình. Mỗi biến đều phải được tham chiếu đến một kiểu thông điệp (messageType) được mô tả trong tập tin WSDL.
  • Sequence: Đây là phần chính mô tả logic của tiến trình. Trong một sequence sẽ chứa nhiều activity (được trình bày chi tiết bên dưới). Mỗi activity có một nhiệm vụ cụ thể trong tiến trình BPEL. Bản thân sequence cũng là một activity, có thể chứa các cấu trúc song song cũng như tuần tự khác.

4. Các thành phần và ký hiệu trong BPEL

Một tiến trình BPEL được thể hiện qua các Activity, các Activity trong BPEL được thực hiện tuần tự theo cấu trúc được khai báo trong tiến trình. Trong BPEL 2.0 thì các Activity được chia làm ba nhóm cơ bản như sau:

  • Basic Activity: Là các Activity đơn thể, nó không thể chứa được bất kỳ các Activity nào khác bên trong nó nữa.
  • Structure Activity: Là các Activity có cấu trúc, nó có thể chứa được các Activity khác bên trong nó.
  • Fault Handle Activity: Là các Activity này được sử dụng để thụ lý lỗi và các ngoại lệ xảy ra trong quá trình hoạt động của một tiến trình.

Các kí hiệu trong BPEL:

Tên activity Kí hiệu Các trường hợp sử dụng
Basic Activity
Empty empty.png Là một activity đặc biệt, không làm gì hết khi được gọi. Activity này được dùng khi. Cần có một activity nhưng không thật sự cần một hành động nào xảy ra.
Invoke invoke.png Gọi một web servirse để thực hiện một tác vụ nào đó
Receive receive.png Nhận một thông điệp từ một service partner. Thông thường đây là activity bắt đầu một tiến trình mới
Opaque opaque.png Là một Activity dạng dẫn xuất
Assign assign.png Dùng để khởi tạo hoạc gán giá trị cho các biến trong tiến trình BPEL
Validate validate.png Kiểm tra tính hợp lệ của các biến và các biểu thức dựa trên định nghĩa của nó (chẳng hạn định nghĩa dựa trên XML Schema, hay WSDL…)
Structure Activity
If else if_else.png Định nghĩa cấu trúc điều kiện
Pick pick.png Đinh nghĩa cách lựa chọn phương án hành động (hành động nào sẽ được thực hiện khi sự kiện tương ứng mà nó quy định xảy ra, nếu không có sự kiện nào xảy ra trong một thời gian chỉ định trước thì hành động nào sẽ được thực hiện…)
While while.png Lặp lại một tiến trình con nào đó trong process ở dạng while
RepeatUntil repeat_until.png Lặp lại một tiến trình con nào đó trong process ở dạng do..while
Foreach foreach.png Định nghĩa vòng lặp để duyệt qua một tập hợp
Wait wait.png Dừng tiến trình trong một khoản thời gian được thiết lập trước
Sequence sequence.png Dùng để thiết lập tuần tự hoạt động của các Activity
Scope scope.png Dùng để chia nhỏ tiến trình thành các activity có các nhiệm vụ liên quan với nhau (khi tiến trình trở nên phức tạp).
Fault Handle Activity
Exit exit.png Dừng tiến trình hiện tại
Throw throw.png Ném ra một ngoại lệ
Rethrow rethrow.png Ném ra thông báo lỗi sau khi lỗi này đã được thụ lý trước đó
Compensate Scope compensate_Scope.png Là activity dùng để thụ lý lỗi. Khi có lỗi xảy ra thì activity này sẽ được dùng để xử lý lỗi trên phạm vi được chỉ ra
Compensate compensate.png Có chức năng cũng giống như activity Compensate Scope nhưng được dùng để thụ lý lỗi trên tất cả các phạm vi liên quan

Trên đây là những thông tin cơ bản về BPEL. Trong bài tiếp theo, tôi sẽ gửi đến các bạn hướng dẫn cài đặt và chạy 1 chương trình demo sử dụng BPEL. Cảm ơn các bạn đã theo dõi! 😄

Tài liệu tham khảo

Business Process Execution Language - wikipedia

WS-BPEL 2.0 for SOA Composite Applications with Oracle SOA Suite 11g