Thành phần <link> trong <flow>

Một phần của tài liệu Vấn đề bế tắc (deadlock) trong quy trình được hiện thực bằng BPEL (Trang 30 - 31)

Trạng thái link là một cờ ba trạng thái được kết hợp cùng mỗi <link> đã khai báo, gồm true, false hoặc unset. Vòng đời của trạng thái của một <link> chính xác là vòng đời của activity <flow> bên trong chính nó được khai báo tới. Một activity

<flow> kích hoạt, trạng thái của tất cả các links được khai báo trong activity đó là

unset. Nếu một activity đã sẵn sàng để bắt đầu tương ứng các links đi vào, thì nó phải không bắt đầu cho đến khi trạng thái của tất cả của các links đi vào nó được xác định và điều kiện nối ngầm định hoặc rõ ràng cũng phải được định giá trị. Trên sắp xếp để tránh các sự phụ thuộc điều khiển vi phạm, các định giá của điều kiện nối được thực thi chỉ sau trạng thái của tất cả các links đi vào đã được xác định. Để hiểu rõ hơn về trạng thái định giá của link, hãy xem ví dụ mô tả sau. Khi activity A hoàn thành mà không truyền bất cứ sai lầm nào, các bước tiếp theo phải được thực hiện để xác định hiệu quả của các links trên các activities khác:

Bước 1: Xác định trạng thái của tất cả các links đi vào cho A. Trạng thái sẽ là true hoặc false. Để xác định trạng thái của mỗi link trong một <flow> thì điều kiện dịch chuyển <tranditionCondition> của nó phải được định giá.

Bước 2: Với mỗi activity B mà có một sự phụ thuộc đồng bộ trong A, kiểm tra xem: Bước 2.1: B đã sẵn sàng để bắt đầu (phụ thuộc trong các link đi vào).

Bước 2.2: Trạng thái của tất cả các links đi vào với B đã được xác định.

Bước 3: Nếu các điều kiện trên là true, thì định giá <joinCondition> cho B, nếu nó định giá tới true, activity B được bắt đầu. Còn không một lỗi sai chuẩn

bpel:joinFailure phải được ném ra, nhưng khi giá trị của thuộc tính

suppressJoinFailure là yes trong trường hợp bpel:joinFailure không

được ném.

Khi một activity có nhiều link đi vào, sự sắp xếp trong chúng, trạng thái của các link và các điều kiện dịch chuyển kết hợp được định nghĩa tới tính tuần tự, theo sắp đặt của các links khai báo trong thành phần nguồn <source>. Thành phần nguồn liên quan phải hoàn thành trước điều kiện <transitionCondition> của một link được định giá. Nếu một lỗi xuất hiện trong quá trình định giá điều kiện dịch chuyển

<transitionCondition> của một của các link đi vào của một activity, thì tất cả

các link đi vào còn lại cùng với các đích bên trong phạm vi bao đóng của activity nguồn phải không có các điều kiện dịch chuyển của chúng được định giá và còn lại ở trạng thái unset. Tuy nhiên, nếu đích của một link đi vào còn lại là bên ngoài phạm vi bao đóng của activity nguồn thì trạng thái của link phải cài đặt tới false.

Một phần của tài liệu Vấn đề bế tắc (deadlock) trong quy trình được hiện thực bằng BPEL (Trang 30 - 31)

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

(51 trang)