版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
服务计算基础主讲:李伟刚liweigang@西北工业大学软件与微电子学院第六章服务组合主要内容服务组合业务流程BPEL概述BPEL结构BPEL表示法及其处理BPEL相关产品和资源第一节服务组合Web服务组合是通过组合基本Web服务提供增值服务的能力,这些基本Web服务可能由别的组织提供。要点服务组合需要使用其它服务组合后形成的是一个具有新功能的服务服务组合使用的基本功能可以是组织外部的服务组合的概念服务组合——挑战服务组合——实例AirlineCAirlineAAirlineBInternetCheckFlightSchedulesWebServiceWebServiceWebService
B2BApplicationsTravelAgencyDecisionMakingCompareOptionsCheckFlightSchedulesCheckFlightSchedulesIBMWebSphereSunJavaMicrosoft.NetWearehere!业务面临的一个关键问题仍然是集成企业内部集成(EnterpriseApplicationIntegration,EAI)与合作伙伴的集成(Business-to-BusinessIntegration,B2Bi)企业联盟Webservices
走向面向服务计算应用程序被视为“服务”松散耦合,动态交互异构平台没有哪一方取得完全的控制权服务组合如何组合服务?服务组合——目的第二节业务流程Programminginthelarge非程序员实现流程流程逻辑处理如何将功能点组合起来以解决更复杂的问题(如,处理一个订单)Programminginthesmall程序员实现功能功能逻辑处理具体的细粒度的任务(如,获取订单文件或更新客户记录)两种编程模型移植性和互操作性灵活的集成能力表达能力强,易于适应底层服务的变更可细分,基于类型的组合,使得:第三方能对已有服务进行组合为不同部门提供不同的的组合视图提高可伸缩性和复用性有状态会话和生命期管理支持多个有状态长周期会话可恢复长周期的业务流程需要错误处理和恢复机制,以便管理错误和恢复错误对过程模型的需求业务流程交互模式使用Orchestration,需要一个总控过程来控制涉及到的Web服务,并协调Web服务不同操作的执行。所涉及到的Web服务并不知道(也不必知道)它们是组合过程的一部分。只有中央的总控过程知道它们如何组合和协调Choreography并不依赖中央的总控协调过程。相反,每个涉及其中的Web服务都知道何时执行自己的操作,和谁交互。所有的Choreography参与者都需要知道业务流程,要执行的操作,要交互的消息,和交换消息的时机Orchestration(编曲)vsChoreography(编舞)从组合Web服务来执行业务流程的角度来看,Orchestration比Choreography更灵活:
1、我们知道谁负责执行整个业务流程。
2、即使Web服务并不知道它们是业务流程的一部分,仍然可以把它们组合起来。
3、当错误发生时,我们可以提供一个备选的ScenarioBPEL遵循Orchestration范式Orchestration(编曲)vsChoreography(编舞)SamplePurchaseOrderPurchaseOrderRequestPurchaseOrderAcknowledgementPurchaseOrderResponseBusiness
“A”Business“B”SampleBusinessProcess:PurchaseOrderPORequestSend
POReceivePOAckReceivePOResponseReceive
POSend
POAckSendPOResponsePOAcknowledgementPOResponseChoreography–TheobservablepublicexchangeofmessagesPublicProcessBusinessABusinessBFromaChoreographyPerspectiveSend
POReceivePOAckReceivePOResponseTransformTransformFromERPToERPPORequestPOAcknowledgementPOResponseOrchestration–AprivateexecutablebusinessprocessPrivateProcessBusinessABPELWorkflowFromanOrchestrationPerspectiveBusiness
BBusinessAnalystToolBusiness
ASend
POReceivePOAckReceivePOResponseTransformTransformBusinessABPELWorkflowPORequestPOAcknowledgementPOResponseGenerateBPEL
TemplateGenerateBPEL
TemplateReceive
POSendPOAckReceivePOResponseTransformTransformBusinessBBPELWorkflowTwoBPELworkflowtemplatesreflectingabusinessagreementOrchestrationandChoreographyTogether第三节BPEL概述业务流程可执行语言BPEL(BusinessProcessExecutionLanguage)是专为整合WebServices而制定的一项规范标准。描述商业活动的抽象高级语言IBM的WSFL—支持图形化的流程Microsoft的XLANG—结构化构造方法BPEL描述流程可执行工作流—描述业务交互中参与者的实际行为;抽象流程—描述各方参与者对外可见的消息交换。BPEL的作用是将一组现有的服务组合起来,从而定义一个新的Web服务。因此,BPEL基本上是一种实现此种组合的语言。组合服务的接口也被描述为WSDLportType的集合。BPEL简介BPEL——组合Web服务BPEListheWebServicesOrchestrationstandardfromOASISbee•pel’,beep’•uhl,bip’•uhlAnXML-basedgrammarfordescribingthelogictoorchestratetheinteractionbetweenWebservicesinabusinessprocessBPELHistoricalTimelineDec2000MicrosoftpublishesXLANGMarch2001IBMpublishesWSFLJuly2002IBM,MicrosoftandBEAconvergeWSFL&XLANGintoBPEL4WS1.0March2003BPEL4WSissubmittedtoOASISMay2003OASISpublishesBPEL4WS1.11stH2007WS-BPEL2.0releasedWS-BPEL历史BPEL1.1(*)(*)BPEL1.1authors,May2003WS-BPEL2.0GettingthePlayersTogetherBPEL流程可以实现Web服务之间简单交互或复杂交互的自动化支持长周期业务事务关联消息交换实现活动的并发处理在合作方交互时映射数据提供一致的异常和恢复处理机制BPEL关注的问题WSDL定义了Webservices具有无状态的交互模型消息交换同步调用无关联的异步调用大多数“现实世界的”业务流程需要一个更强大的交互模型可以双向交换消息,也可以点到点(peer-to-peer)的交换,并能持续特定时间(分、时、天)BPEL提供了描述有状态的、长运行周期的交互的能力为什么需要BPEL?使用XML语言定义业务流程用流程分解和装配的方式建立Webservices模型在业务流程的外部(抽象)视图和内部(可执行)视图使用相同的编排方法使用层次化和图形化的控制方式,减小过程建模的难度在应用消息的级别上为流程实例提供一种识别机制在创建和停止流程实例时隐含基本的生命周期机制定义了一种长周期事务处理模型,支持长周期业务流程全部或其中某些部分的失败恢复用模块化和可组合的方式提供了兼容Web服务标准的语言BEPL设计目标描述业务流程的业界标准使用通用的语言和技术在设计上很自然地与Webservices相适应用XML描述使用并扩展了WSDL1.1使用XMLSchema1.0作为数据模型在平台和开发商间可移植理论上可以在任何BPEL兼容的引擎上运行在交互的过程间实现互操作在Webservicesstack的顶层BEPL的优点WS-BPELXML,EncodingOtherprotocolsOtherservicesTransportandEncodingBusinessProcessesWSDL,Policy,UDDI,InspectionDescriptionSecurityReliableMessagingTransactionsCoordinationSOAP(LogicalMessaging)QualityOfServiceWearehereWS-BPELintheWS-*Stack第四节BPEL结构WS-BPELMyProcessinvokereceivereceiveinvokeinvokeHandlersfaulthandlereventhandlerfaulthandlercompensationhandlerterminationhandlereventhandlerPartnerLinksPartnerLinkTypePortType1PortType2partnerlinkpartnerlinkVariables42WSDLMessageXMLSchemaTypeXMLSchemaElementPropertiesCorrelationSetsProperty1Property2StructuredActivitiesif-elsewhilescopepicksequenceflowrepeatUntilforEachBasicActivitiesreceivereplyinvokethrowexitwaitemptycompensatevalidateassignrethrowextensionActivitycompensateScopeProcessPartnerlinksDatahandlingPropertiesandcorrelationBasicandstructuredactivitiesScopesWS-BPEL语言结构processimports定义对外部XMLSchema或WSDL的依赖关系extensions定义WS-BPEL扩展的属性和元素的名称空间variables存储业务流程或伙伴交互的状态数据partnerlinksWS-BPEL过程在其行为中用到的关联关系correlationsets应用数据字段,它们共同标识了一个会话messageexchanges出站和进站消息活动的相关关系eventhandlers并发处理进站消息或计时器警报faulthandlers处理流程中的异常情形primaryactivity执行流程逻辑——任意个活动可以循环嵌套XMLschemasWSDLdefinitionsWS-BPEL过程定义BPEL建立在WSDL服务模型之上,并对其进行了扩展WSDL定义了允许的特定操作BPEL定义了WSDLoperations如何被编排在一起满足特定业务流程BPEL还定义了WSDL的扩展,以支持长周期异步业务流程WSDL1.1BPEL2.0BPEL-definedWSDLextensionsWS-BPEL与WSDL的关系BPEL流程与业务伙伴暴露的WSDL服务交互WebServiceLoanApprovalProcessWebServiceWSDLLoanApprovalPortTypeFinancialInstitution‘sWebService(LoanApprover)invokeInterfacesexposedbytheBPELprocessInterfacesconsumedbytheBPELprocessreceivereplyRecursiveCompositionPartnerLinkTypePartnerLinkTypeServicePServiceAServiceBA’sWSDLP’sWSDLB’sWSDLFinvokereceivereceiveinvokeinvokeWeb服务组合processpartnerlinkpartnerlinktype业务伙伴间点到点的会话关系WSDLporttypemyRoleProvidedporttypeWSDLporttypepartnerRoleRequiredporttypereceive入站请求–BPEL流程提供的服务invoke出站请求–BPEL流程需要的服务PartnerLinks<partnerLinks><partnerLinkname=“customer"partnerLinkType=“lns:purchasePLT”
myRole=“purchaseService”/><partnerLinkname=“inventoryChecker”partnerLinkType=“lns:inventoryPLT”
myRole=“inventoryRequestor”partnerRole=“inventoryService”/><partnerLinkname=“creditChecker”partnerLinkType=“lns:creditPLT”
myRole=“creditRequestor”partnerRole=“creditService”/></partnerLinks><plt:partnerLinkTypename=“purchasePLT”><plt:rolename=“purchaseService”><plt:portTypename=“tns:purchasePT”/></plt:role></plt:partnerLinkType>PurchaseProcessWSDL:BPEL:<portTypename=“purchasePT”><operation
name="sendPurchase"></operation></portType>PurchaseProcessPortType:PartnerLinkinBPEL<definitionsname="ncname"targetNamespace="uri"xmlns="/wsdl/"xmlns:plnk="/ws/2003/05/partner-link/">...<plnk:partnerLinkTypename="ncname"><plnk:rolename="ncname"><plnk:portTypename="qname"/></plnk:role><plnk:rolename="ncname">?<plnk:portTypename="qname"/></plnk:role></plnk:partnerLinkType>...</definitions>
partnerLinkType为了描述两个服务之间的会话关系,伙伴链接类型定义了会话中每个服务所扮演的“角色”,并且指定了每个服务所提供的portType,以便接收会话的上下文中的消息。每个角色的portType可以产生于不同的名称空间,也可产生相同的名称空间。根据相同名称空间中的portType来定义合作伙伴链接类型的两个角色。伙伴链接类型定义文档可以是独立于任一个服务的WSDL文档的单独构件,也可以被放在定义portType的WSDL文档中,这些portType也被用来定义不同的角色。有些情况下,定义仅包含一个角色的伙伴链接类型是有意义的。在这种伙伴链接情形中,一个服务可以链接任何其他服务。伙伴链接类型业务流程交互的服务被描述成伙伴链(partnerLinks)。每个伙伴链由partnerLinkType来描述。每个伙伴链都被命名。通过该伙伴链的所有服务交互。属性myRole指出了业务流程本身的角色,而属性partnerRole指出了伙伴的角色。如果partnerLinkType仅有一个角色,那么将根据需要省略其中一个属性。<partnerLinks><partnerLinkname="ncname"partnerLinkType="qname"myRole="ncname"?partnerRole="ncname"?>+</partnerLink></partnerLinks>partnerLinksWSDL的PortType使用抽象消息来定义抽象功能。port提供实际访问信息,包括通信端点和其他与部署有关的信息。绑定使两者连结在一起。服务的用户必须静态地依赖于由portType定义的抽象接口,但是在通常情况下可以动态地发现和使用port定义的信息。端点引用的基本用途是为服务提供一种特定于端口(port)的数据的动态通信机制。端点引用使得WS-BPEL可以为特定类型的服务动态选择一个提供者,并调用其上的操作。BPEL使用了WS-Addressing中定义的端点引用的概念。流程实例的partnerlink的每个伙伴角色被分配一个具有惟一性的端点引用,这可以在流程的部署过程中完成,也可以由流程中的某个活动动态地执行。端点引用(EndpointReference,EPR)processassignxsl:transformreceiverequestresponseinvokerequestreplyresponse42WSDLmessageWSDLmessageWSDLmessages变量用WSDL消息来定义42XMLschemasXMLSchemaelements/types变量用XMLSchema的元素或类型来定义变量Variables业务流程指定了涉及伙伴之间消息交换的有状态交互。业务流程的状态不仅包括被交换的消息,而且还包括用于业务逻辑和构造发送给伙伴的消息的中间数据。每个变量的类型可以是WSDL消息类型、XMLSchema简单类型或XMLSchema元素。属于全局流程作用域的变量称为全局变量;属于流程作用域的变量称为局部变量;每个变量只有在定义它的作用域和嵌套在它所属于的作用域内的全部作用域中才是可见的<variables><variablename="ncname"messageType="qname"?type="qname"?element="qname"?/>+</variables>变量Variables<variables><variablename=“PO”messageType=“lns:POMessage”/><variablename=“Invoice”messageType=“lns:InvMessage”/><variablename=“POFault”messageType=“lns:orderFaultType”/></variables><messagename=“POMessage”><partname=“customerInfo”type=“sns:customerInfo”/><partname=“purchaseOrder”type=“sns:purchaseOrder”/></message><messagename="InvMessage"><partname=“IVC”type=“sns:Invoice”/></message><messagename=“orderFaultType”><partname=“problemInfo”type=“xsd:string”/></message>PurchaseProcessWSDL:BPEL:VariablesinBPELprocessXMLschemaelementWSDLmessagepartpartpart...propertypropertyalias类型化的属性映射到WSDLmessages的parts上,或XMLschema元素上propertypropertyalias属性用于引用消息或变量中的全部或部分数据,常用于相关集getVariableProperty(variable,property)属性将流程逻辑从变量的定义细节中分离开来
消息属性(MessageProperties)<wsdl:definitionsname="ncname"xmlns:bpws="/ws/2003/03/business-process/"><bpws:propertyname="ncname"type="qname"/>...</wsdl:definitions><definitionsname="ncname"...xmlns:bpws="/ws/2003/03/business-process/"><bpws:propertyAliaspropertyName="qname"messageType="qname"part="ncname"query="queryString"/>...</wsdl:definitions>propertyAlias:property:消息属性(MessageProperties)processinstance3processcorrelationsetcustomerIdorderNumberprocessinstance1processinstance2processinstance4receive提交购买订单如何通过无状态的Webservice接口识别有状态的流程实例?长周期会话中的消息与正确的的流程实例关联locatepurchaseOrdercId=0815orderNo=42receive查询订单状态queryOrderStatuscustId=0815oNo=42customerIdorderNumber4(0815,49)3(0815,42)2(0707,11)1(0311,33)initiateprocessinstance3属性和相关集(CorrelationSets)在面向对象领域通过对象引用进行有状态的交互。对象引用本身提供了访问具有合适的交互状态和历史的某个对象(实例)的能力。这种方式适用于紧密耦合的实现。Web服务领域引用方式将造成实现之间脆弱的依赖关系;需要松散耦合机制实现;避免在实例路由中使用特定于实现的标记。在业务流程实例的生存期中,它通常与涉及它的伙伴进行多次会话,相关联的会话涉及的参与者不止两个,常常有必要提供应用程序级的机制,以使消息和会话被匹配到预定的业务流程实例。相关集BPEL提供了声明性机制,以指定服务实例中相关联的操作组。一组相关标记可定义为相关联的组中所有消息共享的一组特性。这样的一组特性称为相关集。每个关联集都在一个作用域中进行声明并属于该作用域。属于全局流程作用域的关联集称为全局关联集;属于局部作用域,这样的关联集称为局部关联集。在流程开始时,全局关联集处于未初始化的状态。在其所属的作用域的执行开始时,本地关联集处于未初始化的状态。相关集在其语义上类似于延迟绑定的常数。相关集的绑定由特别标记的消息发送或接收操作来触发。相关集在其所属的作用域的生存期中只能初始化一次。在初始化之后,它的值就可被认为是业务流程实例的标识的别名。相关集在多方业务协议中,三种情况发起者流程发送启动会话的第一个消息,从而定义了标记该对话的相关集中的特性值。所有其他参与者通过接收提供相关集中的特性值的传入消息来绑定会话中的相关集。发起者和其他参与者都必须发送启动会话的第一个消息,从而定义标记会话的相关集中的特性值。相关集的名称用在invoke、receive和reply活动中,也用在pick活动的onMessage分支中,flow活动的link中,同时还用在事件处理程序的onMessage形式中。<correlationSets>?<correlationSetname="ncname"properties="qname-list"/>+</correlationSets>相关集processscopescopescopescopescopescopescope范围提供了一个上下文环境,它影响其中包含的活动的执行行为独立范围为并发访问共享资源提供了控制机制scope局部定义–partnerlinks,messageexchanges,variables,correlationsets局部处理–eventhandlers,faulthandlers,aterminationhandler,andacompensationhandlerCompensationhandler取消已经完成的活动造成的持久效果Terminationhandler处理对范围的强制停止(externalfaults)primaryactivityscopeScopes故障处理是因发生故障而切换到撤销发生故障的作用域中的部分或不成功的工作。故障处理程序提供了定义一组自定义的故障处理活动的方法,句法上定义为catch活动。定义的每个catch活动能拦截某种特定的故障(由全局惟一的故障QName和有与该故障相关联的数据的变量来定义)。如果没有故障名,那么catch将拦截全部有适合类型的故障数据的故障。使用catch处理程序中的faultVariable属性来指定故障变量。<faultHandlers><catchfaultName="qname“aultVariable="ncname">activity</catch><catchAll>activity</catchAll></faultHandlers>故障处理程序Try-catch-throw机制原理活动Atry活动2活动1try活动2.1活动2.2throw活动……异常异常处理catchthrow异常处理catch对invoke活动的故障响应是故障的来源之一,故障由显式给出的名称和数据部分组成。程序化地抛出throw活动是故障的另一个来源,它也有显式给出的名称和数据。故障处理程序通过补偿处理程序,作用域可以描述通过应用程序定义的方式可撤销的行为。有补偿处理程序的作用域可不受约束任意深地嵌套补偿处理程序仅仅是用于补偿的活动的包装。在许多情况下,补偿处理程序需要接收当前状态的数据并返回关于补偿结果的数据补偿处理程序的调用方法是使用compensate活动<compensationHandler>?activity</compensationHandler>补偿处理程序整个流程以及每个作用域可以与一组在相应的事件发生时并发的调用的事件处理程序相关联。在事件处理程序中进行任何类型的活动,但是不允许使用<compensate/>调用补偿处理程序。有两种类型的事件:与WSDL中请求/响应或单向操作对应的传入消息;用户设置的时间过后发出的警报。事件处理程序<eventHandlers>?<onMessagepartnerLink="ncname"portType="qname"operation="ncname"variable="ncname"?>*<correlations>?<correlationset="ncname"initiate="yes|no">+</correlations>activity</onMessage><onAlarmfor="duration-expr"?until="deadline-expr"?>*activity</onAlarm></eventHandlers>事件处理程序onMessage标志表示指定的事件是一个等待消息到达的事件。这个标记及其属性的解释类似于receive活动。partnerLink属性定义请求将到达的合作伙伴链接。portType和operation属性是合作伙伴为引发事件而调用的适当端口类型和操作。变量属性标识包含从合作伙伴接收到的消息的变量。onAlarm标志标记超时事件。for属性指定该事件发生之前的持续时间。计算持续时间的计时在相关的作用域的执行开始的时刻响起。until属性指定发出警报的特定时刻。这两个属性中仅有一个必须出现在任何onAlarm事件中。事件处理程序processreceivereplyinvoke调用一个单向或请求-响应操作阻塞并等待匹配的消息来临/发送一个回复消息validateassign用新数据更新变量或partnerlinks的值验证变量中存储的XML消息throwrethrow从业务流程内部生成一个错误(fault)从错误处理器中发送一个错误(fault)exit立即停止一个业务流程实例的执行compensatecompensateScope以缺省的顺序在所有完成的子域上调用补偿(compensation)在一个完成的子域上调用补偿wait等待给定的时间段或直到特定时间点empty业务流程中的空节点extensionActivityBPEL语言扩展的封装BasicActivitiesterminate我们重点讲解广泛使用的1.1规范<receive>构造业务流程阻塞等待匹配消息的到达实例化业务流程的惟一方法是receive活动,把createInstance属性设置为“yes”。该属性的缺省值是“no”。<receivepartnerLink="ncname"portType="qname"operation="ncname"variable="ncname"?createInstance="yes|no"?standard-attributes>standard-elements<correlations>?<correlationset="ncname"initiate="yes|no"?>+</correlations></receive>receive<reply>构造业务流程发送消息以应答通过<receive>接收到的消息。receive和reply的组合为流程构成了在WSDLportType上的请求-响应操作。<replypartnerLink="ncname"portType="qname"operation="ncname"variable="ncname"?faultName="qname"?standard-attributes>standard-elements<correlations>?<correlationset="ncname"initiate="yes|no"?>+</correlations></reply>reply<invoke>允许业务流程调用由合作伙伴在portType上提供的单向或请求-响应操作。异步调用仅需要操作的输入变量;同步调用既需要输入变量,又需要输出变量。invoke<invokepartnerLink="ncname"portType="qname"operation="ncname"inputVariable="ncname"?outputVariable="ncname"?standard-attributes>standard-elements<correlations>?<correlationset="ncname"initiate="yes|no"?pattern="in|out|out-in"/>+</correlations><compensationHandler>?activity</compensationHandler></invoke>invokeInvoke<InventoryService>Invoke<CreditService>Reply<Invoice>Receive<PO><sequence><flow></sequence>例子<sequence>
<receivepartnerLink=“customer”portType=“lns:purchaseOrderPT”
operation=“sendPurchaseOrder”variable=“PO”
createInstance="yes"/>
<flow>
<invokepartnerLink=“inventoryChecker”
portType=“lns:inventoryPT”operation=“checkINV”
inputVariable=“inventoryRequest”
outputVariable="inventoryResponse"/>
<invokepartnerLink=“creditChecker”
portType=“lns:creditPT”operation=“checkCRED”
inputVariable=“creditRequest”
outputVariable="creditResponse"/>
</flow> ......
<replypartnerLink=“customer”portType=“lns:purchaseOrderPT”
operation="sendPurchaseOrder"variable="invoice"/></sequence>例子<assign>的作用是用新的数据来更新变量的值。assign可以包括任意数量的基本赋值。assign还可把端点引用复制到合作伙伴链接,或把合作伙伴链接复制到端点引用(服务的动态绑定)。<assignstandard-attributes>standard-elements<copy>+from-specto-spec</copy></assign>assignfrom-spec必须是以下形式中的一种:<fromvariable="ncname"part="ncname"?/><frompartnerLink="ncname"endpointReference="myRole|partnerRole"/><fromvariable="ncname"property="qname"/><fromexpression="general-expr"/><from>...literalvalue...</from>to-spec必须是以下形式中的一种:<tovariable="ncname"part="ncname"?/><topartnerLink="ncname"/><tovariable="ncname"property="qname"/>
assign<throw>从业务流程中生成故障。使用throw发出内部故障。每个故障需要有一个全局惟一的QName,还可选提供数据的变量。故障处理程序可以使用这种数据,来分析和处理该故障并植入需被发送到其他服务的所有故障消息。<throwfaultName="qname"faultVariable="ncname"?standard-attributes>standard-elements</throw>throw<terminate>可以用于立即终止当前正在运行的业务流程实例。所有当前正在运行的活动必须尽可能快地终止,而且没有任何故障处理或补偿行为。<terminatestandard-attributes>standard-elements</terminate>terminate<wait>构造允许等待一段给定的时间或等到某一时刻。必须确切地指定wait中一个到期条件。<wait(for="duration-expr"|until="deadline-expr")standard-attributes>standard-elements</wait>wait<empty>允许在业务流程中插入“no-op”指令。empty可用于并行活动的同步。<emptystandard-attributes>standard-elements</empty>empty与语义<compensate>将使已正常执行完的内层作用域上调用补偿处理程序。compensate定义了执行补偿所在的作用域。仅当作用域正常完成执行之后该作用域的补偿处理程序才可被调用。显式地执行compensate活动的能力是BPEL应用程序错误处理框架的基础所在。该活动只能用于业务流程的以下部分中:在作用域的fault处理程序中,该作用域包括补偿将被执行的作用域。在作用域的补偿处理程序中,该作用域包括补偿将被执行的作用域。<compensatescope="ncname"?standard-attributes>standard-elements</compensate>compensatecompensateScope_1Scope_1_1Scope_1_1_1faultHandlers<compensatescope=“Scope_1_1_1”/>Scope_1Scope_1_1Scope_1_1_1faultHandlers<compensatescope=“Scope_1”/>…………<compensationHandler>…</compensationHandler>processflow包含的活动并发执行,可以用link指定顺序sequence包含的活动顺序执行while当预定的条件满足时,包含的活动重复执行repeatUntil包含的活动重复执行直到预设条件满足为止pick阻塞并等待一个消息的来临(或时间超时)forEach由一个指定的计数器变量控制,包含的活动顺序执行或并发执行多次if-elseif-else多选一scope将一组活动关联起来,使之具有共同的本地变量、伙伴连接、处理器等2.N.1.…BCAccc1c2…2.N.1.……AM2M1StructuredActivitiesswitch我们重点讲解广泛使用的1.1规范<sequence>定义一组按顺序先后执行的活动。执行顺序是sequence元素中被列出活动的先后顺序。当sequence中的最后一个活动完成后,该sequence活动也就完成了。
<sequencestandard-attributes>standard-elementsactivity+</sequence>sequence<switch>允许从一组分支中只选择一个活动分支。switch由case元素定义的一个或多个条件分支的有序列表组成,后面可跟也可以不跟一个otherwise分支。以case分支的出现顺序检查,第一个条件是true的分支被选择并被作为被执行的活动。如果有条件的分支都未被选择,那么otherwise分支将被选择。<switchstandard-attributes>standard-elements<casecondition="bool-expr">+activity</case><otherwise>?activity</otherwise></switch>switch<while>当预定的条件满足时,包含的活动重复执行。
<whilecondition="bool-expr"standard-attributes>standard-elementsactivity</while>while<pick>阻塞并等待某一个合适的消息的到达或超时警报响起。当其中一个触发器触发后,相关的活动就被执行,pick也随即完成了。pick活动等待一组相互排斥事件中的一个事件的发生,然后执行与发生的事件相关联的活动。如果多个事件发生,那么按照时间发生先后或选择原则确定发生事件。当业务流程的实例的创建是由于接收到一组可能的消息中的一个消息而发生的时,可以使用pick形式。每个pick活动必须至少包括一个onMessage事件。onMessage事件的语义等同于有关变量属性的可选类型的receive活动。pick<pickcreateInstance="yes|no"?standard-attributes>standard-elements<onMessagepartnerLink="ncname"portType="qname"operation="ncname"variable="ncname"?>+<correlations>?<correlationset="ncname"initiate="yes|no"?>+</correlations>activity</onMessage><onAlarm(for="duration-expr"|until="deadline-expr")>*activity</onAlarm></pick>pick<flow>结构指定一个或多个并行地执行的活动。为了定义任意的控制结构,可以在并行的活动中使用链接。flow能进一步表达直接或间接嵌套在其中的活动之间的同步相关性,link构造用来表达这种同步相关性。一个link有一个名称,flow活动的所有链必须在flow活动中分别定义。活动的source和target元素用来链接两个活动。在flow活动中声明的每个link必须在该flow中恰好有一个活动作为它的源,恰好有一个活动作为它的目标。<flowstandard-attributes>standard-elements<links>?<linkname="ncname">+</links>activity+</flow>flow<flow><links><linkname="XtoY"/><linkname="CtoD"/></links><sequencename="X"><sourcelinkName="XtoY"/><invokename="A".../><invokename="B".../></sequence><sequencename"Y"><targetlinkName="XtoY"/><receivename="C"/><sourcelinkName="CtoD"/></receive><invokename="E".../></sequence><invokepartnerLink="D"><targetlinkName="CtoD"/></invoke></flow><flow></flow><Y><C><E><X><A><B><D><linkCtoD><linkXtoY>Links–ControlFlow<scope>结构允许定义嵌套活动,这个嵌套活动有和自己关联的变量、故障处理程序和补偿处理程序。每个scope有一个定义它的正常行为的主要活动。该主要活动可以是一个复杂的结构化的活动,其中有任意深度的许多嵌套的活动。所有的嵌套的活动都共享该scope。<scopevariableAccessSerializable="yes|no"standard-attributes>standard-elements<variables>...</variables><correlationSets>...</correlationSets><faultHandlers>...</faultHandlers><compensationHandler>...</compensationHandler><eventHandlers>...</eventHandlers>activity</scope>scope<sequence><receive.../><flow><sequence><invoke.../><while...><assign>...</assign></while></sequence><sequence><receive.../><invoke.../></sequence></flow><reply.../></sequence>receivereplyreceiveinvokeinvokeassignsequencesequencesequenceflowwhileNestingStructuredActivities第五节BPEL表示法及其处理1.用户请求贷款,提供名字和账户信息2.有两个web服务:a)风险评估:如果风险小则批准
b)贷款审批:检查名字批准或不批准贷款3.回复用户invokereceiveinvokereplyassignloanApprovalPTloanapproverriskAssessmentPTloanassessoramount<10000amount>=10000risk="high"risk="low"approved="true"approved="false"flowBPEL的表示基于图的描述方法ifbuyer$$<seller$$elsereply(buyer)reply(seller)receive(buyer)receive(seller)assign"success"assign"failure"sequenceflowif-elseBPEL的表示结构块描述方法ProcessBPEL中定义的业务流程表示有状态的Webservices当流程启动,将通过流程定义创建一个新实例BPEL流程实例的创建和销毁隐含在设计中receivereplyinv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 顶面隔音改造施工方案
- 西北政法大学《商业银行综合业务》2023-2024学年第一学期期末试卷
- 桥梁临水施工方案
- 西北农林科技大学《流体力学》2023-2024学年第一学期期末试卷
- 2024年医疗器械代理注册及市场准入服务合同3篇
- 直形墙的施工方案
- 感温电缆施工方案
- 共振柱试验机相关行业投资规划报告范本
- 《我国纳税人保密权法律制度研究》
- 2024商铺租赁合同附带节假日促销活动支持3篇
- 医药行业合规培训
- 2024年低压电工资格考试必考题库及答案(共400题)
- 【MOOC】公司金融-江西财经大学 中国大学慕课MOOC答案
- 世界卫生组织人类精液及精子-宫颈粘液相互作用实验室检验手册第五版
- 殡仪馆鲜花采购投标方案(技术方案)
- 消化道大出血应急预案演练
- 光伏项目达标投产实施细则-施工
- 中国的世界文化遗产-英文版
- 系统集成售前技术年终总结
- 微信公众号运营合同三篇
- 《网络营销》试题及答案2
评论
0/150
提交评论