Phần mở đầu Chương này giới thiệu lý bối cảnh và lý do chọn đề tài. Chương 2: Các kiến thức cơ bản Chương này trình bày các kiến cơ bản ngôn ngữ thực thi tiến trình nghiệp vụ BPELnhư cấu trúc của một tiến trình BPEL, các hoạt động cơ bản trong tiến trình BPEL. TIEU LUAN MOI download : skknchat@gmail.com 2 Chương 3: Phương pháp chuyển từ đặc tả BPEL sang ký pháp FSP Chương này tìm hiểu các phương pháp chuyển đổi các hành động trong tiến trình BPEL sang ký pháp hữu hạn trạng thái FSP. Chương 4: Kiểm chứng dịch vụ Web Chương này xây dựng các ví dụ minh họa cho việc kiểm chứng tính đúng đắn của tiến trình BPEL với kịch bản, với công cụ giúp cho việc kiểm chứng tự động là LTSA.
Các ví dụ đưa ra được đặc tả bằng ngôn ngữ thực thi tiến trình nghiệp vụ BPEL. Sử dụng công cụ LTSA để chuyển đổi tự động sang ký pháp FSP và tiến hành kiểm chứng. Kết luận Chương này đưa ra kết luận về kết quả đạt được, cũng như hạn chế của luận văn. TIEU LUAN MOI download : skknchat@gmail.com 3 Chương 2.
CÁC KIẾN THỨC CƠ BẢN 2. Tổng quan về ngôn ngữ thực thi tiến trình nghiệp vụ BPEL (Business Process Execution Language) Ngôn ngữ thực thi tiến trình nghiệp vụ BPEL được sử dụng để định nghĩa tiến trình nghiệp vụ của một dịch vụ Web. Nó được dùng để hỗ trợ phát triển ứng dụng phức tạp lớn, đòi hỏi tổng hợp nhiều dịch vụ Web khác nhau. Vào 7/2002 phiên bản BPEL 1.0 đầu tiên ra đời.
Phiên bản BPEL 1.1 ra đời vào năm 4/2003 dựa trên việc kết hợp BPEL 1.0 với một số ngôn ngữ khác và được đệ trình lên tổ chức OASIS (một tổ chức chuyên đưa ra các chuẩn thông tin). Năm 2007 tổ chức OASIS chuẩn hóa BPEL và được đổi tên thành WS-BPEL 2.0 và được dùng cho đến nay. BPEL hoạt động dựa trên chuẩn XML và là sự kết hợp của hai ngôn ngữ Xlang và WSFL (Web Service Flow Language) của IBM và Microsoft. WSFL được thiết kế bởi IBM dựa trên khái niệm về hướng đồ thị.
Xlang được thiết kế bởi Microsoft là một khối cơ cấu ngôn ngữ, BPEL ra đời kết hợp cả hai phương pháp tiếp cận trên. Một tiến trình BPEL chứa đựng các mối quan hệ với các đối tác bên ngoài, khai báo các xử lý dữ liệu, xử lý các mục đích khác nhau và quan trọng nhất, các hành động được thực hiện. Một tiến trình BPEL là một mô tả dưới dạng tài tiệu XML. Các thành phần trong tiến trình BPEL được định nghĩa gồm các phần từ gốc, chứa một hoặc nhiều phần tử con như: partners, variables, Correlation-Set, Fault-Handlers, Compensation-Handlers, Activity.1 minh họa cho cấu trúc BPEL cơ bản và các hoạt động [3].
Các phần tử chính trong tiến trình BPEL bao gồm: <Partners>: Phần tử partners định nghĩa các mối quan hệ giữa các dịch vụ tham gia vào tiến trình. <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. <Correclation-sets>: Phần tử correclation-sets sử dụng để định nghĩa các thuộc tính giúp xác định xem tiến trình sử dụng dịch vụ nào.
TIEU LUAN MOI download : skknchat@gmail. Cấu trúc tiến trình BPEL cơ bản <Fault-handlers>: Fault-handlers dùng để xử lý các ngoại lệ phát sinh trong quá trình thực thi tiến trình. <Compensation-handlers>: Khi công việc thực hiện xong, muốn báo cho tiến trình BPEL biết hành động đã thực hiện thì phần tử Compensation-handlers được sử dụng. <Activity>: Chứa các hành động trong tiến trình.
Ví dụ một tiến trình BPEL như sau: <bpel:process name="helloworld" targetNamespace="http://helloworld" suppressJoinFailure="yes" xmlns:tns="http://helloworld" xmlns:bpel="http://docs.0/process/executable" > <!-- PARTNERLINKS --> <!-- List of services participating in this BPEL process --> <!-- ============================================================= --> <bpel:partnerLinks> <!-- The 'client' role represents the requester of this service.--> <bpel:partnerLink name="client" partnerLinkType="tns:helloworld" myRole="helloworldProvider" /> </bpel:partnerLinks> <!-- =============================================================--> <!-- VARIABLES --> TIEU LUAN MOI download : skknchat@gmail.com 5 <!-- List of messages and XML documents used within this BPEL process--> <!-- ============================================================== --> <bpel:variables> <!-- Reference to the message passed as input during initiation --> <bpel:variable name="input" messageType="tns:helloworldRequestMessage"/> <!-- Reference to the message that will be returned to the requester--> <bpel:variable name="output" messageType="tns:helloworldResponseMessage"/> </bpel:variables> <bpel:sequence name= “main”> </bpel:sequence> </bpel:process> 2. Các hoạt động cơ bản trong tiến trình BPEL Các hành vi trong tiến trình BPEL được xác định bởi các hành động có trong tiến trình và thứ tự thực hiện của chúng. Các hoạt động được chia thành 3 nhóm như sau: - Hoạt động cơ bản: Là các hoạt động đơn thể, nó không chứa hoạt động nào bên trong nó. - Hoạt động có cấu trúc: Nó chứa các hoạt động bên trong nó.
- Hoạt động xử lý lỗi: Hoạt động này sử dụng để xử lý lỗi và các ngoại lệ xảy ra trong quá trình hoạt động của tiến trình. Mô tả các hành động trong ngôn ngữ BPEL và ý nghĩa TT Tên hành động Ý nghĩa Hành động cơ bản Là một hoạt động đặc biệt, không thực hiện một hành 1 Empty động nào khi được gọi trong tiến trình BPEL 2 Invoke Được sử dụng khi cần gọi một dịch vụ Web khác 3 Receive Nhận một thông điệp từ bên ngoài của tiến trình 4 Reply Gửi trả lại thông điệp được nhận bởi receive trước đó 5 Assign Dùng để khởi tạo hoặc gán giá trị cho biến Hoạt động có cấu trúc Thiết lập thứ tự thực hiện của các hành động xuất hiện 6 Sequence trong sequence TIEU LUAN MOI download : skknchat@gmail.com 6 7 If/Else Định nghĩa cấu trúc có điều kiện Lặp đi lặp lại một hành động cho đến khi không còn thỏa 8 While mãn điều kiện 9 Pick Định nghĩa cách lựa chọn hành động. 10 Wait Dừng tiến trình BPEL trong một khoảng thời gian 11 Scope Chia nhỏ các tiến trình Hoạt động quản lý lỗi và xử lý ngoại lệ 12 Exit Được sử dụng để dừng tiến trình BPEL ngay lập tức Được sử dụng để ném ra một ngoại lệ trong quá trình 13 Throw thực thi tiến trình Hành động này dùng để xử lý lỗi, khi có lỗi xảy ra nó sẽ 14 Compensate được dùng để xử lý lỗi trên phạm vi được chỉ ra Fault Handlers xử lý các ngoại lệ phát sinh trong quá 15 Fault Handler trình thực thi tiến trình 2. Hoạt động cơ bản a)Hành động Empty Là một hoạt động đặc biệt, không làm nhiệm vụ gì khi được gọi trong tiến trình BPEL.
Empty được sử dụng trong trường hợp khi có một lỗi cần được bắt và cấm hoạt động. Cấu trúc XML của hoạt động này có dạng như sau: <empty standard-attributes> standard-elements </empty> Trong đó standard-attributes và standard-elements là các thuộc tính và các thành phần chuẩn trong đặc tả của BPEL b)Hành động Invoke Hoạt động này được sử dụng để gọi đến một dịch vụ Web khác. Điển hình sử dụng để gọi 1 hoạt động cơ bản trên dịch vụ. Tác vụ invoke mô tả dịch vụ Web thực hiện ở dạng “một chiều” hoặc “yêu cầu – đáp ứng”.
Để thực thi một hoạt động Invoke thì cần xác định ít nhất một biến đầu vào và có hoặc không có biến đầu ra tùy thuộc vào từng dạng dịch Web mà nó gọi thực hiện (dạng “một chiều” hoặc “yêu cầu - đáp ứng”). TIEU LUAN MOI download : skknchat@gmail.com 7 Cấu trúc XML của invoke được mô tả như sau: <invoke partnerLink="ncname" portType="qname" operation="ncname" inputVariable="ncname"? outputVariable="ncname"? standard-attributes> standard-elements <catch faultName="qname" faultVariable="ncname"?>* activity </catch> <catchAll>? activity </catchAll> </invoke> Trong ví dụ trên một hoạt động invoke được khai báo để gọi dịch vụ ngoài có partnerLink là “NCName”, thuộc tính portType và operation xác định chức năng được sử dụng trong dịch vụ được gọi. Hoạt động này sử dụng biến đầu vào inputVariable để lưu trữ thông tin và outputVariable để nhận kết quả. Ví dụ: <bpel:invoke name="InvokeRectangle" partnerLink="rectanglePL" operation="add" portType="ns:CalculatorPortType" inputVariable="rectanglePLRequest" outputVariable="rectanglePLResponse"> </bpel:invoke> c)Hành động Receive Hành động này được sử dụng khi tiến trình BPEL cần nhận một thông điệp từ bên ngoài.
Hành động receive có cấu trúc XML như sau: <bpel:receive name="receiveInput" partnerLink="client" portType="tns:helloworld" operation="process" variable="input" createInstance="yes"/> TIEU LUAN MOI download : skknchat@gmail.com 8 Trong đó: thuộc tính partnerLink chứa tên của partnerLink chỉ định dịch vụ nhận thông điệp; thuộc tính portType chứa tên của portType (tập các chức năng có thể thực hiện bởi một dịch vụ); thuộc tính operation chứa tên của chức năng được gọi (lưu ý là portType và operation được định nghĩa trong tệp WSDL); thuộc tính variable chứa tên của biến dùng để lưu trữ thông điệp nhận được; thuộc tính createInstance nhận giá trị “yes” nếu hành động receive là hành động đầu tiên trong tiến trình, giá trị này giúp xác định việc tạo thể hiện mới của tiến trình hay không. Ví dụ: <bpel:receive name="receiveInput" partnerLink="client" portType="tns:While" operation="process" variable="input" createInstance="yes"/> d)Hành động Reply Hành động được sử dụng để gửi một thông điệp trả lời cho thông điệp đã nhận được bởi hành động receive trước đó. Cấu trúc XML của Reply như sau: <reply partnerLink="ncname" portType="qname" operation="ncname" variable="ncname"? faultName="qname"? standard-attributes> standard-elements <correlations>? <correlation set="ncname" initiate="yes|no"?>+ </correlations> </reply> Tác vụ reply có cùng partnerLink operation với tác vụ receive tương ứng với nó. Tác vụ này dùng biến Variable để lưu kết quả trả về từ những tác vụ trước đó của tiến trình.
Khi tiến trình xuất hiện lỗi thì Reply sẽ trả về ngoại lệ thay vì trả về một thông điệp bình thường. Ví dụ: TIEU LUAN MOI download : skknchat@gmail.com 9 <bpel:reply name="replyOutput" partnerLink="client" portType="tns:While" operation="process" variable="output"/> e)Hành động Assign Hoạt động Assign dùng để khởi tạo hoặc gán giá trị cho một hoặc nhiều biến trong tiến trình BPEL. Nó đượ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. <assign standard-attributes> standard-elements <copy>+ from-spec to-spec </copy> </assign> Một hoạt động assign có thể bao gồm một hoặc nhiều thẻ copy để thực hiện các thao tác gán biến. Trong đó from chỉ định giá trị, biểu thức hoặc biến được dùng để gán, to chỉ định biến được gán giá trị. Standard-attributes và standard-elements là các thuộc tính và các thành phần chuẩn trong đặc tả của BPEL.
Thẻ copy không chỉ được dùng với các biến mà còn được dùng để sao chép từ một phần tử của một biến phức hợp hoặc sử dụng biểu thức thông qua ngôn ngữ XPATH. Ví dụ <bpel:assign validate="no" name="Assign"> <bpel:copy> <bpel:from> <bpel:literal xml:space="preserve">0</bpel:literal> </bpel:from> TIEU LUAN MOI download : skknchat@gmail.com 10 <bpel:to variable="iterator"></bpel:to> </bpel:assign> 2.Hoạt động cấu trúc 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.