




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、面向服務(wù)架構(gòu)第10章 服務(wù)組合BPELService Composition: BPELWeb服務(wù)組合是通過組合基本W(wǎng)eb服務(wù)提供增值服務(wù)的能力,這些基本W(wǎng)eb服務(wù)可能由別的組織提供。要點服務(wù)組合需要使用其它服務(wù)組合后形成的是一個具有新功能的服務(wù)服務(wù)組合使用的基本功能可以是組織外部的服務(wù)組合的概念服務(wù)組合挑戰(zhàn)服務(wù)組合實例Airline CAirline AAirline BInternetCheck Flight SchedulesWeb ServiceWeb ServiceWeb ServiceB2BApplicationsTravel AgencyDecisionMakingCompare
2、 OptionsCheck FlightSchedulesCheck Flight SchedulesIBM WebSphereSun JavaMicrosoft .NetWe are here!業(yè)務(wù)面臨的一個關(guān)鍵問題仍然是集成企業(yè)內(nèi)部集成 (Enterprise Application Integration, EAI)與合作伙伴的集成 (Business-to-Business Integration, B2Bi)企業(yè)聯(lián)盟Web services 走向面向服務(wù)計算應(yīng)用程序被視為“服務(wù)”松散耦合,動態(tài)交互異構(gòu)平臺沒有哪一方取得完全的控制權(quán)服務(wù)組合如何組合服務(wù)?服務(wù)組合目的Programmin
3、g in the large非程序員實現(xiàn)流程流程邏輯處理如何將功能點組合起來以解決更復(fù)雜的問題(如,處理一個訂單)Programming in the small程序員實現(xiàn)功能功能邏輯處理具體的細粒度的任務(wù) (如,獲取訂單文件或更新客戶記錄)兩種編程模型移植性和互操作性靈活的集成能力表達能力強,易于適應(yīng)底層服務(wù)的變更可細分, 基于類型的組合,使得:第三方能對已有服務(wù)進行組合為不同部門提供不同的的組合視圖提高可伸縮性和復(fù)用性有狀態(tài)會話和生命期管理支持多個有狀態(tài)長周期會話可恢復(fù)長周期的業(yè)務(wù)流程需要錯誤處理和恢復(fù)機制,以便管理錯誤和恢復(fù)錯誤對過程模型的需求業(yè)務(wù)流程交互模式使用Orchestratio
4、n,需要一個總控過程來控制涉及到的Web服務(wù),并協(xié)調(diào)Web服務(wù)不同操作的執(zhí)行。所涉及到的Web服務(wù)并不知道(也不必知道)它們是組合過程的一部分。只有中央的總控過程知道它們?nèi)绾谓M合和協(xié)調(diào)Choreography并不依賴中央的總控協(xié)調(diào)過程。相反,每個涉及其中的Web服務(wù)都知道何時執(zhí)行自己的操作,和誰交互。所有的Choreography參與者都需要知道業(yè)務(wù)流程,要執(zhí)行的操作,要交互的消息,和交換消息的時機Orchestration(編曲) vs Choreography(編舞)從組合Web服務(wù)來執(zhí)行業(yè)務(wù)流程的角度來看,Orchestration比Choreography更靈活:1、我們知道誰負責(zé)執(zhí)行
5、整個業(yè)務(wù)流程。2、即使Web服務(wù)并不知道它們是業(yè)務(wù)流程的一部分,仍然可以把它們組合起來。3、當(dāng)錯誤發(fā)生時,我們可以提供一個備選的ScenarioBPEL遵循Orchestration范式Orchestration(編曲) vs Choreography(編舞)Sample Purchase OrderPurchase Order RequestPurchase Order AcknowledgementPurchase Order ResponseBusiness “A”Business “B”Sample Business Process: Purchase OrderPO RequestS
6、end POReceive PO AckReceive PO ResponseReceive POSend PO AckSend PO ResponsePO AcknowledgementPO ResponseChoreography The observable public exchange of messagesPublic ProcessBusiness ABusiness BFrom a Choreography PerspectiveSend POReceive PO AckReceive PO ResponseTransformTransformFrom ERPTo ERPPO
7、RequestPO AcknowledgementPO ResponseOrchestration A private executable business processPrivate ProcessBusiness A BPEL WorkflowFrom an Orchestration PerspectiveBusinessBBusiness Analyst ToolBusinessASend POReceive PO AckReceive PO ResponseTransformTransformBusiness A BPEL WorkflowPO RequestPO Acknowl
8、edgementPO ResponseGenerate BPEL TemplateGenerate BPEL TemplateReceive POSend PO AckReceive PO ResponseTransformTransformBusiness B BPEL WorkflowTwo BPEL workflow templates reflecting a business agreementOrchestration and Choreography Together業(yè)務(wù)流程可執(zhí)行語言BPEL (Business Process Execution Language)是專為整合W
9、eb Services而制定的一項規(guī)范標準。描述商業(yè)活動的抽象高級語言IBM的WSFL支持圖形化的流程Microsoft的XLANG結(jié)構(gòu)化構(gòu)造方法BPEL描述流程可執(zhí)行工作流描述業(yè)務(wù)交互中參與者的實際行為;抽象流程描述各方參與者對外可見的消息交換。BPEL的作用是將一組現(xiàn)有的服務(wù)組合起來,從而定義一個新的Web服務(wù)。因此,BPEL基本上是一種實現(xiàn)此種組合的語言。組合服務(wù)的接口也被描述為WSDL portType的集合。BPEL簡介BPEL組合Web服務(wù)BPEL is the Web Services Orchestration standard from OASISbeepel, beepuh
10、l, bipuhlAn XML-based grammar for describing the logic to orchestrate the interaction between Web services in a business processBPEL Historical TimelineDec 2000Microsoft publishes XLANGMarch 2001IBM publishes WSFLJuly 2002March 2003BPEL4WS is submitted to OASISMay 20031stH 2007WS-BPEL 2.0 released W
11、S-BPEL歷史BPEL(*)(*) BPEL 1.1 authors, May 2003Getting the Players TogetherBPEL流程可以實現(xiàn)Web服務(wù)之間簡單交互或復(fù)雜交互的自動化支持長周期業(yè)務(wù)事務(wù)關(guān)聯(lián)消息交換實現(xiàn)活動的并發(fā)處理在合作方交互時映射數(shù)據(jù)提供一致的異常和恢復(fù)處理機制BPEL關(guān)注的問題WSDL定義了Web services具有無狀態(tài)的交互模型消息交換同步調(diào)用無關(guān)聯(lián)的異步調(diào)用大多數(shù) “現(xiàn)實世界的” 業(yè)務(wù)流程需要一個更強大的交互模型可以雙向交換消息,也可以點到點(peer-to-peer)的交換,并能持續(xù)特定時間(分、時、天)BPEL提供了描述有狀態(tài)的、長運行周
12、期的交互的能力為什么需要 BPEL?使用XML語言定義業(yè)務(wù)流程用流程分解和裝配的方式建立Web services模型在業(yè)務(wù)流程的外部(抽象)視圖和內(nèi)部(可執(zhí)行)視圖使用相同的編排方法使用層次化和圖形化的控制方式,減小過程建模的難度在應(yīng)用消息的級別上為流程實例提供一種識別機制在創(chuàng)建和停止流程實例時隱含基本的生命周期機制定義了一種長周期事務(wù)處理模型,支持長周期業(yè)務(wù)流程全部或其中某些部分的失敗恢復(fù)用模塊化和可組合的方式提供了兼容Web服務(wù)標準的語言BEPL設(shè)計目標描述業(yè)務(wù)流程的業(yè)界標準使用通用的語言和技術(shù)在設(shè)計上很自然地與Web services相適應(yīng)用XML描述使用并擴展了使用XML Schema
13、 1.0 作為數(shù)據(jù)模型在平臺和開發(fā)商間可移植理論上可以在任何BPEL兼容的引擎上運行在交互的過程間實現(xiàn)互操作在Web services stack的頂層BEPL的優(yōu)點WS-BPELXML, EncodingOther protocolsOther servicesTransportandEncodingBusinessProcessesWSDL, Policy, UDDI, InspectionDescriptionSecurityReliableMessagingTransactionsCoordinationSOAP (Logical Messaging)QualityOfServiceW
14、e are hereWS-BPEL in the WS-* StackWS-BPEL MyProcessinvokereceivereceiveinvokeinvokeHandlersfaulthandlereventhandlerfaulthandlercompensationhandlerterminationhandlereventhandlerPartnerLinksPartnerLink TypePortType 1PortType 2partnerlinkpartnerlinkVariables42WSDL MessageXML SchemaTypeXML SchemaElemen
15、tPropertiesCorrelation SetsProperty 1Property 2StructuredActivitiesif-elsewhilescopepicksequenceflowrepeatUntilforEachBasicActivitiesreceivereplyinvokethrowexitwaitemptycompensatevalidateassignrethrowextensionActivitycompensateScopeProcess Partner linksData handlingProperties and correlationBasic an
16、d structured activitiesScopesWS-BPEL 語言結(jié)構(gòu)processimports定義對外部XML Schema 或WSDL的依賴關(guān)系extensions定義WS-BPEL擴展的屬性和元素的名稱空間variables存儲業(yè)務(wù)流程或伙伴交互的狀態(tài)數(shù)據(jù)partnerlinksWS-BPEL過程在其行為中用到的關(guān)聯(lián)關(guān)系correlationsets應(yīng)用數(shù)據(jù)字段,它們共同標識了一個會話messageexchanges出站和進站消息活動的相關(guān)關(guān)系eventhandlers并發(fā)處理進站消息或計時器警報faulthandlers處理流程中的異常情形primaryactivity執(zhí)
17、行流程邏輯 任意個活動可以循環(huán)嵌套XMLschemasWSDLdefinitionsWS-BPEL 過程定義BPEL建立在WSDL服務(wù)模型之上,并對其進行了擴展WSDL 定義了允許的特定操作BPEL定義了 WSDL operations 如何被編排在一起滿足特定業(yè)務(wù)流程BPEL還定義了WSDL的擴展,以支持長周期異步業(yè)務(wù)流程BPEL-defined WSDL extensionsWS-BPEL 與WSDL的關(guān)系BPEL 流程與業(yè)務(wù)伙伴暴露的WSDL服務(wù)交互WebServiceLoan Approval ProcessWebServiceWSDLLoan ApprovalPortTypeFina
18、ncial InstitutionsWeb Service(Loan Approver)invokeInterfaces exposedby the BPEL processInterfaces consumedby the BPEL processreceivereplyRecursive CompositionPartner Link TypePartner Link TypeService PService AService BAs WSDLPs WSDLBs WSDLFinvokereceivereceiveinvokeinvokeWeb服務(wù)組合processpartnerlinkpa
19、rtner link typePeer-to-peer conversational partner relationshipWSDLport typemyRoleProvided port typeWSDLport typepartnerRoleRequired port typereceiveInbound request service provided by the processinvokeOutbound request service required by the processPartner Links Purchase Process WSDL:BPEL: Purchase
20、 Process PortType:Partners in BPEL . ? . partnerLinkType為了描述兩個服務(wù)之間的會話關(guān)系,伙伴鏈接類型定義了會話中每個服務(wù)所扮演的“角色”,并且指定了每個服務(wù)所提供的portType,以便接收會話的上下文中的消息。 每個角色的portType可以產(chǎn)生于不同的名稱空間,也在產(chǎn)生于相同的名稱空間。根據(jù)相同名稱空間中的portType來定義合作伙伴鏈接類型的兩個角色?;锇殒溄宇愋投x文檔可以是獨立于任一個服務(wù)的WSDL文檔的單獨構(gòu)件,也可以被放在定義portType的WSDL文檔中,這些portType也被用來定義不同的角色。有些情況下,定義僅包
21、含一個角色的伙伴鏈接類型是有意義的。在這種伙伴鏈接情形中,一個服務(wù)可以鏈接任何其他服務(wù)。 伙伴鏈接類型業(yè)務(wù)流程交互的服務(wù)被描述成伙伴鏈(partnerLinks)。每個伙伴鏈由partnerLinkType來描述。每個伙伴鏈都被命名。通過該伙伴鏈的所有服務(wù)交互。 屬性myRole指出了業(yè)務(wù)流程本身的角色,而屬性partnerRole指出了伙伴的角色。如果partnerLinkType僅有一個角色,那么將根據(jù)需要省略其中一個屬性。 + partnerLinks伙伴鏈表示兩個合作伙伴流程之間會話關(guān)系?;锇閜artner元素被定義為流程的伙伴鏈一部分?;锇槎x是可選的,并且不需要包含流程中定義的所有
22、伙伴鏈?;锇殒溄^不可以出現(xiàn)在多個伙伴定義中。 + + partnerWSDL的PortType使用抽象消息來定義抽象功能。port提供實際訪問信息,包括通信端點和其他與部署有關(guān)的信息。綁定使兩者連結(jié)在一起。服務(wù)的用戶必須靜態(tài)地依賴于由portType定義的抽象接口,但是在通常情況下可以動態(tài)地發(fā)現(xiàn)和使用port定義的信息。端點引用的基本用途是作為一種機制,用于服務(wù)的特定于端口的數(shù)據(jù)的動態(tài)通信。BPEL使用了WS-Addressing中定義的端點引用的概念。流程實例的partner link的每個伙伴角色被分配一個具有惟一性的端點引用,這可以在流程的部署過程中完成,也可以由流程中的某個活動動態(tài)地執(zhí)
23、行。端點引用(EndpointReference )processassignxsl:transformreceiverequestresponseinvokerequestreplyresponse42WSDLmessageWSDLmessageWSDLmessagesVariables defined using WSDL messages42XMLschemasXML Schemaelements / typesVariables defined using XML schema elements or types變量Variables業(yè)務(wù)流程指定了涉及伙伴之間消息交換的有狀態(tài)交互。業(yè)務(wù)
24、流程的狀態(tài)不僅包括被交換的消息,而且還包括用于業(yè)務(wù)邏輯和構(gòu)造發(fā)送給伙伴的消息的中間數(shù)據(jù)。 每個變量的類型可以是WSDL消息類型、XML Schema簡單類型或XML Schema元素。 屬于全局流程作用域的變量稱為全局變量;屬于流程作用域的變量稱為局部變量;每個變量只有在定義它的作用域和嵌套在它所屬于的作用域內(nèi)的全部作用域中才是可見的 +變量Variables Purchase Process WSDL:BPEL:Variables in BPELprocessXML schema elementWSDL pertypropertyalias類型化
25、的屬性映射到WSDL messages的parts上,或 XML schema 元素上propertypropertyalias屬性建立了一個具有特定語義的名字,比XML schema語義還豐富getVariableProperty( variable, property )屬性將流程邏輯從變量的定義細節(jié)中分離開來變量屬性process instance 3processcorrelation setcustomerIdorderNumberprocess instance 1process instance 2process instance 4receive提交購買訂單如何通過無狀態(tài)的We
26、b service接口識別有狀態(tài)的流程實例?長周期會話中的消息與正確的的流程實例關(guān)聯(lián)locatepurchaseOrdercId = 0815orderNo = 42receive查詢訂單狀態(tài)queryOrderStatuscustId = 0815oNo = 42customerIdorderNumber4(0815, 49)3(0815, 42)2(0707, 11)1(0311, 33)initiateprocess instance 3屬性和相關(guān)集(Correlation Sets)在面向?qū)ο箢I(lǐng)域通過對象引用進行有狀態(tài)的交互。對象引用本身提供了訪問具有合適的交互狀態(tài)和歷史的某個對象(實
27、例)的能力。這種方式適用于緊密耦合的實現(xiàn)。Web服務(wù)領(lǐng)域引用方式將造成實現(xiàn)之間脆弱的依賴關(guān)系;需要松散耦合機制實現(xiàn);避免在實例路由中使用特定于實現(xiàn)的標記。 在業(yè)務(wù)流程實例的生存期中,它通常與涉及它的伙伴進行多次會話,相關(guān)聯(lián)的會話涉及的參與者不止兩個,常常有必要提供應(yīng)用程序級的機制,以使消息和會話被匹配到預(yù)定的業(yè)務(wù)流程實例。 相關(guān)集BPEL提供了聲明性機制,以指定服務(wù)實例中相關(guān)聯(lián)的操作組。一組相關(guān)標記可定義為相關(guān)聯(lián)的組中所有消息共享的一組特性。這樣的一組特性稱為相關(guān)集。每個關(guān)聯(lián)集都在一個作用域中進行聲明并屬于該作用域。屬于全局流程作用域的關(guān)聯(lián)集稱為全局關(guān)聯(lián)集;屬于局部作用域,這樣的關(guān)聯(lián)集稱為局部
28、關(guān)聯(lián)集。在流程開始時,全局關(guān)聯(lián)集處于未初始化的狀態(tài)。在其所屬的作用域的執(zhí)行開始時,本地關(guān)聯(lián)集處于未初始化的狀態(tài)。相關(guān)集在其語義上類似于延遲綁定的常數(shù)。相關(guān)集的綁定由特別標記的消息發(fā)送或接收操作來觸發(fā)。相關(guān)集在其所屬的作用域的生存期中只能初始化一次。在初始化之后,它的值就可被認為是業(yè)務(wù)流程實例的標識的別名。相關(guān)集在多方業(yè)務(wù)協(xié)議中初始者流程發(fā)送啟動會話的第一個消息,從而定義了標記該對話的相關(guān)集中的特性值。所有其他參與者通過接收提供相關(guān)集中的特性值的傳入消息來綁定會話中的相關(guān)集。初始者和其他參與者都必須發(fā)送啟動會話的第一個消息,從而定義標記會話的相關(guān)集中的特性值。相關(guān)集的名稱用在invoke、rec
29、eive和reply活動中,也用在pick活動的onMessage分支中,同時還用在事件處理程序的onMessage形式中。? + 相關(guān)集processscopescopescopescopescopescopescope范圍提供了一個上下文環(huán)境,它影響其中包含的活動的執(zhí)行行為獨立范圍為并發(fā)訪問共享資源提供了控制機制scope局部定義 partner links, message exchanges, variables, correlation sets局部處理 event handlers, fault handlers, a termination handler, and a comp
30、ensation handlerCompensation handler取消已經(jīng)完成的活動造成的持久效果Termination handler 處理對范圍的強制停止 (external faults)primary activityscopeScopes對invoke活動的故障響應(yīng)是故障的來源之一,根據(jù)WSDL操作中的故障定義,該故障有顯式給出的名稱和數(shù)據(jù)部分。程序化地拋出throw活動是故障的另一個來源,它也有顯式給出的名稱和數(shù)據(jù)。故障處理程序通過補償處理程序,作用域可以描述一部分通過應(yīng)用程序定義的方式可撤銷的行為。有補償處理程序的作用域可不受約束任意深地嵌套。補償處理程序僅僅是補償活動的包
31、裝。在許多情況下,補償處理程序需要接收當(dāng)前狀態(tài)的數(shù)據(jù)并返回關(guān)于補償結(jié)果的數(shù)據(jù)。補償處理程序的調(diào)用方法是使用compensate活動。 ? activity補償處理程序整個流程以及每個作用域可以與一組在相應(yīng)的事件發(fā)生時并發(fā)調(diào)用事件處理程序相關(guān)聯(lián)。在事件處理程序中進行任何類型的活動,但是不允許使用調(diào)用補償處理程序。有兩種類型的事件:與WSDL中請求/響應(yīng)或單向操作對應(yīng)的傳入消息;用戶設(shè)置的時間過后發(fā)出的警報。事件處理程序? * ? + activity * activity 事件處理程序onMessage標志表示指定的事件是一個等待消息到達的事件。這個標記及其屬性的解釋類似于receive活動。p
32、artnerLink屬性定義請求將到達的合作伙伴鏈接。portType和operation屬性是合作伙伴為引發(fā)事件而調(diào)用的適當(dāng)端口類型和操作。變量屬性標識包含從合作伙伴接收到的消息的變量。onAlarm標志標記超時事件。for屬性指定該事件發(fā)生之前的持續(xù)時間。計算持續(xù)時間的計時在相關(guān)的作用域的執(zhí)行開始的時刻響起。until屬性指定發(fā)出警報的特定時刻。這兩個屬性中僅有一個必須出現(xiàn)在任何onAlarm事件中。 事件處理程序ProcessBPEL中定義的業(yè)務(wù)流程表示有狀態(tài)的Web services當(dāng)流程啟動,將通過流程定義創(chuàng)建一個新實例BPEL流程實例的創(chuàng)建和銷毀隱含在設(shè)計中receivereply
33、invokeinvokeinvoke流程實例的生命周期WS-BPEL MyProcessinvokereceivereceiveinvokeinvokeHandlersfaulthandlereventhandlerfaulthandlercompensationhandlerterminationhandlereventhandlerPartnerLinksPartnerLink TypePortType 1PortType 2partnerlinkpartnerlinkVariables42WSDL MessageXML SchemaTypeXML SchemaElementPropert
34、iesCorrelation SetsProperty 1Property 2StructuredActivitiesif-elsewhilescopepicksequenceflowrepeatUntilforEachBasicActivitiesreceivereplyinvokethrowexitwaitemptycompensatevalidateassignrethrowextensionActivitycompensateScopeProcess Partner linksData handlingProperties and correlationBasic and struct
35、ured activitiesScopesWS-BPEL 語言結(jié)構(gòu)processimports定義對外部XML Schema 或WSDL的依賴關(guān)系extensions定義WS-BPEL擴展的屬性和元素的名稱空間variables存儲業(yè)務(wù)流程或伙伴交互的狀態(tài)數(shù)據(jù)partnerlinksWS-BPEL過程在其行為中用到的關(guān)聯(lián)關(guān)系correlationsets應(yīng)用數(shù)據(jù)字段,它們共同標識了一個會話messageexchanges出站和進站消息活動的相關(guān)關(guān)系eventhandlers并發(fā)處理進站消息或計時器警報faulthandlers處理流程中的異常情形primaryactivity執(zhí)行流程邏輯 任意
36、個活動可以循環(huán)嵌套XMLschemasWSDLdefinitionsWS-BPEL 過程定義BPEL建立在WSDL服務(wù)模型之上,并對其進行了擴展WSDL 定義了允許的特定操作BPEL定義了 WSDL operations 如何被編排在一起滿足特定業(yè)務(wù)流程BPEL還定義了WSDL的擴展,以支持長周期異步業(yè)務(wù)流程BPEL-defined WSDL extensionsWS-BPEL 與WSDL的關(guān)系BPEL 流程與業(yè)務(wù)伙伴暴露的WSDL服務(wù)交互WebServiceLoan Approval ProcessWebServiceWSDLLoan ApprovalPortTypeFinancial In
37、stitutionsWeb Service(Loan Approver)invokeInterfaces exposedby the BPEL processInterfaces consumedby the BPEL processreceivereplyRecursive CompositionPartner Link TypePartner Link TypeService PService AService BAs WSDLPs WSDLBs WSDLFinvokereceivereceiveinvokeinvokeWeb服務(wù)組合processpartnerlinkpartner li
38、nk type業(yè)務(wù)伙伴間點到點的會話關(guān)系WSDLport typemyRoleProvided port typeWSDLport typepartnerRoleRequired port typereceive入站請求 BPEL流程提供的服務(wù)invoke出站請求BPEL流程需要的服務(wù)Partner Links Purchase Process WSDL:BPEL: Purchase Process PortType:PartnerLink in BPEL . ? . partnerLinkType為了描述兩個服務(wù)之間的會話關(guān)系,伙伴鏈接類型定義了會話中每個服務(wù)所扮演的“角色”,并且指定了每個
39、服務(wù)所提供的portType,以便接收會話的上下文中的消息。 每個角色的portType可以產(chǎn)生于不同的名稱空間,也可產(chǎn)生相同的名稱空間。根據(jù)相同名稱空間中的portType來定義合作伙伴鏈接類型的兩個角色?;锇殒溄宇愋投x文檔可以是獨立于任一個服務(wù)的WSDL文檔的單獨構(gòu)件,也可以被放在定義portType的WSDL文檔中,這些portType也被用來定義不同的角色。有些情況下,定義僅包含一個角色的伙伴鏈接類型是有意義的。在這種伙伴鏈接情形中,一個服務(wù)可以鏈接任何其他服務(wù)。 伙伴鏈接類型業(yè)務(wù)流程交互的服務(wù)被描述成伙伴鏈(partnerLinks)。每個伙伴鏈由partnerLinkType來描
40、述。每個伙伴鏈都被命名。通過該伙伴鏈的所有服務(wù)交互。 屬性myRole指出了業(yè)務(wù)流程本身的角色,而屬性partnerRole指出了伙伴的角色。如果partnerLinkType僅有一個角色,那么將根據(jù)需要省略其中一個屬性。 + partnerLinks伙伴partner元素被定義為流程的伙伴鏈一部分?;锇槎x是可選的,并且不需要包含流程中定義的所有伙伴鏈?;锇殒溄^不可以出現(xiàn)在多個伙伴定義中。 版本已去除 + + partnerWSDL的PortType使用抽象消息來定義抽象功能。port提供實際訪問信息,包括通信端點和其他與部署有關(guān)的信息。綁定使兩者連結(jié)在一起。服務(wù)的用戶必須靜態(tài)地依賴于由po
41、rtType定義的抽象接口,但是在通常情況下可以動態(tài)地發(fā)現(xiàn)和使用port定義的信息。端點引用的基本用途是為服務(wù)提供一種特定于端口(port)的數(shù)據(jù)的動態(tài)通信機制。端點引用使得WS-BPEL可以為特定類型的服務(wù)動態(tài)選擇一個提供者,并調(diào)用其上的操作。BPEL使用了WS-Addressing中定義的端點引用的概念。流程實例的partner link的每個伙伴角色被分配一個具有惟一性的端點引用,這可以在流程的部署過程中完成,也可以由流程中的某個活動動態(tài)地執(zhí)行。端點引用(Endpoint Reference, EPR)processassignxsl:transformreceiverequestres
42、ponseinvokerequestreplyresponse42WSDLmessageWSDLmessageWSDLmessages變量用WSDL消息來定義42XMLschemasXML Schemaelements / types變量用XML Schema的元素或類型來定義變量Variables業(yè)務(wù)流程指定了涉及伙伴之間消息交換的有狀態(tài)交互。業(yè)務(wù)流程的狀態(tài)不僅包括被交換的消息,而且還包括用于業(yè)務(wù)邏輯和構(gòu)造發(fā)送給伙伴的消息的中間數(shù)據(jù)。 每個變量的類型可以是WSDL消息類型、XML Schema簡單類型或XML Schema元素。 屬于全局流程作用域的變量稱為全局變量;屬于流程作用域的變量稱為
43、局部變量;每個變量只有在定義它的作用域和嵌套在它所屬于的作用域內(nèi)的全部作用域中才是可見的 +變量Variables Purchase Process WSDL:BPEL:Variables in BPELprocessXML schema elementWSDL pertypropertyalias類型化的屬性映射到WSDL messages的parts上,或 XML schema 元素上propertypropertyalias屬性用于引用消息或變量中的全部或部分數(shù)據(jù),常用于相關(guān)集getVariableProperty( variable, pr
44、operty )屬性將流程邏輯從變量的定義細節(jié)中分離開來消息屬性(Message Properties) . .propertyAlias:property:消息屬性(Message Properties)process instance 3processcorrelation setcustomerIdorderNumberprocess instance 1process instance 2process instance 4receive提交購買訂單如何通過無狀態(tài)的Web service接口識別有狀態(tài)的流程實例?長周期會話中的消息與正確的的流程實例關(guān)聯(lián)locatepurchaseOrd
45、ercId = 0815orderNo = 42receive查詢訂單狀態(tài)queryOrderStatuscustId = 0815oNo = 42customerIdorderNumber4(0815, 49)3(0815, 42)2(0707, 11)1(0311, 33)initiateprocess instance 3屬性和相關(guān)集(Correlation Sets)在面向?qū)ο箢I(lǐng)域通過對象引用進行有狀態(tài)的交互。對象引用本身提供了訪問具有合適的交互狀態(tài)和歷史的某個對象(實例)的能力。這種方式適用于緊密耦合的實現(xiàn)。Web服務(wù)領(lǐng)域引用方式將造成實現(xiàn)之間脆弱的依賴關(guān)系;需要松散耦合機制實現(xiàn);避
46、免在實例路由中使用特定于實現(xiàn)的標記。 在業(yè)務(wù)流程實例的生存期中,它通常與涉及它的伙伴進行多次會話,相關(guān)聯(lián)的會話涉及的參與者不止兩個,常常有必要提供應(yīng)用程序級的機制,以使消息和會話被匹配到預(yù)定的業(yè)務(wù)流程實例。 相關(guān)集BPEL提供了聲明性機制,以指定服務(wù)實例中相關(guān)聯(lián)的操作組。一組相關(guān)標記可定義為相關(guān)聯(lián)的組中所有消息共享的一組特性。這樣的一組特性稱為相關(guān)集。每個關(guān)聯(lián)集都在一個作用域中進行聲明并屬于該作用域。屬于全局流程作用域的關(guān)聯(lián)集稱為全局關(guān)聯(lián)集;屬于局部作用域,這樣的關(guān)聯(lián)集稱為局部關(guān)聯(lián)集。在流程開始時,全局關(guān)聯(lián)集處于未初始化的狀態(tài)。在其所屬的作用域的執(zhí)行開始時,本地關(guān)聯(lián)集處于未初始化的狀態(tài)。相關(guān)集
47、在其語義上類似于延遲綁定的常數(shù)。相關(guān)集的綁定由特別標記的消息發(fā)送或接收操作來觸發(fā)。相關(guān)集在其所屬的作用域的生存期中只能初始化一次。在初始化之后,它的值就可被認為是業(yè)務(wù)流程實例的標識的別名。相關(guān)集在多方業(yè)務(wù)協(xié)議中,三種情況發(fā)起者流程發(fā)送啟動會話的第一個消息,從而定義了標記該對話的相關(guān)集中的特性值。所有其他參與者通過接收提供相關(guān)集中的特性值的傳入消息來綁定會話中的相關(guān)集。發(fā)起者和其他參與者都必須發(fā)送啟動會話的第一個消息,從而定義標記會話的相關(guān)集中的特性值。相關(guān)集的名稱用在invoke、receive和reply活動中,也用在pick活動的onMessage分支中,flow活動的link中,同時還用
48、在事件處理程序的onMessage形式中。? + 相關(guān)集processscopescopescopescopescopescopescope范圍提供了一個上下文環(huán)境,它影響其中包含的活動的執(zhí)行行為獨立范圍為并發(fā)訪問共享資源提供了控制機制scope局部定義 partner links, message exchanges, variables, correlation sets局部處理 event handlers, fault handlers, a termination handler, and a compensation handlerCompensation handler取消已經(jīng)完
49、成的活動造成的持久效果Termination handler 處理對范圍的強制停止 (external faults)primary activityscopeScopes故障處理是因發(fā)生故障而切換到撤銷發(fā)生故障的作用域中的部分或不成功的工作。故障處理程序提供了定義一組自定義的故障處理活動的方法,句法上定義為catch活動。定義的每個catch活動能攔截某種特定的故障(由全局惟一的故障QName和有與該故障相關(guān)聯(lián)的數(shù)據(jù)的變量來定義)。如果沒有故障名,那么catch將攔截全部有適合類型的故障數(shù)據(jù)的故障。使用catch處理程序中的faultVariable屬性來指定故障變量。 activity a
50、ctivity 故障處理程序Try-catch-throw機制原理活動Atry活動2活動1try活動活動throw活動異常異常處理catchthrow異常處理catch對invoke活動的故障響應(yīng)是故障的來源之一,故障由顯式給出的名稱和數(shù)據(jù)部分組成。程序化地拋出throw活動是故障的另一個來源,它也有顯式給出的名稱和數(shù)據(jù)。故障處理程序通過補償處理程序,作用域可以描述通過應(yīng)用程序定義的方式可撤銷的行為。有補償處理程序的作用域可不受約束任意深地嵌套。補償處理程序僅僅是用于補償?shù)幕顒拥陌b。在許多情況下,補償處理程序需要接收當(dāng)前狀態(tài)的數(shù)據(jù)并返回關(guān)于補償結(jié)果的數(shù)據(jù)。補償處理程序的調(diào)用方法是使用comp
51、ensate活動。 ? activity補償處理程序整個流程以及每個作用域可以與一組在相應(yīng)的事件發(fā)生時并發(fā)的調(diào)用的事件處理程序相關(guān)聯(lián)。在事件處理程序中進行任何類型的活動,但是不允許使用調(diào)用補償處理程序。有兩種類型的事件:與WSDL中請求/響應(yīng)或單向操作對應(yīng)的傳入消息;用戶設(shè)置的時間過后發(fā)出的警報。事件處理程序? * ? + activity * activity 事件處理程序onMessage標志表示指定的事件是一個等待消息到達的事件。這個標記及其屬性的解釋類似于receive活動。partnerLink屬性定義請求將到達的合作伙伴鏈接。portType和operation屬性是合作伙伴為引發(fā)
52、事件而調(diào)用的適當(dāng)端口類型和操作。變量屬性標識包含從合作伙伴接收到的消息的變量。onAlarm標志標記超時事件。for屬性指定該事件發(fā)生之前的持續(xù)時間。計算持續(xù)時間的計時在相關(guān)的作用域的執(zhí)行開始的時刻響起。until屬性指定發(fā)出警報的特定時刻。這兩個屬性中僅有一個必須出現(xiàn)在任何onAlarm事件中。 事件處理程序processreceivereplyinvoke調(diào)用一個單向或請求-響應(yīng)操作阻塞并等待匹配的消息來臨/發(fā)送一個回復(fù)消息validateassign用新數(shù)據(jù)更新變量或partner links的值驗證變量中存儲的XML消息throwrethrow從業(yè)務(wù)流程內(nèi)部生成一個錯誤(fault)從
53、錯誤處理器中發(fā)送一個錯誤(fault)exit立即停止一個業(yè)務(wù)流程實例的執(zhí)行compensatecompensateScope以缺省的順序在所有完成的子域上調(diào)用補償 (compensation)在一個完成的子域上調(diào)用補償wait等待給定的時間段或直到特定時間點empty業(yè)務(wù)流程中的空節(jié)點extensionActivityBPEL語言擴展的封裝Basic Activitiesterminate我們重點講解廣泛使用的規(guī)范構(gòu)造業(yè)務(wù)流程阻塞等待匹配消息的到達實例化業(yè)務(wù)流程的惟一方法是receive活動,把 createInstance屬性設(shè)置為“yes” 。該屬性的缺省值是“no”。 standard
54、-elements ? + receive構(gòu)造業(yè)務(wù)流程發(fā)送消息以應(yīng)答通過接收到的消息。receive和reply的組合為流程構(gòu)成了在WSDL portType上的請求-響應(yīng)操作。 standard-elements ? + reply允許業(yè)務(wù)流程調(diào)用由合作伙伴在portType上提供的單向或請求-響應(yīng)操作。異步調(diào)用僅需要操作的輸入變量;同步調(diào)用既需要輸入變量,又需要輸出變量。invoke standard-elements ? + ? activity invokeInvoke Invoke Reply Receive 例子.例子的作用是用新的數(shù)據(jù)來更新變量的值。assign可以包括任意數(shù)量的
55、基本賦值。 assign還可把端點引用復(fù)制到合作伙伴鏈接,或把合作伙伴鏈接復(fù)制到端點引用(服務(wù)的動態(tài)綁定)。 standard-elements + from-spec to-spec assignfrom-spec必須是以下形式中的一種: . literal value . to-spec必須是以下形式中的一種: assign從業(yè)務(wù)流程中生成故障。使用throw發(fā)出內(nèi)部故障。每個故障需要有一個全局惟一的QName,還可選提供數(shù)據(jù)的變量。故障處理程序可以使用這種數(shù)據(jù),來分析和處理該故障并植入需被發(fā)送到其他服務(wù)的所有故障消息。 standard-elementsthrow可以用于立即終止當(dāng)前正在
56、運行的業(yè)務(wù)流程實例。所有當(dāng)前正在運行的活動必須盡可能快地終止,而且沒有任何故障處理或補償行為。 standard-elementsterminate構(gòu)造允許等待一段給定的時間或等到某一時刻。必須確切地指定wait中一個到期條件。 standard-elementswait允許在業(yè)務(wù)流程中插入“no-op”指令。empty可用于并行活動的同步。 standard-elementsempty與語義 將使已正常執(zhí)行完的內(nèi)層作用域上調(diào)用補償處理程序。compensate定義了執(zhí)行補償所在的作用域。僅當(dāng)作用域正常完成執(zhí)行之后該作用域的補償處理程序才可被調(diào)用。顯式地執(zhí)行compensate活動的能力是BP
57、EL應(yīng)用程序錯誤處理框架的基礎(chǔ)所在。該活動只能用于業(yè)務(wù)流程的以下部分中: 在作用域的 fault 處理程序中,該作用域包括補償將被執(zhí)行的作用域。在作用域的補償處理程序中,該作用域包括補償將被執(zhí)行的作用域。 standard-elementscompensatecompensateScope_1Scope_1_1Scope_1_1_1faultHandlersScope_1Scope_1_1Scope_1_1_1faultHandlersprocessflow包含的活動并發(fā)執(zhí)行,可以用link指定順序sequence包含的活動順序執(zhí)行while當(dāng)預(yù)定的條件滿足時,包含的活動重復(fù)執(zhí)行repeatU
58、ntil包含的活動重復(fù)執(zhí)行直到預(yù)設(shè)條件滿足為止pick阻塞并等待一個消息的來臨(或時間超時)forEach由一個指定的計數(shù)器變量控制,包含的活動順序執(zhí)行或并發(fā)執(zhí)行多次if-elseif-else多選一scope將一組活動關(guān)聯(lián)起來,使之具有共同的本地變量、伙伴連接、處理器等2.N.1.BCAccc1c22.N.1.AM2M1Structured Activitiesswitch我們重點講解廣泛使用的規(guī)范定義一組按順序先后執(zhí)行的活動。執(zhí)行順序是sequence元素中被列出活動的先后順序。 當(dāng)sequence中的最后一個活動完成后,該sequence活動也就完成了。 standard-element
59、s activity+sequence允許從一組分支中只選擇一個活動分支。switch由case元素定義的一個或多個條件分支的有序列表組成,后面可跟也可以不跟一個otherwise分支。以case分支的出現(xiàn)順序檢查,第一個條件是true的分支被選擇并被作為被執(zhí)行的活動。如果有條件的分支都未被選擇,那么otherwise分支將被選擇。 standard-elements + activity ? activity switch當(dāng)預(yù)定的條件滿足時,包含的活動重復(fù)執(zhí)行。 standard-elements activitywhile阻塞并等待某一個合適的消息的到達或超時警報響起。當(dāng)其中一個觸發(fā)器觸發(fā)
60、后,相關(guān)的活動就被執(zhí)行,pick也隨即完成了。pick活動等待一組相互排斥事件中的一個事件的發(fā)生,然后執(zhí)行與發(fā)生的事件相關(guān)聯(lián)的活動。如果多個事件發(fā)生,那么按照時間發(fā)生先后或選擇原則確定發(fā)生事件。當(dāng)業(yè)務(wù)流程的實例的創(chuàng)建是由于接收到一組可能的消息中的一個消息而發(fā)生的時,可以使用pick形式。每個pick活動必須至少包括一個onMessage事件。onMessage事件的語義等同于有關(guān)變量屬性的可選類型的receive活動。pick standard-elements + ? + activity * activity pick結(jié)構(gòu)指定一個或多個并行地執(zhí)行的活動。為了定義任意的控制結(jié)構(gòu),可以在并行的
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京汽車托運合同范本
- 2025年泰州貨運從業(yè)資格證怎么考
- 修復(fù)車交易合同范本
- 醫(yī)院弱電集成合同范本
- 制衣廠勞動合同范本
- 主廚合同范本
- 與中介定金合同范本
- 棉花勞務(wù)合同范本
- 冠名使用合同范本
- 勞動合同范本完整
- 2020年8月自考00371公安決策學(xué)試題及答案含解析
- 2024年CNCERT-CCSC管理Ⅱ級理論考試題庫及答案
- T-CARM 002-2023 康復(fù)醫(yī)院建設(shè)標準
- 《電線電纜介紹》課件
- 汽車驅(qū)動橋橋殼的優(yōu)化設(shè)計
- 幼兒園活動區(qū)自制玩學(xué)具及其效用研究
- 中國古代史選擇題50題專練 高考歷史統(tǒng)編版二輪復(fù)習(xí)
- 概念階段定義產(chǎn)品包需求指南
- 秸稈的綜合利用課件
- 熊膽粉知識講座
- 《小兒過敏性紫癜》課件
評論
0/150
提交評論