Bpel異步流程的構建與關聯集

 
Bpel異步流程的構建與關聯集
 
在流程的整合的實際應用中,常常會出現流程的異步運行。
例如:流程運行某處,阻塞,等待夥伴系統傳來的信息,流程繼續運行。可以使用receive活動或者pick活動來完成這中情況:
 異步流程需要注意的問題是傳入數據的相關性。因爲一個流程可能有多個實例在同時運行,假如流程A運行的是學號01的同學的流程,在異步處等待該學生的成績。在這時傳來了一個成績消息,那能否接受該消息呢?這就需要考慮數據相關性。確定相關性後,只有學號是01的同學的成績才能傳入這個流程實例。這就是相關集的作用。那麼如何定義相關集呢?
 在Netbeans中設置關聯集有一下幾個步驟
1. 首先思考能保證消息唯一性的數據是什麼,例如上例中學號是唯一標識,學號是字符型,所以在相應的wsdl中添加一個屬性,屬性的類型爲String,屬性名爲MY。
2. 確定屬性別名。在異步流程中,傳入的消息可能有多個,所以需要在這些消息中挑出一些Element來唯一確定這個消息。如上例中有兩個消息。第一個消息是學生的個人信息,其的ID Element需要加入屬性MY。第二個消息是學生的考試成績,其中的ID需要加入屬性MY。這樣就把這個消息聯繫了起來。
3. 在流程中創建關聯集,在關聯集中添加屬性MY。
4. 在消息傳入的Activity中添加關聯集。上面兩個圖中,圖一的receive1與receive2需要添加關聯集,圖二的receive1與OnMessage需要添加關聯集。
完成了以上幾個步驟就可以實現異步流程了,另外提幾點:
1. Pick中有個OnAlarm活動,該活動的作用是當異步消息的等待超過了一定的時間所引起的活動。
2. 發送異步消息的夥伴服務的實現形式有多種。一種是將發送消息的程序服務化,集成爲Web Service,另一種是在該程序中添加一個Web Service Client,調用流程WSDL的PortType中的Operation,還有一種是Jms消息傳遞,在流程的receive端設置好Jms的ConnectionFactiry以及Destination,填寫一個Jms服務器,填寫正確的用戶名密碼。活動活動發送Jms消息到制定的服務器,該消息激活Receive活動,流程繼續運行。Jms綁定比Http綁定更加安全可靠,這裏不再驁述。這也是我在學習過程中的一點記錄,有不當之處情指出
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章