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