【06】業(yè)務(wù)流程ppt課件_第1頁
【06】業(yè)務(wù)流程ppt課件_第2頁
【06】業(yè)務(wù)流程ppt課件_第3頁
【06】業(yè)務(wù)流程ppt課件_第4頁
【06】業(yè)務(wù)流程ppt課件_第5頁
已閱讀5頁,還剩130頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、SOA原理與技術(shù)業(yè)務(wù)流程1業(yè)務(wù)流程1. 業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范2. 目前主流的WS-BPEL引擎3. Apache ODE2第1部分業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范3業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范業(yè)務(wù)流程執(zhí)行言語Business Process Execution Language, BPEL,發(fā)音為bipple或bee-pell,也叫業(yè)務(wù)過程執(zhí)行言語,是一種基于XML的,用來描寫業(yè)務(wù)流程的編程言語,被描寫的業(yè)務(wù)流程的每個單一步驟那么由Web效力來實現(xiàn)。4業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范BPEL是基于Web效力的,并且依賴于WSDL。一個BPEL流程可以發(fā)布為一個WSDL定

2、義的效力,并像其它Web效力一樣被調(diào)用。而且,BPEL希望一個Web效力合成所包含的全部外部Web效力,都是用WSDL效力契商定義的,這令BPEL流程可以調(diào)用其它BPEL流程,甚至可以遞歸的調(diào)用本人。5業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范值得留意的是BPEL不直接支持人機對話,BPEL所描寫的過程僅與Web效力通訊,而這些Web效力卻可以提供與用戶的信息交換,但它們不是用戶本身。用BPEL編寫的流程可以在任何支持BEPL規(guī)范的平臺或產(chǎn)品上運轉(zhuǎn)。6業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范協(xié)議根底WSBPEL是基于XML定義的流程描畫言語,它位于幾個XML規(guī)范之上:WSDLl.1、XML Schemal.

3、0和XPathl.0。其中WSDL音訊和XML Schema類型定義提供了BPEL流程所用的數(shù)據(jù)模型;XPath為數(shù)據(jù)處置提供支持;一切的外部資源和同伴被表示成WSDL效力。7業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范BPEL包含的范圍處置活動的順序,特別是網(wǎng)絡(luò)效力互操作。音訊和處置實例之間的關(guān)系。在發(fā)生錯誤和例外情況下的恢復(fù)行為。處置角色之間的基于網(wǎng)絡(luò)效力關(guān)系的雙面性8業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例1 : BPEL的根本構(gòu)造 ? . ? . ? . 9業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范 ? . ? . ? . activity10業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范 前面的BPEL根本構(gòu)造包括

4、了一部分為了定義一個業(yè)務(wù)流程,BPEL引入如下關(guān)鍵元素:伙伴鏈接 變量 活動 關(guān)聯(lián)集合事件處理程序 BPEL事務(wù)與補償機制 BPEL異常管理 11業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范部分關(guān)鍵元素之間的關(guān)系:流程是由一系列的活動組成的;流程經(jīng)過同伴鏈接來定義與流程交互的其他效力;效力中可以定義一些變量;流程可以是有形狀的長時間運轉(zhuǎn)過程,流程引擎可以經(jīng)過關(guān)聯(lián)集合將一條音訊關(guān)聯(lián)到特定的流程實現(xiàn)。12業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范同伴一個流程可以調(diào)用其他效力,也可以呼應(yīng)來自客戶端的懇求一個流程既可以作為效力的懇求者,也可以扮演效力的提供者BPEL把與流程交互的其他效力稱為同伴13業(yè)務(wù)流程執(zhí)行言語WS

5、-BPEL規(guī)范在異步通訊環(huán)境中,流程與同伴之間的會話能夠是雙向的,它們會扮演不同的角色。因此,為了消除在通訊過程中的多義性,我們需求明確效力和流程所扮演的角色。14業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范例如:在BPEL中的同伴BPEL: 15業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Purchase Process WSDL:Purchase Process PortType: 16業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范同伴鏈接同伴鏈接用于實現(xiàn)Web效力長期穩(wěn)定的交互,描畫同伴之間的關(guān)聯(lián)。這種關(guān)聯(lián)是經(jīng)過元素來定義的。假設(shè)在流程的活動中需求指定與特定同伴的交互,只需求援用partnerLink的稱號即可。在元素

6、中,屬性myRole指出了業(yè)務(wù)流程本身的角色,而屬性partnerRole指出了同伴的角色17業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范經(jīng)過partnerLink的籠統(tǒng),在流程建模時不用指定詳細(xì)的效力端點,而將流程與詳細(xì)效力的綁定推遲到組裝或運轉(zhuǎn)時來完成。這種動態(tài)同伴關(guān)系為流程帶來了極大的靈敏性,也加強了流程的可復(fù)用性。18業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例2 :一個包含的實例 19業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范 20業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范在實例2中,他會留意到每一個元素中都包含一個partnerLinkType 屬性。下面讓我們來解釋一下 partnerLinkType 。同伴鏈

7、接經(jīng)過援用partnerLinkType同伴鏈接類型來定義流程與同伴效力之間的通訊接口實踐上是WSDL文檔中的Port Type。21業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范同伴鏈接類型聲明了兩個或多個效力之間的關(guān)系。同伴鏈接類型定義了一組角色,其中每個角色指明一組Port Type,即明確了該角色所提供的效力接口,一邊接納會話的上下文音訊。 假設(shè)partnerLinkType僅有一個角色,那么將根據(jù)需求省略其中一個屬性partnerLinkType通常被定義在WSDL文檔中,被BPEL流程所援用。22業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范以下圖展現(xiàn)了BPEL流程定義和WSDL文件之間的映射關(guān)系。23業(yè)

8、務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例2的代碼片段顯示了如何利用partnerLink和 partnerLinkType 定義流程與同伴的協(xié)作關(guān)系。 根據(jù)BPEL流程定義和WSDL文件之間的映射關(guān)系,我們還需求在流程對應(yīng)的WSDL文檔中定義partnerLinkType。 24業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例3 :與實例2對應(yīng)的WSDL文檔中定義partnerLinkType 25業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范. . 26業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范在實例3中可以留意到:協(xié)作同伴鏈接類型與協(xié)作同伴鏈接之間具有一對多的關(guān)系,同一個協(xié)作同伴鏈接類型可以用來描畫多個協(xié)作同伴鏈接。雖然運

9、用效力的用戶必需靜態(tài)地依賴于特定的port-Type,但是在執(zhí)行過程中可以經(jīng)過端口類型動態(tài)地發(fā)現(xiàn)和運用包括在端口定義中的信息。27業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范變量:在BPEL中,可以運用變量來保管和傳送流程的形狀信息。它們通常是從協(xié)作同伴那里接納到音訊,或者是被發(fā)送給協(xié)作同伴的音訊。同時,它們還有能夠是與流程有關(guān)的形狀音訊,這些音訊并不與協(xié)作同伴進展交換28業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范BPEL支持的變量類型包括三種:1.由WSDL文件所定義的音訊類型(message type);2.由XML Schema所定義的簡單類型(simple type);3.由XML Schema所定義的

10、元素(element).29業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范可以賦值給變量的數(shù)據(jù)類型需求提早用messageType, element或type屬性定義好。messageType屬性表示允許變量包含WSDL定義的整個信息; element屬性表示一個XSD元素構(gòu)造;type屬性表示一個XSD簡單構(gòu)造,比如:string ,integer30業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范變量是有作用域的:每個變量只需在定義它的作用域和所包含的作用域內(nèi)的全部作用域中才是可見的屬于全局流程作用域的變量稱為全局變量;屬于流程作用域的變量稱為部分變量31業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范BPEL支持四種表達式布爾

11、表達式。繼續(xù)時間表達式。截止時間表達式。普通表達式,可以歸結(jié)為XML Schema中所定義的string, number和boolean格式。32業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范BPEL同時支持一些操作符,如簡單的算術(shù)運算(加、減、乘)、簡單的比較運算(等于、不等于、小于、大于、小于等于、大于等于)、布爾運算(and和or運算)以及對xml格式的操作符?,F(xiàn)有的BPEL可以經(jīng)過外部的表達式言語來描畫、計算表達式,這經(jīng)過process的expressionLanguage屬性進展表達式言語指定,如今只能指定為XPath1.033業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范BPEL:Purchase Pro

12、cess WSDL: 34業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范WS-BPEL提供了一些內(nèi)置的函數(shù)支持變量內(nèi)容的處置:(1)getVariableProperty(variableName, propertyName)(2)getVariableData(variableName, partName?, locationPath? )35業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例4:用getVariableData函數(shù)檢索不同變量中特定的數(shù)據(jù)片段getVariableData (InvoiceHoursResponse, ResponseParameter) getVariableData (inpu

13、t,payload, /tns:TimesheetType/Hours/.) 36業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范活動:BPEL是由一系列步驟組成,這些步驟稱為活動活動分兩類:根本活動描畫了流程內(nèi)的一個詳細(xì)步驟,如接受懇求、調(diào)用同伴效力、變量賦值等構(gòu)造化活動描畫了如何組織和管理流程的控制流37業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范根本活動:根本活動是與外界進展交互最簡單的方式,活動內(nèi)不會嵌套其它活動。它們是無序的個別步驟,與效力進展交互、操作、傳輸數(shù)據(jù)或者處置異常等。38業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范根本活動包括如下:流程用于和外界進展交互的根本活動:receive、invoke、reply

14、;流程用于傳輸數(shù)據(jù)的根本活動:assign;經(jīng)過throw活動發(fā)出缺點信號;經(jīng)過exit活動放棄一切流程實例的執(zhí)行;經(jīng)過wait活動使流程等待一段時間或到達某個截止期限后再執(zhí)行;經(jīng)過empty活動不執(zhí)行任何的動作;39業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范主要根本活動:擔(dān)任調(diào)用效力receivereplyinvokeassignwaitemptyexit40業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范構(gòu)造活動:構(gòu)造化的活動規(guī)定了一組活動發(fā)生的順序。他們描畫了業(yè)務(wù)流程是怎樣經(jīng)過把它執(zhí)行的根本活動組成構(gòu)造而被創(chuàng)建的,這些構(gòu)造表達了涉及業(yè)務(wù)協(xié)議的流程實例間的控制方式、數(shù)據(jù)流程、缺點和外部事件的處置以及音訊交換的協(xié)

15、調(diào)。構(gòu)造化的活動可以被恣意的嵌套和組合41業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范 主要構(gòu)造活動包括如下: sequence按照一個序列處置一系列活動while在一個條件滿足的情況下處置一個活動switch按照不同條件處置不同活動flow平行或者按照隨意順序處置活動pick按照外部事件從過程的角度不定值地選擇42業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范主要構(gòu)造活動sequenceflowwhileswitchpick43業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范以上是是BPEL4WS1.1中常見的義務(wù),在最新發(fā)布的WS-BPEL2.0支持更多新的義務(wù)或行為44業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范45業(yè)務(wù)流程執(zhí)行言語

16、WS-BPEL規(guī)范活動舉例: 接納一個用戶id根據(jù)id獲取用戶的名字輸出“Hello, 此id的名字46業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范對應(yīng)的源碼:47業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范活動詳解:Receive(接納) /Reply(回答)活動從流程的外部同伴那獲得數(shù)據(jù),并將其保管到流程變量。通常一個Receive是一個流程的初始點,它會阻塞執(zhí)行直到匹配的音訊的到達。在異步信息交換時,receive也可以接納回收信息。48業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范元素有5個屬性: partnerLink :在通訊過程中識別同伴 portType:從同伴方接納懇求音訊的接口 operation :接納

17、懇求音訊 variable:用來存儲接納到的懇求音訊 createInstance: 當(dāng)該屬性設(shè)置為yes時,它指明了當(dāng)前流程接納到匹配音訊是會創(chuàng)建新的流程實例來處置該懇求49業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范活動發(fā)送音訊給同伴來應(yīng)對經(jīng)過Receive活動所接納到的音訊。Receive 和Reply的組合對應(yīng)著WSDL portType上定義的一個懇求呼應(yīng)操作。假設(shè)receive活動對應(yīng)著一個單向操作,那么不能在流程中定義對應(yīng)的reply活動。50業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范元素也有5個屬性:其中, partnerLink, portType 和 operation含義 同receive

18、元素的屬性含義一樣。variable:用來存儲從同伴前往的音訊messageExchange:這是一個WS-BPEL2.0新添加的可選的屬性。它使得reply元素可以準(zhǔn)確的關(guān)聯(lián)到一個可以接納信息的活動比如 receive元素51業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例4 :包含receive /reply活動的片段 52業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范53業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范留意:1在實例4中:receive和reply活動中都是經(jīng)過partnerLink來引導(dǎo)預(yù)定義同伴關(guān)系的,而且需求設(shè)置portType 和operation屬性來聲明流程實現(xiàn)的WSDL portType和操作

19、。2假設(shè)將receive活動作為流程的起始點,那么需求將receive活動的createInstance屬性設(shè)置為yes,它指明了當(dāng)前流程接納到匹配音訊是會創(chuàng)建系的流程實例來處置該懇求。54業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范在BPEL流程中,我們還可以定義更為復(fù)雜的音訊呼應(yīng)機制,可以將特定的音訊關(guān)聯(lián)到相應(yīng)的流程實例中。關(guān)聯(lián)集合就是為理處理上述問題而提出來的。55業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Invoke 懇求活動允許業(yè)務(wù)流程同步或異步伐用由協(xié)作同伴提供的效力,效力實現(xiàn)可以是單向或懇求呼應(yīng)操作。該元素也有5個屬性: partnerLink :指明同伴效力 portType: 區(qū)分同伴效力的p

20、ortType565.2:業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范operation :同伴效力對于從業(yè)務(wù)流程發(fā)送來的懇求所要進展的處置操作inputVariable :用于與同伴進展交流的輸入信息。留意:輸入信息作為一個變量outputVariable:該屬性用于懇求呼應(yīng)操作中保管前往值變量。57業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例5:invoke元素區(qū)分目的同伴的實現(xiàn)細(xì)節(jié) 58業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Assign 賦值活動的作用是用新的數(shù)據(jù)元素來更新變量的值。Assign活動可以包括恣意數(shù)量的根本復(fù)制操作Assign 活動還可以把端點援用復(fù)制到協(xié)作同伴鏈接,或把協(xié)作同伴鏈接復(fù)制到端點

21、援用,以實現(xiàn)效力的動態(tài)綁定。59業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例6:TimesheetSubmissionFailedMessage 變量被復(fù)制到另一個信息變量 60業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范留意:copy構(gòu)造可以起到數(shù)據(jù)轉(zhuǎn)換的功能比如:可以將一個變量的一部分copy到另一個變量61業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Wait 等待活動會暫停流程執(zhí)行,等待一段給定的時間或等到某一時辰才干繼續(xù)運轉(zhuǎn)。Empty 空活動不執(zhí)行任何的動作。Exit活動放棄一切流程實例的執(zhí)行。62業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Sequence 順序活動定義一段按順序先后執(zhí)行的活動。執(zhí)行順序是sequen

22、ce活動中嵌套活動的先后順序。當(dāng)sequence中的最后一個活動完成后,該sequence活動也就完成了。63業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例7:一個sequence構(gòu)造的綱要 . . . . 64業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Flow 流程活動可以描畫更為復(fù)雜的活動執(zhí)行順序。我們可以利用flow來指定一個或多個并行執(zhí)行的活動。為了定義恣意的控制構(gòu)造,可以在并行的活動中運用鏈接。Flow能進一步表達直接或間接嵌套在其中的活動之間的同步相關(guān)性,link(鏈接)用來表達這種同步相關(guān)性。65業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Flow活動出現(xiàn)的一切l(wèi)ink必需在flow活動中分開定義,并經(jīng)過

23、稱號進展標(biāo)識。Flow活動中嵌套的活動需求經(jīng)過source或target屬性來闡明該活動為哪個鏈接的源或目的活動。在flow活動中,對于每一個link必需有且僅有一個活動作為它的源活動,同樣有且僅有一個活動作為它的目的活動。66業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范目的活動會在源活動完成之后執(zhí)行。這樣flow內(nèi)部的活動就可以經(jīng)過活動構(gòu)成一個有向圖。我們還可以在link源上定義transition變化條件,當(dāng)源活動完成之后,BPEL引擎會檢查變化條件能否滿足,假設(shè)link的變化條件滿足,目的活動就會執(zhí)行。67業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Switch分支活動與傳統(tǒng)的構(gòu)造化言語的功能類似,用于從一

24、組分支情況中選擇一個特定的活動分支加以執(zhí)行。Switch由case元素定義的一個活多個條件分支的有序列表組成,后面可跟也可以不跟一個otherwise分支。68業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范以case分支的出現(xiàn)順序檢查,第一個條件是true的分支被選擇并被作為被執(zhí)行的活動 。假設(shè)有條件的分支都未被選擇,那么otherwise分支將被選擇。留意:在WS-BPEL 2.0中,switch活動曾經(jīng)被if,elseifthen 活動取代。69業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例7:switch活動框架 . . 70業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范While循環(huán)活動也承繼于傳統(tǒng)的構(gòu)造化編程思想,

25、提供了while-do循環(huán)構(gòu)造的支持。它可以包含一個活多個活動它指定反復(fù)執(zhí)行其內(nèi)部活動,知道勝利條件不被滿足為止。71業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Pick選取活動會等待一組相互排斥事件中的一個時間的發(fā)生,然后執(zhí)行與發(fā)生的事件相關(guān)聯(lián)的活動。它會阻塞業(yè)務(wù)流程的執(zhí)行,以等待某一特定的事件發(fā)生。當(dāng)其中任何一個事件被觸發(fā)后,業(yè)務(wù)流程就會繼續(xù)執(zhí)行,pick也隨即完成了,不會再等待其他事件的發(fā)生。72業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范每個pick活動必需至少包括一個onMessage事件。onMessage事件的語義等同于有關(guān)變量屬性的可選擇類型的receive活動。Pick活動還可以定義onAlar

26、m事件用于指定超時警報。73業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范Pick活動也可以作為業(yè)務(wù)流程的起始點,指定流程可以接納多種不同的音訊,并讓流程在接納到特定音訊后創(chuàng)建新的流程實例來處置音訊。這里與receive活動類似,我們需求將pick活動的createInstance屬性設(shè)置為“yes。當(dāng)然這時候就不應(yīng)該定義onAlarm超時事件。74業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范關(guān)聯(lián)集合:BPEL提供了聲明性機制,以指定效力實例中相關(guān)聯(lián)的操作組。一組相關(guān)標(biāo)志可定義為相關(guān)聯(lián)的組中一切音訊共享的一組特性。這樣的一組特性稱為關(guān)聯(lián)集合。每個關(guān)聯(lián)集都在一個作用域中進展聲明并屬于該作用域。屬于全局流程作用域的關(guān)聯(lián)

27、集稱為全局關(guān)聯(lián)集;屬于部分作用域,這樣的關(guān)聯(lián)集稱為部分關(guān)聯(lián)集。75業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范在流程開場時,全局關(guān)聯(lián)集處于未初始化的形狀。在其所屬的作用域的執(zhí)行開場時,本地關(guān)聯(lián)集處于未初始化的形狀。相關(guān)集在其語義上類似于延遲綁定的常數(shù)。相關(guān)集的綁定由特別標(biāo)志的音訊發(fā)送或接納操作來觸發(fā)。相關(guān)集在其所屬的作用域的生存期中只能初始化一次。在初始化之后,它的值就可被以為是業(yè)務(wù)流程實例的標(biāo)識的別名76業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范相關(guān)集用來關(guān)聯(lián)和標(biāo)定一個BPEL過程實例。對需求堅持會話形狀的BPEL業(yè)務(wù)需求以及多方業(yè)務(wù)協(xié)議來說是非常有用。初始者流程發(fā)送啟動會話的第一個音訊,從而定義了標(biāo)志該對話

28、的相關(guān)集合中的特征值。一切其他參與者經(jīng)過接納提供相關(guān)集中的特征值的傳入音訊來綁定會話中的相關(guān)集。77業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范比如:一個游覽社訂票流程,當(dāng)該流程啟動之后,用戶需求可以查詢該流程形狀,并能取消該流程。這就需求相關(guān)集的支持來確保后續(xù)的懇求音訊綁定到一樣的流程實例中。相關(guān)集的稱號用在invoke、receive和reply活動中,也用在pick活動的onMessage分支中,同時還用在事件處置程序的onMessage方式中。 78業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范生命周期:每個實例的生命周期為從實例的創(chuàng)建到實例的終止。實例的創(chuàng)建:當(dāng)receive或pick活動的createI

29、nstance屬性被設(shè)為“yes時,當(dāng)活動執(zhí)行到它們時就會檢查該實例能否存在,假設(shè)不存在就創(chuàng)建一個新實例。79業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例的終止方式有以下幾種:當(dāng)定義流程的活動全部完成時,正常終止;當(dāng)缺點出現(xiàn)時,異常終止;當(dāng)流程實例被terminate活動顯式地終止,異常終止。80業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范至此,我們曾經(jīng)引見了BPEL流程中關(guān)鍵元素的引見。既然說BPEL是專為Web效力設(shè)計的,那讓我們來看一下BPEL流程和WebService交互運用:81業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范首先由客戶端(JSP)經(jīng)過音訊發(fā)起流程,創(chuàng)建流程實例并傳入相關(guān)參數(shù);流程在Receive

30、節(jié)點將參數(shù)存入與BPEL流程綁定的WSDL接口的輸入變量BO中;82業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范添加invoke節(jié)點調(diào)用外部的WebService,該Web效力能夠是由ERP、CRM或者OA等業(yè)務(wù)系統(tǒng)暴顯露的效力接口,WebService根據(jù)輸入變量BO完成查詢數(shù)據(jù)庫、啟動其他任務(wù)流等相關(guān)業(yè)務(wù)處置并前往輸出值給BPEL流程;流程在Reply節(jié)點把輸出值前往給前臺JSP,至此流程終了83業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范BPEL異常管理活動執(zhí)行過程中發(fā)生異常,業(yè)務(wù)流程必需對錯誤進展處置,BPEL提供了異常處置機制用戶可以在業(yè)務(wù)流程中添加faultHandler來捕獲處置相應(yīng)的異常fault

31、Handler與特定的Scope關(guān)聯(lián),用于捕獲Scope內(nèi)產(chǎn)生的異常。當(dāng)異常發(fā)生時,BPEL正常執(zhí)行流終了,控制流轉(zhuǎn)入faultHandler內(nèi)執(zhí)行。84業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范補充:特殊活動 ScopeScope活動為嵌套在其中的活動提供缺點處置功能和補償處置功能。scope 可以提供缺點處置程序、補償處置程序、數(shù)據(jù)變量和相關(guān)集。 每個Scope有一個定義它的正常行為的主要活動。該主要活動可以是一個復(fù)雜的構(gòu)造化的活動,其中有恣意深度的許多嵌套的活動。一切的嵌套的活動都共享該Scope85業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范faultHandler包含多個catch活動,每個catch

32、活動能攔截某種特定的缺點假設(shè)沒有缺點名,那么catch將攔截全部有適宜類型的缺點catchAll表示默許的錯誤處置活動86業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范異常處置器會嘗試三種處理方案:1分析該錯誤信息,并根據(jù)指定規(guī)那么找到對應(yīng)的適宜的行為進展處置;2運用一個rethrow行為,向外再次拋出一個錯誤3強迫終止該流程的執(zhí)行。87業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范實例8:異常處置 activity 88當(dāng)異常在特定的Scope內(nèi)產(chǎn)生時,假設(shè)被Scope內(nèi)內(nèi)定義的faultHandler捕獲,那么該Scope形狀被置為Failed,當(dāng)異常被處置后,外部Scope繼續(xù)執(zhí)行。假設(shè)異常無法被Scope內(nèi)的

33、faultHandler捕獲或無faultHandler定義,那么該Scope形狀被置為Failed,并且將異常拋出到外部Scope繼續(xù)處置,直到異常被處置為止。業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范89業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范BPEL事務(wù)與補償機制事務(wù):是指一組作為同一單元的活動,要么全面勝利,要么全部失敗。事務(wù)包括如下屬性:原子性 、一致性、隔離性 和耐久性ACID90業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范由于一個業(yè)務(wù)流程能夠需求繼續(xù)很長時間,而且流程能夠涉及到外部效力。在流程完成之前,單個活動能夠曾經(jīng)完成,假設(shè)隨后某個事件或錯誤發(fā)生而導(dǎo)致流程取消,曾經(jīng)完成的活動需求被恢復(fù)。在這種情況下

34、我們要運用補償機制來完成義務(wù)。91業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范補償處置是為了將流程的形狀回滾,回到跟進入作用域前一樣。所需求做的就是將該作用域內(nèi)已執(zhí)行部分采用其它行為進展撤銷,通常是調(diào)用一個效果相反的效力。經(jīng)過補償處置程序,作用域可以描畫一部分經(jīng)過運用程序定義的方式可撤銷的行為。有補償處置程序的作用域可不受約束恣意深地被嵌套。92業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范補償處置程序僅僅是補償活動的包裝。在許多情況下,補償處置程序需求接納當(dāng)前形狀的數(shù)據(jù)并前往關(guān)于補償結(jié)果的數(shù)據(jù)。補償處置程序的調(diào)用方法是運用compensate活動。93業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范事件處置程序:整個流程以及每

35、個作用域可以與一組在相應(yīng)的事件發(fā)生時并發(fā)調(diào)用事件處置程序相關(guān)聯(lián)。在事件處置程序中進展任何類型的活動,但是不允許運用調(diào)用補償處置程序。事件處置機制從作用域的一開場就激活,不斷等待事件的到來而執(zhí)行內(nèi)部行為,也會隨著作用域的終了而終了。94業(yè)務(wù)流程執(zhí)行言語WS-BPEL規(guī)范有兩種類型的事件:與WSDL中懇求/呼應(yīng)或單向操作對應(yīng)的傳入音訊;用戶設(shè)置的時間過后發(fā)出的警報。 95第2部分目前主流的WS-BPEL引擎96目前主流的WS-BPEL引擎BPEL中心組件有三部分組成BPEL設(shè)計工具BPEL Designer業(yè)務(wù)流模板Process flow templateBPEL引擎BPEL Engine97目

36、前主流的WS-BPEL引擎BPEL設(shè)計工具 大多基于Eclipse實現(xiàn)。業(yè)務(wù)流模板 業(yè)務(wù)流模板遵守BPEL規(guī)范。它在設(shè)計階段有BPEL設(shè)計工具生成,運轉(zhuǎn)階段由BPEL引擎執(zhí)行。98目前主流的WS-BPEL引擎BPEL引擎執(zhí)行任何與BPEL規(guī)范相符的業(yè)務(wù)流模板,主要功能包括調(diào)用Web效力,數(shù)據(jù)內(nèi)容映射,錯誤處置,事務(wù)支持,平安等等。 通常BPEL引擎與運用效力器集成在一同。99目前主流的WS-BPEL引擎舉個簡單例子來了解一下上述概念:比如說一個審理文件的任務(wù)流系統(tǒng)。如今要審批一個文件,他只需求坐在電腦旁,翻開公司的任務(wù)流系統(tǒng),點擊某個按鈕來啟動審批這個文件的流程。這樣,他的文件就隨著任務(wù)流系統(tǒng)

37、的控制,從一級指點-二級指點等等一路走了下來。當(dāng)然,這些指點們也是這個系統(tǒng)的用戶,他們進入這個系統(tǒng)就看到了本人需求審批他的文件了100目前主流的WS-BPEL引擎在上面這個例子中,流程普通是用流程設(shè)計器也就對應(yīng)上文的BPEL設(shè)計工具來創(chuàng)建的。把流程創(chuàng)建好之后,普通會生成一個基于XML的文本文件對應(yīng)業(yè)務(wù)流模板,這個文件其實就是他剛剛設(shè)計的流程。然后,他把文件交給流程引擎,設(shè)計器的任務(wù)就算完成了嗯?那引擎是什么?101目前主流的WS-BPEL引擎2引擎是什么?只需上面的流程文件沒什么作用,這時就需求一個“東西來處置這個文件了,它讀取這個文件的內(nèi)容,根據(jù)文件設(shè)定的流程走向來控制這個流程。這個關(guān)鍵性的

38、“東西就是引擎。引擎就好似流程的指南針一樣,指點著流程走向不同的地方。它是整個系統(tǒng)的中心102目前主流的WS-BPEL引擎目前主流的WS-BPEL引擎有以下幾個:Oracle BPEL Process Manager 甲骨文公司的BPEL規(guī)范的執(zhí)行,帶有JDeveloper和Eclipse的圖像式模型和調(diào)配工具IBM的WBI Server FoundationBEA Integration103目前主流的WS-BPEL引擎開源的:ActiveVOS 一個開放源代碼的BPEL4WS 1.1的執(zhí)行Twiste 一個開放源代碼的BPEL規(guī)范的執(zhí)行,支持面向效力架構(gòu)和人機界面,現(xiàn)名Agilabexee

39、fivesight-pxe104目前主流的WS-BPEL引擎開源的WS-BPEL引擎:ActiveVOSActiveVOS是ActiveBPEL的商業(yè)化產(chǎn)品。ActiveBPEL引擎的最新版本3.0,完全支持WS-BPEL2.0規(guī)范。其包含引擎和定制工具以及控制臺。引擎是開源,但是定制工具并非開源。ActiveBPEL 是BPEL引擎的代表。105目前主流的WS-BPEL引擎ActiveBPEL 引擎在構(gòu)造上有三個主要的方面 : 引擎 engine, 流程process和活動 activity。 引擎執(zhí)行相匹配的一個或多個 BPEL 流程 , 流程由活動組成 , 并按照活動的順序或包含 LIN

40、K 執(zhí)行 。ActiveBPEL 引擎根據(jù) BPEL 流程的定義 (XML 文件 ) 創(chuàng)建流程實例 , 并執(zhí)行這個流程。106目前主流的WS-BPEL引擎引擎:107目前主流的WS-BPEL引擎引擎圖中右邊的數(shù)據(jù)庫元素代表普通的耐久性存儲 . ActiveBPEL 引擎采用了插入式的構(gòu)造 , 不同的管理器可以執(zhí)行不同的存儲機制 . ActiveBPEL 引擎伴有一個繼續(xù)的管理者在內(nèi)存中記錄每件事。108目前主流的WS-BPEL引擎WS-BPEL引擎任務(wù)原理簡介:1啟動引擎利用一個引擎工廠管理一個 ActiveBPEL 引擎的創(chuàng)建。并經(jīng)過一個對象提供的缺省值并讀取aeEngineConfig.x

41、ml文件來配置引擎。2創(chuàng)建流程109目前主流的WS-BPEL引擎流程創(chuàng)建 每個 BPEL 流程必需至少有一個起始活動 . 一個新的 BPEL 流程當(dāng)它的起始活動被觸發(fā)時創(chuàng)建 , 也就是一個引入音訊或一個 PICK 活動的警報的到來 引擎分派引入的音訊給正確的流程實例 . 假設(shè)有相關(guān)的數(shù)據(jù) , 引擎就會發(fā)現(xiàn)正確的實例并匹配相關(guān)的數(shù)據(jù) . 假設(shè)沒有相關(guān)的數(shù)據(jù) , 懇求匹配一個新的活動 , 一個新的流程實例被創(chuàng)建 .110目前主流的WS-BPEL引擎流程創(chuàng)建圖示:111目前主流的WS-BPEL引擎3輸入和輸出Activebpel引擎本身并不處置輸入和輸出。 然而 , 協(xié)議規(guī)范處置器像 AeBpelR

42、PCHandler 和 AeBpelDocumentHandler 把數(shù)據(jù)從一種特殊的協(xié)議轉(zhuǎn)換為一種音訊 ,反之亦然。112目前主流的WS-BPEL引擎4數(shù)據(jù)處置一切變量的實現(xiàn)經(jīng)過 IAeVariable 接口。這個接口可以得到變量的定義和它的有效負(fù)載 , 假設(shè)變量被聲明成一種相對的元素或音訊 , 將會有所不同 音訊的負(fù)載需求一個和部件對象交互的接口 。113目前主流的WS-BPEL引擎5表達式計算一切活動和鏈接允許運用對象各種屬性的表達式。這些表達式需求一個相容的方法來執(zhí)行 并描畫執(zhí)行的相互關(guān)系。 IaeBpelObject對象本身可以包含這些實現(xiàn)并可以提供承繼于對象的籠統(tǒng)根本類.BPEL對

43、象是它本人的作用域并且可以被用來正確的找回表達式內(nèi)容的變量.賦值允許一切的XPATH擴展( for example, bpws:getVariableData )。114目前主流的WS-BPEL引擎6調(diào)試及日志Debugging and Logging在流程執(zhí)行期間 ,ActiveBPEL 引擎激活流程的事件 。當(dāng)日志啟動 , 一個 AEEngineLogger 實例監(jiān)聽引擎的事件并寫出每個流程的日志文件。一旦流程完成 , 文件封鎖日志文件放在user.home/AeBpelEngine/process-logs115目前主流的WS-BPEL引擎IBM的WS-BPEL引擎:WBI Server

44、 FoundationWBI Server Foundation由運轉(zhuǎn)環(huán)境和開發(fā)環(huán)境組成,它的開發(fā)環(huán)境是WSAD-IE,在WSAD-IE中完成流程開發(fā)后,將流程的EAR運用部署到運轉(zhuǎn)環(huán)境中WBI Server Foundation 的運轉(zhuǎn)環(huán)境提供一個高效的J2EE任務(wù)流引擎,它由流程導(dǎo)航(Navigator)、人員交相互關(guān)的任務(wù)項管理(WorkItem Management)、工廠(Factory)、內(nèi)部和外部接口、客戶端(Client)等部分組成116目前主流的WS-BPEL引擎WBI Server Foundation 的運轉(zhuǎn)環(huán)境:117目前主流的WS-BPEL引擎導(dǎo)航器:導(dǎo)航器組件是流程

45、引擎的中心,它管理一切流程實例的形狀過渡以及這些流程實例中一切活動的形狀過渡。任務(wù)項管理:Work Item Manager 組件擔(dān)任在流程引擎的數(shù)據(jù)庫中創(chuàng)建和刪除任務(wù)項,根據(jù)該數(shù)據(jù)庫分析來自流程參與者的任務(wù)項查詢等118目前主流的WS-BPEL引擎工廠:工廠組件擔(dān)任管理流程引擎處置的物理“形狀信息。流程相關(guān)的數(shù)據(jù)可以以以下方式之一被存儲: 瞬時存儲在內(nèi)存中,不可中斷的流程要獲得高效率的執(zhí)行需求這種方式 耐久存儲在數(shù)據(jù)庫中,可中斷的流程要獲得耐久性需求這種方式它支持的數(shù)據(jù)庫包括 DB2、Oracle、Sybase 和 Cloudscape。119目前主流的WS-BPEL引擎 外部接口:流程引擎對外提供EJB和JMS兩種接口,由Facade-Session EJB 和 Facade MDB 擔(dān)任外部接口的同步生成和異步生成。客戶端:Server Foundation提供了Web客戶端支持,同時用戶可以利用其API接口開發(fā)本人的客戶端。其他組件:流程引擎包含一個擔(dān)任產(chǎn)生診斷信息的跟蹤和記錄組件。120第3部分Apache ODE BPEL執(zhí)行引擎1211下載安裝包 apache

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論