Các hành động cấu trúc

Một phần của tài liệu Ứng dụng BPEL trong việc kết hợp và thay thế dịch vụ web (Trang 25)

Hành động có cấu trúc quy định thứ tự trong tập hợp các hành động được thực thi. Chúng mô tả làm thế nào một tiến trình nghiệp vụ được tạo ra; bằng cách soạn các hành động cơ bản thực hiện thành cấu trúc thể hiện các mô hình điều khiển, xử lý lỗi và các sự kiện bên ngoài, phối hợp trao đổi thông báo giữa các tiến trình tham gia trong một giao thức kinh doanh.

a. Sequence

Hành động Sequence chứa đựng một hoặc nhiều hành động thực hiện tuần tự, theo thứ tự xuất hiện bên trong thành phần <Sequence>. Hành động Sequence hoàn thành khi hành động cuối cùng trong Sequence hoàn thành.

<sequence standard-attributes> standard-elements activity+

</sequence>

- Bên trong hành động sequence là tập hợp các hành động (activity). Các hành

động này có thể là hành động cơ bản hay hành động có cấu trúc.

b.If

Hành động If cung cấp điều kiện cho hành vi của tiến trình nghiệp vụ. Hành động này bao gồm một danh sách có thứ tự của một hoặc nhiều các điều kiện nhánh được định bởi thành phần if và tùy chọn elseIf, theo sau là một tùy chọn else. Các nhánh if và elseif được xem xét theo thứ tự mà chúng xuất hiện. Nhánh đầu tiên có điều kiện đúng được thực hiện, các hành động bên trong được thực hiện. Nếu không có nhánh với điều kiện đúng được thực hiện thì nhánh else sẽ được thực hiện.

<if standard-attributes> standard-elements <condition expressionLanguage="anyURI"?>bool-expr</condition> activity <elseif>* <condition expressionLanguage="anyURI"?>bool-expr</condition> activity </elseif> <else>? activity

27

</else> </if>

- Thuộc tính expressionLanguage trong thẻ condition xác định ngôn ngữ biểu

thức được sử dụng trong tiến trình. Giá trị mặc định cho thuộc tính này là "urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0", có nghĩa là sử dụng XPATH 1.0 bên trong WS-BPEL 2.0.

- Giá trị bool-expr là biểu thức logic điều kiện.

c. While

Hành động While cung cấp các thực hiện lặp đi lặp lại của các hành động bên trong nó. Các hành động bên trong được thực hiện miễn là điều kiện để đánh giá là đúng vào lúc bắt đầu của mỗi lần lặp.

<while standard-attributes> standard-elements <condition expressionLanguage="anyURI"?>bool-expr</condition> activity </while> d.Repeat Until

Hành động RepeatUntil cung cấp cho việc thực hiện lặp đi lặp lại của các hành động bên trong nó. Các hành động bên trong được thực hiện cho đến khi điều kiện trở thành đúng. Điều kiện được kiểm tra sau mỗi lần thực hiện trong vòng lặp. Ngược lại với hành động While, RepeatUltil thực hiện lặp các hành động trong nó ít nhất một lần.

<repeatUntil standard-attributes> standard-elements activity <condition expressionLanguage="anyURI"?>bool-expr</condition> </repeatUntil> e. Pick

Hành động Pick đợi sự xuất hiện chính xác của một sự kiện từ một tập hợp các sự kiện, sau đó thực hiện hành động liên quan với sự kiện đó. Sau khi sự kiện được lựa chọn, các sự kiện khác không được chấp nhận bởi hành động Pick.

<pick createInstance="yes|no"? standard-attributes> standard-elements <onMessage partnerLink="NCName" portType="QName"? operation="NCName" variable="BPELVariableName"? messageExchange="NCName"?>+ <correlations>?

28

</correlations> <fromParts>?

<fromPart part="NCName" toVariable="BPELVariableName" />+ </fromParts> activity </onMessage> <onAlarm>* ( <for expressionLanguage="anyURI"?>duration-expr</for> | <until expressionLanguage="anyURI"?>deadline-expr</until> ) activity </onAlarm> </pick>

- Sự kiện <onMessage> có thể có một hay nhiều, khi sự kiện được gọi đến sẽ

khởi tạo một tiến trình nghiệp vụ.

- Thuộc tính parnerLink khai báo tên của partnerLink của tiến trình được khởi

tạo.

- Thuộc tính portType khai báo tên của portType của tiến trình được khởi tạo.

- Thuộc tính operation khai báo tên của phương thức của tiến trình được khởi tạo.

- Thuộc tính variable khai báo giá trị đầu vào của tiến trình được khởi tạo.

- 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ị đầu vào của tiến trình

nghiệp vụ 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).

- Trong sự kiện <onMessage> chứa các hành động của tiến trình nghiệp vụ:

<receive>, <reply>, <invoke>…

- Sự kiện <onAlarm> dựa trên bộ đếm thời gian để thực thi tiến trình nghiệp vụ,

thời gian bắt đầu thỏa mãn điều kiện trong thẻ <for> và thực hiện cho đến khi thỏa mãn điều kiện trong thẻ <ultil>.

29

f. Flow

Hành động Flow cung cấp đồng thời và đồng bộ. Có nghĩa là các hành động sẽ được thực hiện đồng thời và hoàn thành khi tất cả các hành động trong thẻ <flow> hoàn thành. <flow standard-attributes> standard-elements <links>? <link name="NCName">+ </links> activity+ </flow>

- Thẻ <links> sử dụng để xác định phụ thuộc kiểm soát rõ ràng giữa các hoạt

động con lồng nhau.

- Trong <flow> chứa tập hợp các hành động được định nghĩa bởi tiến trình WS-

BPEL bao gồm các hành động cơ bản và các hành động có cấu trúc.

g. Foreach

Hành động Foreach sẽ thực thi các hành động được định nghĩa bên trong nó chính xác N+1 lần, N bằng <finalCounterValue> trừ đi <startCounterValue>.

<forEach counterName="BPELVariableName" parallel="yes|no" standard-attributes> standard-elements <startCounterValue expressionLanguage="anyURI"?> unsigned-integer-expression </startCounterValue> <finalCounterValue expressionLanguage="anyURI"?> unsigned-integer-expression </finalCounterValue> <completionCondition>? <branches expressionLanguage="anyURI"? successfulBranchesOnly="yes|no"?>? unsigned-integer-expression </branches> </completionCondition> <scope ...>...</scope> </forEach>

- Thuộc tính parallel là “no” thì <foreach> thực hiện tuần tự các hành động được

định nghĩa bên trong, nếu parallel là “yes” thì <foreach> thực hiện các hành động đó song song với nhau.

- Thẻ <startCounterValue> chứa giá trị bắt đầu của hành động <foreach>.

30

- Thẻ <completionCondition> là một tùy chọn được chỉ định để ngăn chặn một

số các con được thực hiện hoặc chấm dứt sớm các trường hợp con đó.

31

Chương 3 : Hệ thống Đại lý phân phối

Trong chương này tác giả trình bày về ứng dụng: hệ thống Đại lý phân phối. Hệ thống áp dụng ngôn ngữ WS-BPEL trong việc định nghĩa các tiến trình nghiệp vụ và kết hợp, thay thế các dịch vụ Web bên trong tiến trình nghiệp vụ đó.

3.1. Giới thiệu

Việc cung cấp các dịch vụ khách hàng là cần thiết trong xã hội hiện nay. Phần đông dân số sử dụng điện thoại di động đê trao đổi, liên lạc. Ngoài ra nhu cầu về các dịch vụ, tiện ích trên điện thoại di động ngày càng cao như: tải trò chơi về di động, nhận kết quả sổ xố hàng ngày, kiểm tra tài khoản ngân hàng… Đã có rất nhiều dịch vụ và tiện ích khác nhau được cung cấp bởi các nhà cung cấp dịch vụ khác nhau cung cấp cho khách hàng thông qua điện thoại di động của họ. Tuy nhiên để cung cấp được cho khách hàng các dịch vụ tiện ích đáp ứng được phần lớn nhu cầu của họ là rất khó. Điều này đòi hỏi rất nhiều yếu tố trong đó có việc kết hợp các dịch vụ của các nhà cung cấp khác nhau. Ví dụ như: ngân hàng có thể cung cấp dịch vụ kiểm tra tài khoản ngân hàng, chuyển khoản trên di động. Nhà mạng có thể cung cấp dịch vụ tra cước viễn thông, thanh toán cước viễn thông qua chuyển khoản. Nhưng nếu khách hàng muốn thanh toán cước, họ có thể có nhiều cách thực hiện, thứ nhất: truy vấn cước viễn thông của họ, tìm tài khoản ngân hàng của nhà mạng và chuyển khoản số tiền cần thanh toán, phương án này tương đối lằng nhằng, khách hàng chỉ muốn một thao tác duy nhất để có thể thanh toán cước trên điện thoai của họ là một vấn đề. Điều này đòi hỏi phải có sự kết hợp giữa ngân hàng và nhà mạng. Có thể là khách hàng sẽ nhắn một tin theo cú pháp nào đó để thực hiện việc thanh toán cước viễn thông của họ. Nhà mạng sẽ có nhiệm vụ lấy ra số tiền mà khách hàng phải thanh toán và cung cấp kết quả cho ngân hàng, ngân hàng có nhiệm vụ kiểm tra tài khoản khách hàn xem có đủ số tiền cần thiết hay không nếu hợp lệ chuyển khoản số tiền đó sang tài khoản của nhà mạng. Như vậy luôn phải có sự liên kết giữa các nhà cung cấp dịch vụ với nhau thì mới có thể đáp ứng được các dịch vụ tiện ích nhất cho khách hàng. Sự liên kết giữa các nhà cung cấp dịch vụ không thể lúc nào cũng có thể nhanh chóng hay ngay lập tức, nếu có sự thay đổi của một bên thì phải có sự trao đổi giữa hai bên để đi đến thống nhất.

Ta có thể có giải pháp tốt hơn cho việc đó. Ví dụ trong cuộc sống ta có thể có nhu cầu về các mặt hàng gia dụng lương thực, thực phẩm, ta có thể đến siêu thị để mua các mặt hàng này. Siêu thị như một đại lý hay một nhà phân phối sản phẩm, họ nhận hay mua các mặt hàng này từ các nhà cung cấp khác nhau để cung cấp cho khách hàng. Trên điện thoại di động cũng vậy, ta cũng có thể có một đại lý phân phối các dịch vụ khách hàng như vậy. Việc làm đó giải quyết được hai vấn đề:

32

- Thứ nhất nó có thể đáp ứng được rất nhiều các dịch vụ được cung cấp bởi các nhà cung cấp dịch vụ khác nhau.

- Thứ hai nó sẽ là cầu nối liên kết các dịch vụ mà không cần thông qua sự liên kết giữa các nhà cung cấp dịch vụ.

Ví dụ ngân hàng có thể cung cấp dịch vụ chuyển khoản trên tài khoản khách hàng sử dụng điện thoại di động, nhà mạng cung cấp dịch vụ tra cứu cước cần thanh toán, thanh toán cước qua hình thức chuyển khoản trên di động. Lúc này đại lý phân phối phải trước hết phải cung cấp các dịch vụ đơn lẻ như vậy, ngoài ra nó còn cung cấp các dịch vụ tổng hợp, như là: khách hàng có thể thanh toán cước bằng cách soạn một tin nhắn theo cú pháp quy định, đại lý phân phối có nhiệm vụ gọi đến dịch vụ truy vấn cước của nhà mạng để xác định cước cần thanh toán của khách hàng. Với số tiền xác định được đại lý phân phối tiếp tục gọi đến dịch vụ chuyển khoản của ngân hàng để thực hiện chuyển khoản số tiền thanh toán cho nhà mạng. Kết quả của việc chuyển khoản sẽ được gửi vào điện thoại của khách hàng từ dịch vụ của ngân hàng. Kết quả của việc thanh toán cước viễn thông cũng được gửi vào điện thoại của khách hàng từ dịch vụ của nhà mạng. Việc khách hàng sử dụng dịch vụ thanh toán cước không cần đến sự liên kết của các nhà cung cấp dịch vụ, các bên có sự thay đổi cũng không cần thông qua bên còn lại trước khi đưa vào áp dụng.

Trong thực tế có nhiều, rất nhiều các dịch vụ như vậy nên việc xây dựng một đại lý phân phối các dịch vụ trên điện thoại di động (Agent) là cần thiết và có thể đáp ứng được nhu cầu của người dân trong xã hội hiện nay.

Một phần của tài liệu Ứng dụng BPEL trong việc kết hợp và thay thế dịch vụ web (Trang 25)

Tải bản đầy đủ (PDF)

(54 trang)