2.2. Các khái niệm cơ bản
2.2.6. Các hành động cơ bản
Các hành động cơ bản thực hiện tiến trình logic. Các hoạt động được chia thành hai lớp: cơ bản và cấu trúc. Hoạt động cơ bản là những mô tả các bước thành phần của một tiến trình hành vi. Hoạt động cấu trúc mã hóa điều khiển luồng logic.
a. Invoke
Invoke sử dụng để gọi các dịch vụ Web được cung cấp bởi các nhà cung cấp dịch vụ.
Cụ thể là sử dụng để gọi một phương thức của một dịch vụ xác định. Hành động Invoke có thể kèm theo các hành động khác như xử lý lỗi.
Cú pháp của hành động Invoke:
<invoke partnerLink="NCName"
portType="QName"?
operation="NCName"
inputVariable="BPELVariableName"?
outputVariable="BPELVariableName"?
standard-attributes>
standard-elements
<correlations>?
<correlation set="NCName" initiate="yes|join|no"?
pattern="request|response|request-response"? />+
</correlations>
<catch faultName="QName"?
faultVariable="BPELVariableName"?
faultMessageType="QName"?
faultElement="QName"?>*
activity
</catch>
<catchAll>?
activity
</catchAll>
<compensationHandler>?
activity
</compensationHandler>
<toParts>?
<toPart part="NCName" fromVariable="BPELVariableName" />+
</toParts>
<fromParts>?
<fromPart part="NCName" toVariable="BPELVariableName" />+
</fromParts>
</invoke>
- Thuộc tính parnerLink khai báo tên của partnerlink gọi đến.
- Thuộc tính portType khai báo tên của porttype gọi đến.
- Thuộc tính operation khai báo tên của phương thức được gọi đến.
- Thuộc tính inputVariable khai báo giá trị đầu vào gọi đến dịch vụ.
- Thuộc tính outputVariable khai báo giá trị trả về từ dịch vụ.
- Thẻ <correlations> liệt kê các correlation được sử dụng trong hành động invoke.
- Thẻ <catch> định nghĩa việc xử lý trong các trường hợp không gọi được đến dịch vụ, hay có lỗi xảy ra.
- Thẻ <toParts> cho phép khai báo một hay nhiều giá trị đầu vào có giá trị tương ứng với giá trị thuộc tính inputVariable (chỉ khai báo ở inputVariable hoặc
<toPart> không khai báo ở cả hai nơi).
- Thẻ <fromParts> cho phép khai báo một hay nhiều giá trị trả về có giá trị tương ứng với giá trị thuộc tính outputVariable (chỉ khai báo ở outputVariable hoặc
<fromPart> không khai báo ở cả hai nơi).
b. Receive
Hành động Receive xác định partnerLink có chứa myRole sử dụng để nhận thông báo, portType
Cú pháp của hành động Receive:
<receive partnerLink="NCName"
portType="QName"?
operation="NCName"
variable="BPELVariableName"?
createInstance="yes|no"?
messageExchange="NCName"?
standard-attributes>
standard-elements
<correlations>?
<correlation set="NCName" initiate="yes|join|no"? />+
</correlations>
<fromParts>?
<fromPart part="NCName" toVariable="BPELVariableName" />+
</fromParts>
</receive>
- Thuộc tính parnerLink khai báo tên của partnerLink nhận thông báo.
- Thuộc tính portType khai báo tên của portType nhận thông báo.
- Thuộc tính operation khai báo tên của phương thức nhận thông báo.
- Thuộc tính variable khai báo giá trị đầu vào của dịch.
- Thuộc tính createInstance có giá trị mặc định là “no”. Nếu giá trị của thuộc tính createInstance là “yes” thì hành động Receive sẽ là một trong các hành động ban đầu của tiến trình nghiệp vụ WS-BPEL, trong trường hợp này, các hoạt động đầu tiên được gọi sẽ bắt đầu tiến trình nghiệp vụ WS-BPEL.
- Thuộc tính messageExchange là tùy chọn được sử dụng để phân biệt mối quan hệ giữa các hành động gửi thông báo đến và các hành động <reply>, việc sử dụng messageExchange cần thiết khi việc thực thi có kết quả trong nhiều cặp
<receive> <reply> trên cùng một partnerLink và các hoạt động được thực hiện đồng thời.
- Thẻ <correlations> liệt kê các correlation được sử dụng trong hành động
<Receive>.
- Thẻ <fromParts> cho phép khai báo một hay nhiều giá trị nhận từ hành động
<Receive> có giá trị tương ứng với giá trị thuộc tính variable (chỉ khai báo ở variable hoặc <fromPart> không khai báo ở cả hai nơi).
Một tiến trình không được chứa hai hành động Receive có cùng partnerLink, portType, operation và correlationSet.
c. Reply
Hành động Reply được sử dụng để gửi phản hồi đến một yêu cầu được chấp nhận trước đó thông qua hành động gửi tin nhắn đến giống như hành động Receive. Những phản hồi này chỉ có ý nghĩa cho các tương tác yêu cầu và phản hồi. Một cách khác
“phản hồi” có thể được gửi bằng cách gọi hoạt động tương ứng của partnerLink. Hành động Reply có thể chỉ ra thuộc tính của biến tham chiếu đến biến chứa dữ liệu thông báo để gửi đi.
Cú pháp của hành động Reply:
<reply partnerLink="NCName"
portType="QName"? operation="NCName"
variable="BPELVariableName"?
faultName="QName"?
messageExchange="NCName"?
standard-attributes>
standard-elements
<correlations>?
<correlation set="NCName" initiate="yes|join|no"? />+
</correlations>
<toParts>?
<toPart part="NCName" fromVariable="BPELVariableName" />+
</toParts>
</reply>
- Thuộc tính parnerLink khai báo tên của partnerLink chứa dịch vụ nhận kết quả trả về.
- Thuộc tính portType khai báo tên của portType nhận kết quả trả về.
- Thuộc tính operation khai báo tên của phương thức nhận kết quả trả về.
- Thuộc tính variable khai báo giá trị nhận giá trị kết quả trả về.
- Thuộc tính faultName là tùy chọn tên của biến lỗi khi có lỗi xảy ra.
- Thuộc tính messageExchange là tùy chọn được sử dụng để phân biệt mối quan hệ giữa các hành động gửi thông báo đến và các hành động <reply>, việc sử dụng messageExchange cần thiết khi việc thực thi có kết quả trong nhiều cặp
<receive> <reply> trên cùng một partnerLink và các hoạt động được thực hiện đồng thời.
- Thẻ <correlations> liệt kê các correlation được sử dụng trong hành động
<Receive>.
- Thẻ <toParts> cho phép khai báo một hay nhiều giá trị đầu vào có giá trị tương ứng với giá trị thuộc tính variable (chỉ khai báo ở variable hoặc <toPart> không khai báo ở cả hai nơi).
d. Assign
Hành động Assign được sử dụng để sao chép dữ liệu từ một biến đến một biến khác, cũng như để xây dựng và chèn dữ liệu mới bằng cách sử dụng các biểu thức. Việc sử dụng các biểu thức chủ yếu được thúc đẩy bởi sự cần thiết phải thực hiện các tính toán đơn giản (chẳng hạn như tăng số thự tự). Biểu thức hoạt động dựa trên các biến, thuộc tính, các hằng số để tạo ra một giá trị mới. Hành động Assign cũng có thể sử dụng để sao chép endpoint references từ partnerLinks. Nó cũng có thể bao gồm các thao tác dữ liệu vận hành mở rộng định nghĩa giống như các thành phần mở rộng dưới các không gian tên (namespace) khác từ không gian tên của WS-BPEL (WS-BPEL namespace) Hành động Assign chứa đựng một hoặc nhiều thành phần vận hành.
<assign validate="yes|no"? standard-attributes>
standard-elements (
<copy keepSrcElementName="yes|no"? ignoreMissingFromData="yes|no"?>
from-spec to-spec
</copy>
|
<extensionAssignOperation>
assign-element-of-other-namespace
</extensionAssignOperation>
)+
</assign>
- Thuộc tính validate có giá trị mặc định là “no”, khi giá trị của nó là “yes”, các hành động <assign> xác nhận tất cả các biến được sửa đổi bởi các hành động đó.
- Thuộc tính keepSrcElementName trong thẻ <copy> được sử dụng để xác định tên thành phần của đích đến sẽ được thay thế bởi tên thành phần nào của điểm nguồn.
- Thuộc tính ignoreMissingFromData trong thẻ <copy> có giá trị mặc định là
“no”, sử dụng để ném ra các lỗi chuẩn.
- Giá trị from-spec là biến giá trị từ điểm nguồn, và giá trị to-spec là giá trị của điểm đích.
- Thẻ <extensionAssignOperation> chứa các hoạt động thao tác dữ liệu mở rộng, như là thay đổi giá trị khi gán giá trị từ giá trị nguồn đến giá trị đích.