BPEL4WS基础知识
一、為什么選擇BPEL4WS
可以使用行業范圍內的規范來廣告、發現和調用Web服務
開發人員和用戶可以通過組合和訂購可用的基本服務來解決復雜問題
服務組合允許服務重用并加速復雜的服務開發
提供一種表示法,用于將Web服務的交互描述為業務流程
編寫使用Web服務的程序,通過組合一組現有服務來定義新的Web服務
編寫作為Web服務的程序,組合服務的接口被描述為任何其他Web服務
?
二、BPEL4WS過程的結構
<process ...><partners>??...</partners>? <!--流程與之交互的Web服務--><containers> ...</containers>? <!--流程使用的數據--><correlationSets> ...? <!--用于支持異步交互--></correlationSets><faultHandlers> ...? <!--代替執行路徑已處理錯誤條件--></faultHandlers><compensationHandler> ...? <!--undo動作時執行的代碼--></compensationHandler>(activities)*? <!--該過程實際是做什么的--> </process>?
三、BPEL的基本元素
BPEL流程主要包括對其他服務的調用或從其他服務接收調用
Partner:與流程交互的其他服務
invoked partner:流程調用的服務,作為其算法的組成部分
client partner:調用流程
第三方partner:流程調用的服務 和 調用流程
Partner(Service) Link Type? (SLT)
表示第三方聲明兩個(或更多潛在Web服務之間的關系)
定義角色集合,其中每個角色都表示<portTypes>的列表
當兩個服務交互時,伙伴鏈接類型是它們如何交互的聲明
定義了角色以及角色需要支持的端口類型
在純被調用的伙伴和純客戶伙伴的情況下 伙伴鏈接類型只有一種作用
?
四、活動
BPEL流程基本上是流程圖,類似于算法的表達,該過程中每個步驟都稱為活動。
原始活動:過程中的原始步驟
<invoke>
<receive>
<reply>
<wait>
<assign>
結構活動:可以使用原始活動組合為更復雜的算法
<sequence>
<while>
<flow>
主要活動:
- <receive>等待用于外部調用服務接口操作的消息
- <invoke>在某些Web服務上調用操作
- <reply>生成輸入/輸出操作的響應,在伙伴調用中發送回復消息
- <assign>將數據從一個地方復制到另一個地方
原始活動
<wait>等待一段時間
<throw>表示出了一點問題
<terminate>終止整個服務實例
<empty>或不執行任何操作
結構活動
<sequence>定義步驟的有序序列
<switch>使用現在常見的“案例陳述”方法進行分支
<while>定義循環
<pick>執行幾種替代路徑之一
<flow>指示應并執行步驟集合
基本結構
?
五、BPEL數據模型
<Countainer>提供用于保存構成業務流程狀態的消息的方法
定義變量的語法已更改為使用三個互斥屬性messageType type和element
?
六、消息相關性
BPEL中的異步交互
BPEL可以對多種類型的交互進行建模
無狀態互動
有狀態的異步交互
消息關聯是BPEL機制,它允許流程參與有狀態會話
在許多分布式對象系統中,消息路由涉及檢查消息中是否有用于標識目標的顯式實例ID
BPEL實例由交換的消息中一組或多組關鍵數據字段標識
舉例:
采購訂單/發票業務情景中,發票可能包含相應的采購訂單編號
Purchase Order:
<PurchaseOrder><PurchaseOrderNumber><PurchaseOrderDate>........ </PurchaseOrder>Invoice:
<Invoice><InvoiceNumber><InvoiceDate><PurchaseOrderNumber>........ </Invoice>相關集:標識流程實例的數據字段的集合
一組捕獲交互狀態的業務數據字段
每組初始化一次
在交互過程中值不變
使用相關集
集合被receive reply invoke pick活動引用
由于receive和pick提供了流程的入口點,因此相關集通常會出現在他們上以啟用消息到實例的路由
reply和invoke活動上的相關集通常用于驗證傳出消息
七、BPEL處理程序
錯誤情況的處理通常會影響相互關聯的一組活動。
BPEL在范圍結構化活動中包含一組相關活動。
范圍為嵌套在其中的活動提供了上下文,并且在此定義了故障和補償處理程序。
每個范圍可以具有兩種關聯的處理程序
故障處理程序:可以針對不同的故障類型附加很多
補償處理程序:每個范圍一個補償處理程序
?
八、錯誤處理程序
在執行BPEL流程時,在調用的服務或流程本身內部可能會發生錯誤
BPEL提供了一種機制,可以通過執行<fault handles>中指定的子例程來顯式捕獲錯誤并進行處理
當范圍內發生故障時,故障處理程序定義備用執行路徑
?
九、補償處理程序
業務流程通常持續時間很長,這意味著在業務流程進行許多事務之后,可能需要取消業務流程。
允許流程的創建者定義某些操作,這些操作應用來撤消工作單元并將數據恢復到完成該工作之前的狀態。
?
十、可執行BPEL&抽象BPEL
BPEL4WS支持兩種不同的使用場景:
可執行流程——實施可執行業務流程
抽象過程——描述不可執行的抽象過程
抽象過程:
抽象過程是部分指定的過程,通常不打算執行
抽象流程是格式完整的流程,具有完整的表達能力,可用于指定具有不同程度的操作細節的流程。
能夠抽象出操作細節,使用BPEL的概念應能反映描述業務協議公共方面所需的抽象級別。
僅處理與協議相關的數據
使用不確定的數據值隱藏行為的私人方面
抽象過程的使用
導出模式:可執行流程到抽象流程
導入模式:抽象過程到可執行過程
協議匹配模式:構造一個與抽象過程中描述的預期行為相匹配的過程
?
十一、總結
BPEL是一種XML語言,支持面向流程的服務組合
BPEL4WS定義了一個模型和一個語法,用于基于流程及其合作伙伴之間的交互來描述業務流程的行為
?
總結
以上是生活随笔為你收集整理的BPEL4WS基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google 与 GitHub 结盟,为
- 下一篇: ChineseDiachronicCor