Tải bản đầy đủ (.pdf) (55 trang)

Nghiên cứu về mô hình hóa và kiểm tra tiến trình nghiệp vụ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.37 MB, 55 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN THỊ XOAN

NGHIÊN CỨU VỀ MÔ HÌNH HÓA VÀ
KIỂM TRA TIẾN TRÌNH NGHIỆP VỤ

Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật Phần mềm
Mã số: 60480103

LUẬN VĂN THẠC SĨ
NGÀNH: CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. NGUYỄN VIỆT HÀ

Hà Nội - 2015


i
LỜI CẢM ƠN
Trước hết, em xin gửi lời biết ơn sâu sắc đến PGS.TS. Nguyễn Việt Hà, thầy đã
định hướng nghiên cứu, chỉ bảo cho em các kiến thức về kiểm chứng tiến trình nghiệp vụ,
và đã dành rất nhiều thời gian hướng dẫn em thực hiện luận văn này.
Em cũng xin được bày tỏ lòng biết ơn tới các thầy cô trongBộ môn Công nghệ
phần mềm, Khoa Công nghệ thông tin, Trường Đại học Công nghệ, Đại học Quốc Gia Hà
Nội đã thường xuyên giúp đỡ, trao đổi, góp ý và tạo những điều kiện thuận lợi nhất cho
em trong quá trình học tập cũng như làm luận văn tại Trường.
Một lần nữa, em xin chân thành cảm ơn!
Hà Nội, tháng 11 năm 2015


Học viên

Nguyễn Thị Xoan


ii
TÓM TẮT
Dịch vụ Web ra đời mang lại nhiều lợi ích to lớn, nó cho phép các phần mềm tích
hợp lại với nhau dựa trên nền tảng, ngôn ngữ khác nhau. Ngôn ngữ thực thi tiến trình
nghiệp vụ BPEL ra đời cung cấp cách thức để tích hợp các dịch vụ Web lại với nhau thành
một dịch vụ Web mới. Việc tích hợp các dịch vụ Web thành một dịch vụ Web mới làm việc
theo đúng kịch bản nghiệp vụ luôn là nhiệm vụ quan trọng. Nên yêu cầu phải kiểm tra tính
đúng đắn của tiến trình BPEL. Nhưng việc kiểm chứng trực tiếp trên BPEL là không thể, vì
vậy cần chuyển đổi đặc tả BPEL sang dạng đặc tả có thể kiểm chứng trực tiếp.
Nội dung của luận văn trình bày về ngôn ngữ thực thi tiến trình nghiệp vụ
BPELvà kiểm chứng dịch vụ Web được định nghĩa bằng ngôn ngữ BPEL. Cách chuyển
đổi đặc tả BPEL sang ký pháp ký pháp FSP mô tả LTS tương ứng, để kiểm chứng LTS
tương ứng. Một thuộc tínhđại diện cho luồng thực thi công việc của tiến trình BPEL để
kiểm tra tính thỏa mãn của LTS tương ứng. Nếu LTS thỏa mãn thuộc tính thì tiến trình
thỏa mãn yêu cầu, ngược lại thì tiến trình BPEL không thỏa mãn. Luận văn trình bày
các ví dụ minh họa cho việc kiểm chứng tiến trình BPEL với công cụ tự động LTSA.
Từ khóa: BPEL, FSP,LTSA, kiểm chứng dịch vụ Web.


iii
LỜI CAM ĐOAN
Tôi xin cam đoan phần nghiên cứu về mô hình hóa và kiểm tra tiến trình nghiệp vụ
được trình bày trong luận văn là của riêng tôi. Những thông tin trích dẫn trong luận văn
của tôi đều được chỉ rõ nguồn gốc, và có trích dẫn cụ thể, rõ ràng.


Hà Nội, tháng 11 năm 2015
Học viên

Nguyễn Thị Xoan


iv

MỤC LỤC
ĐẠI HỌC QUỐC GIA HÀ NỘI .......................................................................................... 1
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ................................................................................... 1
NGUYỄN THỊ XOAN ......................................................................................................... 1
Ngành: Công nghệ thông tin................................................................................................. 1
LUẬN VĂN THẠC SĨ ......................................................................................................... 1
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. NGUYỄN VIỆT HÀ............................... 1
LỜI CẢM ƠN ........................................................................................................................ i
TÓM TẮT.............................................................................................................................ii
LỜI CAM ĐOAN ............................................................................................................... iii
DANH MỤC KÝ HIỆU VÀ CÁC TỪ VIẾT TẮT............................................................. vi
DANH MỤC CÁC BẢNG BIỂU.......................................................................................vii
DANH MỤC HÌNH VẼ ................................................................................................... viii
Chương 1. PHẦN MỞ ĐẦU ................................................................................................ 1
1.1. Lý do chọn đề tài ........................................................................................................ 1
1.2. Nội dung nghiên cứu .................................................................................................. 1
Chương 2. CÁC KIẾN THỨC CƠ BẢN ............................................................................. 3
2.1. Tổng quan về ngôn ngữ thực thi tiến trình nghiệp vụ BPEL (Business Process
Execution Language) ........................................................................................................ 3
2.1.2. Các hoạt động cơ bản trong tiến trình BPEL ....................................................... 5
2.1.2.3. Hoạt động quản lý lỗi và ngoại lệ ................................................................... 15
2.2. Hệ thống chuyển trạng thái được gán nhãn - LTS và ký pháp tiến trình hữu hạn

trạng thái - FSP................................................................................................................ 16
2.2.1. Hệ thống chuyển trạng thái được gán nhãn - LTS............................................. 16
2.2.2. Ký pháp tiến trình hữu hạn trạng thái - Finite State Process(FSP).................... 19
Chương 3. PHƯƠNG PHÁP CHUYỂN TỪ ĐẶC TẢ BPEL ........................................... 21
SANG KÝ PHÁP FSP........................................................................................................ 21
3.1. Hành động empty ..................................................................................................... 21
3.2. Hành động invoke .................................................................................................... 22
3.3. Hành động receive.................................................................................................... 23


v
3.4. Hành động reply ....................................................................................................... 23
3.5. Hành động assign ..................................................................................................... 24
3.6. Hành động sequence ................................................................................................ 25
3.7. Hành động if ............................................................................................................. 25
3.8. Hành động while ...................................................................................................... 27
3.9. Hành động pick ........................................................................................................ 27
3.10. Hành động flow ...................................................................................................... 28
3.11. Hành động wait ...................................................................................................... 29
3.12. Hành động exit ....................................................................................................... 29
3.13. Hành động throw .................................................................................................... 30
Chương 4. KIỂM CHỨNG DỊCH VỤ WEB ..................................................................... 31
4.1. Cài đặt chương trình ................................................................................................. 31
4.2. Các ví dụ minh họa cho việc kiểm chứng tiến trình BPEL...................................... 32
4.2.1. Ví dụ 1 ............................................................................................................... 32
4.2.2. Ví dụ 2 ............................................................................................................... 36
4.2.3. Ví dụ 3 ............................................................................................................... 39
Chương 5. KẾT LUẬN ...................................................................................................... 44
TÀI LIỆU THAM KHẢO .................................................................................................. 45



vi
DANH MỤC KÝ HIỆU VÀ CÁC TỪ VIẾT TẮT

TT

Từ viết tắt

Ý nghĩa

1

BPEL

Business Process Excuation Language

2

BPEL4WS

Business Process Excuation Language for Web Service

3

FSP

Finite State Processes

4


LTS

Labeled Transition System

5

LTSA

Labeled Transition System Analyser

6

XML

eXtensible Markup Language

7

WS-BPEL

Web Services Business Process Excuation Language

8

WSDL

Web Services Description Language

9


WSFL

Web Service Flow Language


vii
DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1. Mô tả các hành động trong ngôn ngữ BPEL và ý nghĩa ........................... 5


viii
DANH MỤC HÌNH VẼ
Hình 2.1. Cấu trúc tiến trình BPEL cơ bản ............................................................... 4
Hình 2.2. Hệ thống chuyển trạng thái được gán nhãn ............................................. 16
Hình 2.3. LTS không đơn định ................................................................................ 17
Hình 2.4. LTS đơn định ........................................................................................... 18
Hình 3.1. LTS của hành động empty....................................................................... 22
Hình 3.2. LTS tương ứng của hành động invoke .................................................... 22
Hình 3.3. LTS tương ứng của hành động receive ................................................... 23
Hình 3.4. LTS của hành động reply ........................................................................ 24
Hình 3.5. LTS tương ứng của assign ....................................................................... 24
Hình 3.6. LTS của hành động sequence .................................................................. 25
Hình 3.7. LTS tương ứng của hành động if có 2 nhánh if và else .......................... 26
Hình 3.8. LTS tương ứng của hành động If chỉ có 1 nhánh if ................................ 26
Hình 3.9. LTS tương ứng của hành động While ..................................................... 27
Hình 3.10. LTS tương ứng của hành động pick ...................................................... 27
Hình 3.11. LTS tương ứng của hành động flow...................................................... 28
Hình 3.12. LTS tương ứng của hành động wait ...................................................... 29
Hình 3.13. LTS tương ứng của hành động exit ....................................................... 29
Hình 3.14.LTS tương ứng của hành động throw..................................................... 30

Hình 4.1. Tiến trình BPEL trên nền tảng Eclipse.................................................... 31
Hình 4.2. Công cụ LTSA......................................................................................... 32
Hình 4.3. Tiến trình BPEL mô tả chức năng lấy về ID của tiến trình được thực hiện
trước đó. .............................................................................................................................. 33
Hình 4.4. Phần chuyển đổi sang ký pháp FSP. ....................................................... 34
Hình 4.5. LTS tương ứng với FSP được sinh ra bởi tiến trình BPEL trong ví dụ 3.2.1 34
Hình 4.6. Chức năng compile và compose của công cụ LTSA .............................. 35
Hình 4.7. LTS của tiến trình COMPOSE1 khi không đạt đến trạng thái lỗi. ......... 36
Hình 4.8. LTS của tiến trình COMPOSE1 đạt đến trạng thái lỗi. ........................... 36
Hình 4.9. Tiến trình BPEL của hành động while. ................................................... 37


ix
Hình 4.10. Ký pháp FSP tương ứng của hành động while ...................................... 37
Hình 4.11. LTS tương ứng với hành động while .................................................... 38
Hình 4.12. LTS kết quả ở trạng thái không có lỗi ................................................... 39
Hình 4.13.LTS kết quả ở trạng thái có lỗi ............................................................... 39
Hình 4.14.Tính diện tích của phần hình giới hạn .................................................... 40
Hình 4.15.Mô hình hoạt động của bài toán ............................................................. 40
Hình 4.16.Tiến trình BPEL mô tả bài toán tính diện tích ....................................... 41
Hình 4.17. Ký pháp FSP tương ứng tiến trình BPEL mô tả bài toán tính diện tích 42
Hình 4.18. LTS tương ứng của bài toán tính diện tích ............................................ 42
Hình 4.19. LTS kết quả đạt đến trạng thái không lỗi .............................................. 43
Hình 4.20. LTS kết quả đạt đến trạng thái lỗi ......................................................... 43


1

Chương 1. PHẦN MỞ ĐẦU
1.1. Lý do chọn đề tài

Cùng với sự phát triển của công nghệ thông tin thì dịch vụ Web cũng ra đời và
phát triển vượt bậc. Các công ty, doanh nghiệp áp dụng thành tựu của công nghệ thông tin
vào quy trình sản xuất, kinh doanh trở nên phổ biến. Nhiều phần mềm ra đời, phục vụ cho
nhu cầu sử dụng của doanh nghiệp. Dịch vụ Web cho phép phần mềm được viết trên ngôn
ngữ, nền tảng khác nhau kết hợp lại được với nhau. Và ngôn ngữ BPEL ra đời cung cấp
cách thức để tích hợp các dịch vụ Web [2]. Trong quá trình tích hợp các dịch vụ Web
thành dịch vụ Web mới làm việc theo đúng kịch bản nghiệp vụ luôn là yêu cầu quan trọng
nên yêu cầu phải kiểm tra tính đúng đắn của tiến trình BPEL [4,5], nhưng việc kiểm
chứng trực tiếp trên tiến trình BPEL là không thể thực hiện được. Vì vậy tiến trình BPEL
cần được chuyển sang dạng ngôn ngữ /ký pháp có thể kiểm chứng trực tiếp được. Ký
pháp tiến trình hữu hạn trạng thái FSP được sử dụng để chuyển đổi từ tiến trình BPEL [1].
Chính vì vậy luận văn của em có tên là: “Nghiên cứu về mô hình hóa và kiểm tra
tiến trình nghiệp vụ”.
1.2. Nội dung nghiên cứu
Để giải quyết được các vấn đề nêu ra như trên thì luận văn cần giải quyết một số
nội dung sau:
- Luận văn tìm hiểu ngôn ngữ thực thi tiến trình nghiệp vụ BPEL để đặc tả dịch vụ
Web thông qua các thành phần, các hành động có trong đặc tả BPEL.
- Trình bày phương pháp chuyển đổi từ tiến trình BPEL sang dạng ký pháp FSP
tương ứng với việc chuyển đổi của các hành động trongtiến trình BPEL. Ký pháp
FSP lúc này sẽ tương đương với một LTS. Việc kiểm chứng BPEL lúc này tương
đương với việc kiểm chứng tính thỏa mãn của LTS với một thuộc tính p và việc
kiểm chứng này được thực hiện thông qua công cụ kiểm chứng tự động LTSA.
Các phần còn lại của luận văn có cấu trúc như sau:
Chương 1: 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.



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.
Chương 5. 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.


3
Chương 2. CÁC KIẾN THỨC CƠ BẢN
2.1. 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. Hình 2.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.


4

Hình 2.1. 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:
targetNamespace="http://helloworld"
suppressJoinFailure="yes"
xmlns:tns="http://helloworld"
xmlns:bpel=" />>



<!-- ============================================================= -->
<bpel:partnerLinks>
<!-- The 'client' role represents the requester of this service.-->
partnerLinkType="tns:helloworld"
myRole="helloworldProvider"
/>

</bpel:partnerLinks>

<!-- =============================================================-->



5
<!-- List of messages and XML documents used within this BPEL process-->
<!-- ============================================================== -->
<bpel:variables>

messageType="tns:helloworldRequestMessage"/>
<!-- Reference to the message that will be returned to the requester-->
messageType="tns:helloworldResponseMessage"/>

</bpel:variables>

<bpel:sequence name= “main”>
</bpel:sequence>
</bpel:process>

2.1.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.
Bảng 2.1. 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

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

động nào khi được gọi trong tiến trình BPEL

Hoạt động có cấu trúc
6

Sequence

Thiết lập thứ tự thực hiện của các hành động xuất hiện

trong sequence


6
7

If/Else

Định nghĩa cấu trúc có điều kiện

8

While

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

Lặp đi lặp lại một hành động cho đến khi không còn thỏa
mãn điều kiện

Hoạt động quản lý lỗi và xử lý ngoại lệ
12

Exit

13

Throw

14

Compensate

15

Fault Handler

Đượ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
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ẽ
đượ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á
trình thực thi tiến trình


2.1.2.1. 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”).


7
Cấu trúc XML của invoke được mô tả như sau:
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ụ:
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:
partnerLink="client"
portType="tns:helloworld"
operation="process"
variable="input"
createInstance="yes"/>


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ụ:
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:
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ụ:


9
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>


10
<bpel:to variable="iterator"></bpel:to>
</bpel:assign>

2.1.2.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.
Chúng mô tả làm thế nào mộttiế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)Hành động Sequence
Hành động Sequence chứa đựng một hoặc nhiều hành độngthực hiệntuầntự, 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>


Ví dụ:
<sequence >
<flow> … </flow>
<scope> … </scope>
… </pick>
</sequence>

b) Hành độngIf
Hành động If cung cấp điều kiện cho hành vi. 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, theo
sau là một tùy chọn Else. Các nhánh If và Else được xem xét theo thứ tự mà chúng xuất
hiện.
Cấu trúc XML của If như sau:
<if name = “NCName”>
<condition expressionLanguage="anyURI"?>
</condition>


11
activity
<else>
activity
</else>
</if>

Hoạt động If trên dùng thể condition để khai báo các điều kiện. If phù hợp với bài
toán có nhiều dữ liệu tương ứng với nhiều hành động khác nhau.
Ví dụ:
<bpel:if name="If">

expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xp
ath1.0"><![CDATA[$input.payload/tns:input="Xoan"]]>ndition>
<bpel:sequence>
<bpel:assign validate="no" name="Assign">
<bpel:copy>
<bpel:from><bpel:literal>xmlns:tns="http:ifelse.bpel.tps"
xmlns:xsi=" /><tns:result>tns:result</tns:result>
</tns:IFSampleResponse>
</bpel:literal></bpel:from>
<bpel:to variable="output" part="payload"></bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from>
<bpel:literal xml:space="preserve">Hello Xoan
</bpel:literal>
</bpel:from>
<bpel:to part="payload" variable="output">


12
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:x
path1.0"><![CDATA[tns:result]]></bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
partnerLink="client"

portType="tns:IFSample"
operation="process"
variable="output" />
</bpel:sequence>
</bpel:if>

c)Hành động While
While được thực hiện để lặp đi lặp một hành động cho đến khi đến khi điều kiện
lặp không còn thỏa mãn.
Cấu trúc XML như sau:
<while>
<condition expresssionLanguage=”anyURI”>
bool-expr
</condition>
activity
</while>

Trong đó điều kiện condition được xác định bằng biểu thức Boolean, nếu điều kiện
thỏa mãn thì các hoạt động trong vòng lặp while còn thực hiện.
Ví dụ:
<bpel:while name="While">
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xp
ath1.0"><bpel:assign validate="no" name="Assign1">
<bpel:copy>
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:subl
ang:xpath1.0">


13
<bpel:to variable="iterator"></bpel:to>
</bpel:copy>
<bpel:copy>
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:subl
ang:xpath1.0">$input.payload/tns:input)]]></bpel:from>
<bpel:to variable="tepm"></bpel:to>
</bpel:copy>
</bpel:assign>
</bpel:while>

d) Hành động 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, RepeatUntil thực hiện lặp các hành động trong nó ít nhất 1 lần. Cấu
trúc XML như sau:
<bpel:repeatUntil name="RepeatUntil">
<bpel:invoke name="Invoke">
</bpel:invoke>
<condition>
$iteration<5
</condition>
</bpel:repeatUntil>

Hoạt động reapeatUntil thực hiện gọi một dịch vụ với điều kiện $iteration < 5
e)Hành động 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 đó. Cấu trúc Pick bao gồm một tập
các sự kiện, sau khi một 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.
Cấu trúc XML của hành động pick như sau:

variable="logoffReq">


14
<assign><copy><from expression="false()"/>
<to variable="loggedon" part="value"/>
</copy>
</assign>
</onMessage>
variable="sessionMsg">
<assign><copy><from expression="false()"/>
<to variable="connected" part="value"/>
</copy>
</assign>
</onMessage>
</pick>

Với thẻ onMessage định nghĩa phần tử bắt sự kiện nhạn thông điệp với thuộc tính
variable chỉ ra biến lưu thông tin của thông điệp.
g) Hành động Flow
Hành động Flow cho phép định nghĩa một hoặc nhiều hành động có thể thực thi
song song với nhau. Cấu trúc XML của hành động Flow như sau:

standard-elements
</flow>

h)Hành động Wait
Cho phép dừng tiến trình BPEL trong một khoảng thời gian bao lâu (duration) hay
đến mốc thời gian nào đó (deadline)
Cấu trúc XML như sau:
standard-attributes>
standard-elements
</wait>

i)Hành động Scope
Dùng để chia nhỏ tiến trình thành các hoạt động có nhiệm vụ liên quan với nhau.
standard-attributes>


15
standard-elements

×