资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,面向效劳架构,第10章 效劳组合BPEL,Service Composition: BPEL,Web效劳组合是通过组合根本Web效劳提供增值效劳的能力,这些根本Web效劳可能由别的组织提供。,要点,效劳组合需要使用其它效劳,组合后形成的是一个具有新功能的效劳,效劳组合使用的根本功能可以是组织外部的,效劳组合的概念,效劳组合挑战,效劳组合实例,Airline C,Airline A,Airline B,Internet,Check Flight Schedules,Web Service,Web Service,Web Service,B2B,Applications,Travel Agency,Decision,Making,Compare Options,Check Flight,Schedules,Check Flight Schedules,IBM WebSphere,Sun Java,Microsoft .Net,We are here!,业务面临的一个关键问题仍然是集成,企业内部集成 (Enterprise Application Integration, EAI),与合作伙伴的集成 (Business-to-Business Integration, B2Bi),企业联盟,Web services 走向面向效劳计算,应用程序被视为“效劳,松散耦合,动态交互,异构平台,没有哪一方取得完全的控制权,效劳组合,如何组合效劳?,效劳组合目的,Programming in the large,非程序员实现流程,流程逻辑处理如何将功能点组合起来以解决更复杂的问题如,处理一个订单,Programming in the small,程序员实现功能,功能逻辑处理具体的细粒度的任务 (如,获取订单文件或更新客户记录),两种编程模型,移植性和互操作性,灵活的集成能力,表达能力强,易于适应底层效劳的变更,可细分, 基于类型的组合,使得:,第三方能对已有效劳进行组合,为不同部门提供不同的的组合视图,提高可伸缩性和复用性,有状态会话和生命期管理,支持多个有状态长周期会话,可恢复,长周期的业务流程需要错误处理和恢复机制,以便管理错误和恢复错误,对过程模型的需求,业务流程交互模式,使用Orchestration,需要一个总控过程来控制涉及到的Web效劳,并协调Web效劳不同操作的执行。所涉及到的Web效劳并不知道也不必知道它们是组合过程的一局部。只有中央的总控过程知道它们如何组合和协调,Choreography并不依赖中央的总控协调过程。相反,每个涉及其中的Web效劳都知道何时执行自己的操作,和谁交互。所有的Choreography参与者都需要知道业务流程,要执行的操作,要交互的消息,和交换消息的时机,Orchestration(编曲) vs Choreography(编舞),从组合Web效劳来执行业务流程的角度来看,Orchestration比Choreography更灵活:1、我们知道谁负责执行整个业务流程。2、即使Web效劳并不知道它们是业务流程的一局部,仍然可以把它们组合起来。3、当错误发生时,我们可以提供一个备选的Scenario,BPEL遵循Orchestration范式,Orchestration(编曲) vs Choreography(编舞),Sample Purchase Order,Purchase Order Request,Purchase Order Acknowledgement,Purchase Order Response,Business “A,Business,“B,Sample Business Process: Purchase Order,PO Request,Send PO,Receive PO Ack,Receive PO Response,Receive PO,Send PO Ack,Send PO Response,PO Acknowledgement,PO Response,Choreography The observable public exchange of messages,Public Process,Business A,Business B,From a Choreography Perspective,Send PO,Receive PO Ack,Receive PO Response,Transform,Transform,From ERP,To ERP,PO Request,PO Acknowledgement,PO Response,Orchestration A private executable business process,Private Process,Business A BPEL Workflow,From an Orchestration Perspective,BusinessB,Business Analyst Tool,BusinessA,Send PO,Receive PO Ack,Receive PO Response,Transform,Transform,Business A BPEL Workflow,PO Request,PO Acknowledgement,PO Response,Generate BPEL Template,Generate BPEL Template,Receive PO,Send PO Ack,Receive PO Response,Transform,Transform,Business B BPEL Workflow,Two BPEL workflow templates reflecting a business agreement,Orchestration and Choreography Together,业务流程可执行语言BPEL (Business Process Execution Language)是专为整合Web Services而制定的一项标准标准。,描述商业活动的抽象高级语言,IBM的WSFL支持图形化的流程,Microsoft的XLANG结构化构造方法,BPEL描述流程,可执行工作流描述业务交互中参与者的实际行为;,抽象流程描述各方参与者对外可见的消息交换。,BPEL的作用是将一组现有的效劳组合起来,从而定义一个新的Web效劳。因此,BPEL根本上是一种实现此种组合的语言。组合效劳的接口也被描述为WSDL portType的集合。,BPEL简介,BPEL组合Web效劳,BPEL is the Web Services Orchestration standard from OASIS,beepel, beepuhl, bipuhl,An XML-based grammar for describing the logic to orchestrate the interaction between Web services in a business process,BPEL Historical Timeline,Dec 2000,Microsoft publishes XLANG,March 2001,IBM publishes WSFL,July 2002,March 2003,BPEL4WS is submitted to OASIS,May 2003,1,st,H 2007,WS-BPEL 2.0 released,WS-BPEL历史,BPEL,(*),(*),BPEL 1.1 authors, May 2003,Getting the Players Together,BPEL流程可以实现Web效劳之间简单交互或复杂交互的自动化,支持长周期业务事务,关联消息交换,实现活动的并发处理,在合作方交互时映射数据,提供一致的异常和恢复处理机制,BPEL关注的问题,WSDL定义了Web services具有无状态的交互模型,消息交换,同步调用,无关联的异步调用,大多数 “现实世界的 业务流程需要一个更强大的交互模型,可以双向交换消息,也可以点到点(peer-to-peer)的交换,并能持续特定时间(分、时、天),BPEL提供了描述有状态的、长运行周期的交互的能力,为什么需要 BPEL?,使用XML语言定义业务流程,用流程分解和装配的方式建立Web services模型,在业务流程的外部抽象视图和内部可执行视图使用相同的编排方法,使用层次化和图形化的控制方式,减小过程建模的难度,在应用消息的级别上为流程实例提供一种识别机制,在创立和停止流程实例时隐含根本的生命周期机制,定义了一种长周期事务处理模型,支持长周期业务流程全部或其中某些局部的失败恢复,用模块化和可组合的方式提供了兼容Web效劳标准的语言,BEPL设计目标,描述业务流程的业界标准,使用通用的语言和技术,在设计上很自然地与Web services相适应,用XML描述,使用并扩展了,使用XML Schema 1.0 作为数据模型,在平台和开发商间可移植,理论上可以在任何BPEL兼容的引擎上运行,在交互的过程间实现互操作,在Web services stack的顶层,BEPL的优点,WS-BPEL,XML, Encoding,Other protocols,Other services,Transport,and,Encoding,Business,Processes,WSDL, Policy, UDDI, Inspection,Description,Security,Reliable,Messaging,Transactions,Coordination,SOAP (Logical Messaging),Quality,Of,Service,We,are here,WS-BPEL in the WS-* Stack,WS-BPEL,MyProcess,invoke,receive,receive,invoke,invoke,Handlers,fault,handler,event,handler,fault,handler,compensation,handler,termination,handler,event,handler,Partner,Links,Partner,Link Type,Port,Type 1,Port,Type 2,partner,link,partner,link,Variables,42,WSDL Message,XML Schema,Type,XML Schema,Element,Properties,Correlation Sets,Property 1,Property 2,Structured,Activities,if-else,while,scope,pick,sequence,flow,repeatUntil,forEach,Basic,Activities,receive,reply,invoke,throw,exit,wait,empty,compensate,validate,assign,rethrow,extensionActivity,compensateScope,Process,Partner links,Data handling,Properties and correlation,Basic and structured activities,Scopes,WS-BPEL 语言结构,process,imports,定义对外部XML Schema 或WSDL的依赖关系,extensions,定义,WS-BPEL,扩展的属性和元素的名称空间,variables,存储业务流程或伙伴交互的状态数据,partner,links,WS-BPEL,过程在其行为中用到的关联关系,correlation,sets,应用数据字段,它们共同标识了一个会话,message,exchanges,出站和进站消息活动的相关关系,event,handlers,并发处理进站消息或计时器警报,fault,handlers,处理流程中的,异常情形,primary,activity,执行流程逻辑,任意个活动可以循环嵌套,XML,schemas,WSDL,definitions,WS-BPEL 过程定义,BPEL建立在WSDL效劳模型之上,并对其进行了扩展,WSDL 定义了允许的特定操作,BPEL定义了 WSDL operations 如何被编排在一起满足特定业务流程,BPEL还定义了WSDL的扩展,以支持长周期异步业务流程,BPEL-defined,WSDL extensions,WS-BPEL 与WSDL的关系,BPEL 流程与业务伙伴暴露的WSDL效劳交互,Web,Service,Loan Approval Process,Web,Service,WSDL,Loan Approval,PortType,Financial Institutions,Web Service,(Loan Approver),invoke,Interfaces exposed,by the BPEL process,Interfaces consumed,by the BPEL process,receive,reply,Recursive Composition,Partner Link Type,Partner Link Type,Service P,Service A,Service B,As WSDL,Ps WSDL,Bs WSDL,F,invoke,receive,receive,invoke,invoke,Web效劳组合,process,partner,link,partner link type,Peer-to-peer conversational partner relationship,WSDL,port type,myRole,Provided port type,WSDL,port type,partnerRole,Required port type,receive,Inbound request service provided by the process,invoke,Outbound request service required by the process,Partner Links,Purchase Process WSDL:,BPEL:,Purchase Process PortType:,Partners in BPEL,.,?,.,partnerLinkType,为了描述两个效劳之间的会话关系,伙伴链接类型定义了会话中每个效劳所扮演的“角色,并且指定了每个效劳所提供的portType,以便接收会话的上下文中的消息。,每个角色的portType可以产生于不同的名称空间,也在产生于相同的名称空间。根据相同名称空间中的portType来定义合作伙伴链接类型的两个角色。,伙伴链接类型定义文档可以是独立于任一个效劳的WSDL文档的单独构件,也可以被放在定义portType的WSDL文档中,这些portType也被用来定义不同的角色。,有些情况下,定义仅包含一个角色的伙伴链接类型是有意义的。在这种伙伴链接情形中,一个效劳可以链接任何其他效劳。,伙伴链接类型,业务流程交互的效劳被描述成伙伴链(partnerLinks)。每个伙伴链由partnerLinkType来描述。,每个伙伴链都被命名。通过该伙伴链的所有效劳交互。,属性myRole指出了业务流程本身的角色,而属性partnerRole指出了伙伴的角色。如果partnerLinkType仅有一个角色,那么将根据需要省略其中一个属性。,+,partnerLinks,伙伴链表示两个合作伙伴流程之间会话关系。,伙伴partner元素被定义为流程的伙伴链一局部。,伙伴定义是可选的,并且不需要包含流程中定义的所有伙伴链。,伙伴链绝不可以出现在多个伙伴定义中。,+,+,partner,WSDL的PortType使用抽象消息来定义抽象功能。port提供实际访问信息,包括通信端点和其他与部署有关的信息。绑定使两者连结在一起。,效劳的用户必须静态地依赖于由portType定义的抽象接口,但是在通常情况下可以动态地发现和使用port定义的信息。,端点引用的根本用途是作为一种机制,用于效劳的特定于端口的数据的动态通信。,BPEL使用了WS-Addressing中定义的端点引用的概念。流程实例的partner link的每个伙伴角色被分配一个具有惟一性的端点引用,这可以在流程的部署过程中完成,也可以由流程中的某个活动动态地执行。,端点引用(EndpointReference ),process,assign,xsl:transform,receive,request,response,invoke,request,reply,response,42,WSDL,message,WSDL,message,WSDL,messages,Variables defined using WSDL messages,42,XML,schemas,XML Schema,elements / types,Variables defined using XML schema elements or types,变量Variables,业务流程指定了涉及伙伴之间消息交换的有状态交互。业务流程的状态不仅包括被交换的消息,而且还包括用于业务逻辑和构造发送给伙伴的消息的中间数据。,每个变量的类型可以是WSDL消息类型、XML Schema简单类型或XML Schema元素。,属于全局流程作用域的变量称为全局变量;属于流程作用域的变量称为局部变量;,每个变量只有在定义它的作用域和嵌套在它所属于的作用域内的全部作用域中才是可见的,+,变量Variables,Purchase Process WSDL:,BPEL:,Variables in BPEL,process,XML schema element,WSDL message,part,part,part,.,property,property,alias,类型化的属性映射到,WSDL messages的parts上,,或 XML schema 元素上,property,property,alias,属性建立了一个,具有特定语义的,名字,比,XML schema,语义还丰富,getVariableProperty( variable, property ),属性将流程逻辑,从变量的定义细,节中分离开来,变量属性,process instance 3,process,correlation set,customerId,orderNumber,process instance 1,process instance 2,process instance 4,receive,提交购买订单,如何通过无状态的Web service,接口识别有状态的流程实例?,长周期会话中的消息与,正确的的流程实例关联,locate,purchaseOrder,cId = 0815,orderNo = 42,receive,查询订单状态,queryOrderStatus,custId = 0815,oNo = 42,customerId,orderNumber,4,(0815, 49),3,(0815, 42),2,(0707, 11),1,(0311, 33),initiate,process instance 3,属性和相关集(Correlation Sets),在面向对象领域,通过对象引用进行有状态的交互。对象引用本身提供了访问具有适宜的交互状态和历史的某个对象实例的能力。,这种方式适用于紧密耦合的实现。,Web效劳领域,引用方式将造成实现之间脆弱的依赖关系;,需要松散耦合机制实现;,防止在实例路由中使用特定于实现的标记。,在业务流程实例的生存期中,它通常与涉及它的伙伴进行屡次会话,相关联的会话涉及的参与者不止两个,常常有必要提供给用程序级的机制,以使消息和会话被匹配到预定的业务流程实例。,相关集,BPEL提供了声明性机制,以指定效劳实例中相关联的操作组。一组相关标记可定义为相关联的组中所有消息共享的一组特性。这样的一组特性称为相关集。,每个关联集都在一个作用域中进行声明并属于该作用域。属于全局流程作用域的关联集称为全局关联集;属于局部作用域,这样的关联集称为局部关联集。,在流程开始时,全局关联集处于未初始化的状态。在其所属的作用域的执行开始时,本地关联集处于未初始化的状态。,相关集在其语义上类似于延迟绑定的常数。相关集的绑定由特别标记的消息发送或接收操作来触发。相关集在其所属的作用域的生存期中只能初始化一次。在初始化之后,它的值就可被认为是业务流程实例的标识的别名。,相关集,在多方业务协议中,初始者流程发送启动会话的第一个消息,从而定义了标记该对话的相关集中的特性值。,所有其他参与者通过接收提供相关集中的特性值的传入消息来绑定会话中的相关集。,初始者和其他参与者都必须发送启动会话的第一个消息,从而定义标记会话的相关集中的特性值。,相关集的名称用在invoke、receive和reply活动中,也用在pick活动的onMessage分支中,同时还用在事件处理程序的onMessage形式中。,?,+,相关集,process,scope,scope,scope,scope,scope,scope,scope,范围提供了一个上下文环境,它影响其中包含的活动的执行行为,独立范围为并发访问共享资源提供了控制机制,scope,局部定义 partner links, message exchanges, variables, correlation sets,局部处理 event handlers, fault handlers, a termination handler, and a compensation handler,Compensation handler取消已经完成的活动造成的持久效果,Termination handler 处理对范围的强制停止 (external faults),primary activity,scope,Scopes,对invoke活动的故障响应是故障的来源之一,根据WSDL操作中的故障定义,该故障有显式给出的名称和数据局部。程序化地抛出throw活动是故障的另一个来源,它也有显式给出的名称和数据。,故障处理程序,通过补偿处理程序,作用域可以描述一局部通过应用程序定义的方式可撤销的行为。有补偿处理程序的作用域可不受约束任意深地嵌套。,补偿处理程序仅仅是补偿活动的包装。在许多情况下,补偿处理程序需要接收当前状态的数据并返回关于补偿结果的数据。,补偿处理程序的调用方法是使用compensate活动。,?,activity,补偿处理程序,整个流程以及每个作用域可以与一组在相应的事件发生时并发调用事件处理程序相关联。,在事件处理程序中进行任何类型的活动,但是不允许使用调用补偿处理程序。,有两种类型的事件:,与WSDL中请求/响应或单向操作对应的传入消息;,用户设置的时间过后发出的警报。,事件处理程序,?,*,?,+,activity,*,activity,事件处理程序,onMessage标志表示指定的事件是一个等待消息到达的事件。,这个标记及其属性的解释类似于receive活动。partnerLink属性定义请求将到达的合作伙伴链接。portType和operation属性是合作伙伴为引发事件而调用的适当端口类型和操作。变量属性标识包含从合作伙伴接收到的消息的变量。,onAlarm标志标记超时事件。,for属性指定该事件发生之前的持续时间。计算持续时间的计时在相关的作用域的执行开始的时刻响起。,until属性指定发出警报的特定时刻。这两个属性中仅有一个必须出现在任何onAlarm事件中。,事件处理程序,Process,BPEL中定义的业务流程表示有状态的Web services,当流程启动,将通过流程定义创立一个新实例,BPEL流程实例的创立和销毁隐含在设计中,receive,reply,invoke,invoke,invoke,流程实例的生命周期,WS-BPEL,MyProcess,invoke,receive,receive,invoke,invoke,Handlers,fault,handler,event,handler,fault,handler,compensation,handler,termination,handler,event,handler,Partner,Links,Partner,Link Type,Port,Type 1,Port,Type 2,partner,link,partner,link,Variables,42,WSDL Message,XML Schema,Type,XML Schema,Element,Properties,Correlation Sets,Property 1,Property 2,Structured,Activities,if-else,while,scope,pick,sequence,flow,repeatUntil,forEach,Basic,Activities,receive,reply,invoke,throw,exit,wait,empty,compensate,validate,assign,rethrow,extensionActivity,compensateScope,Process,Partner links,Data handling,Properties and correlation,Basic and structured activities,Scopes,WS-BPEL 语言结构,process,imports,定义对外部XML Schema 或WSDL的依赖关系,extensions,定义,WS-BPEL,扩展的属性和元素的名称空间,variables,存储业务流程或伙伴交互的状态数据,partner,links,WS-BPEL,过程在其行为中用到的关联关系,correlation,sets,应用数据字段,它们共同标识了一个会话,message,exchanges,出站和进站消息活动的相关关系,event,handlers,并发处理进站消息或计时器警报,fault,handlers,处理流程中的,异常情形,primary,activity,执行流程逻辑,任意个活动可以循环嵌套,XML,schemas,WSDL,definitions,WS-BPEL 过程定义,BPEL建立在WSDL效劳模型之上,并对其进行了扩展,WSDL 定义了允许的特定操作,BPEL定义了 WSDL operations 如何被编排在一起满足特定业务流程,BPEL还定义了WSDL的扩展,以支持长周期异步业务流程,BPEL-defined,WSDL extensions,WS-BPEL 与WSDL的关系,BPEL 流程与业务伙伴暴露的WSDL效劳交互,Web,Service,Loan Approval Process,Web,Service,WSDL,Loan Approval,PortType,Financial Institutions,Web Service,(Loan Approver),invoke,Interfaces exposed,by the BPEL process,Interfaces consumed,by the BPEL process,receive,reply,Recursive Composition,Partner Link Type,Partner Link Type,Service P,Service A,Service B,As WSDL,Ps WSDL,Bs WSDL,F,invoke,receive,receive,invoke,invoke,Web效劳组合,process,partner,link,partner link type,业务伙伴间点到点的会话关系,WSDL,port type,myRole,Provided port type,WSDL,port type,partnerRole,Required port type,receive,入站请求 BPEL流程提供的服务,invoke,出站请求BPEL流程需要的服务,Partner Links,Purchase Process WSDL:,BPEL:,Purchase Process PortType:,PartnerLink in BPEL,.,?,.,partnerLinkType,为了描述两个效劳之间的会话关系,伙伴链接类型定义了会话中每个效劳所扮演的“角色,并且指定了每个效劳所提供的portType,以便接收会话的上下文中的消息。,每个角色的portType可以产生于不同的名称空间,也可产生相同的名称空间。根据相同名称空间中的portType来定义合作伙伴链接类型的两个角色。,伙伴链接类型定义文档可以是独立于任一个效劳的WSDL文档的单独构件,也可以被放在定义portType的WSDL文档中,这些portType也被用来定义不同的角色。,有些情况下,定义仅包含一个角色的伙伴链接类型是有意义的。在这种伙伴链接情形中,一个效劳可以链接任何其他效劳。,伙伴链接类型,业务流程交互的效劳被描述成伙伴链(partnerLinks)。每个伙伴链由partnerLinkType来描述。,每个伙伴链都被命名。通过该伙伴链的所有效劳交互。,属性myRole指出了业务流程本身的角色,而属性partnerRole指出了伙伴的角色。如果partnerLinkType仅有一个角色,那么将根据需要省略其中一个属性。,+,partnerLinks,伙伴partner元素被定义为流程的伙伴链一局部。,伙伴定义是可选的,并且不需要包含流程中定义的所有伙伴链。,伙伴链绝不可以出现在多个伙伴定义中。,版本已去除,+,+,partner,WSDL的PortType使用抽象消息来定义抽象功能。port提供实际访问信息,包括通信端点和其他与部署有关的信息。绑定使两者连结在一起。,效劳的用户必须静态地依赖于由portType定义的抽象接口,但是在通常情况下可以动态地发现和使用port定义的信息。,端点引用的根本用途是为效劳提供一种特定于端口(port)的数据的动态通信机制。,端点引用使得WS-BPEL可以为特定类型的效劳动态选择一个提供者,并调用其上的操作。,BPEL使用了WS-Addressing中定义的端点引用的概念。流程实例的partner link的每个伙伴角色被分配一个具有惟一性的端点引用,这可以在流程的部署过程中完成,也可以由流程中的某个活动动态地执行。,端点引用(Endpoint Reference, EPR),process,assign,xsl:transform,receive,request,response,invoke,request,reply,response,42,WSDL,message,WSDL,message,WSDL,messages,变量用WSDL消息来定义,42,XML,schemas,XML Schema,elements / types,变量用XML Schema的元素或类型来定义,变量Variables,业务流程指定了涉及伙伴之间消息交换的有状态交互。业务流程的状态不仅包括被交换的消息,而且还包括用于业务逻辑和构造发送给伙伴的消息的中间数据。,每个变量的类型可以是WSDL消息类型、XML Schema简单类型或XML Schema元素。,属于全局流程作用域的变量称为全局变量;属于流程作用域的变量称为局部变量;,每个变量只有在定义它的作用域和嵌套在它所属于的作用域内的全部作用域中才是可见的,+,变量Variables,Purchase Process WSDL:,BPEL:,Variables in BPEL,process,XML schema element,WSDL message,part,part,part,.,property,property,alias,类型化的属性映射到,WSDL messages的parts上,,或 XML schema 元素上,property,property,alias,属性用于引用消息或,变量中的全部或部分,数据,常用于相关集,getVariableProperty( variable, property ),属性将流程逻辑,从变量的定义细,节中分离开来,消息属性(Message Properties),.,.,propertyAlias:,property:,消息属性(Message Properties),process instance 3,process,correlation set,customerId,orderNumber,process instance 1,process instance 2,process instance 4,receive,提交购买订单,如何通过无状态的Web service,接口识别有状态的流程实例?,长周期会话中的消息与,正确的的流程实例关联,locate,purchaseOrder,cId = 0815,orderNo = 42,receive,查询订单状态,queryOrderStatus,custId = 0815,oNo = 42,customerId,orderNumber,4,(0815, 49),3,(0815, 42),2,(0707, 11),1,(0311, 33),initiate,process instance 3,属性和相关集(Correlation Sets),在面向对象领域,通过对象引用进行有状态的交互。对象引用本身提供了访问具有适宜的交互状态和历史的某个对象实例的能力。,这种方式适用于紧密耦合的实现。,Web效劳领域,引用方式将造成实现之间脆弱的依赖关系;,需要松散耦合机制实现;,防止在实例路由中使用特定于实现的标记。,在业务流程实例的生存期中,它通常与涉及它的伙伴进行屡次会话,相关联的会话涉及的参与者不止两个,常常有必要提供给用程序级的机制,以使消息和会话被匹配到预定的业务流程实例。,相关集,BPEL提供了声明性机制,以指定效劳实例中相关联的操作组。一组相关标记可定义为相关联的组中所有消息共享的一组特性。这样的一组特性称为相关集。,每个关联集都在一个作用域中进行声明并属于该作用域。属于全局流程作用域的关联集称为全局关联集;属于局部作用域,这样的关联集称为局部关联集。,在流程开始时,全局关联集处于未初始化的状态。在其所属的作用域的执行开始时,本地关联集处于未初始化的状态。,相关集在其语义上类似于延迟绑定的常数。相关集的绑定由特别标记的消息发送或接收操作来触发。相关集在其所属的作用域的生存期中只能初始化一次。在初始化之后,它的值就可被认为是业务流程实例的标识的别名。,相关集,在多方业务协议中,三种情况,发起者流程发送启动会话的第一个消息,从而定义了标记该对话的相关集中的特性值。,所有其他参与者通过接收提供相关集中的特性值的传入消息来绑定会话中的相关集。,发起者和其他参与者都必须发送启动会话的第一个消息,从而定义标记会话的相关集中的特性值。,相关集的名称用在invoke、receive和reply活动中,也用在pick活动的onMessage分支中,flow活动的link中,同时还用在事件处理程序的onMessage形式中。,?,+,相关集,process,scope,scope,scope,scope,scope,scope,scope,范围提供了一个上下文环境,它影响其中包含的活动的执行行为,独立范围为并发访问共享资源提供了控制机制,scope,局部定义 partner links, message exchanges, variables, correlation sets,局部处理 event handlers, fault handlers, a termination handler, and a compensation handler,Compensation handler取消已经完成的活动造成的持久效果,Termination handler 处理对范围的强制停止 (external faults),primary activity,scope,Scopes,故障处理是因发生故障而切换到撤销发生故障的作用域中的局部或不成功的工作。,故障处理程序提供了定义一组自定义的故障处理活动的方法,句法上定义为catch活动。定义的每个catch活动能拦截某种特定的故障由全局惟一的故障QName和有与该故障相关联的数据的变量来定义。如果没有故障名,那么catch将拦截全部有适合类型的故障数据的故障。使用catch处理程序中的faultVariable属性来指定故障变量。,activity,activity,故障处理程序,Try-catch-throw机制原理,活动A,try,活动2,活动1,try,活动,活动,throw,活动,异常,异常,处理,catch,throw,异常,处理,catch,对invoke活动的故障响应是故障的来源之一,故障由显式给出的名称和数据局部组成。程序化地抛出throw活动是故障的另一个来源,它也有显式给出的名称和数据。,故障处理程序,通过补偿处理程序,作用域可以描述通过应用程序定义的方式可撤销的行为。有补偿处理程序的作用域可不受约束任意深地嵌套。,补偿处理程序仅仅是用于补偿的活动的包装。在许多情况下,补偿处理程序需要接收当前状态的数据并返回关于补偿结果的数据。,补偿处理程序的调用方法是使用compensate活动。,?,activity,补偿处理程序,整个流程以及每个作用域可以与一组在相应的事件发生时并发的调用的事件处理程序相关联。,在事件处理程序中进行任何类型的活动,但是不允许使用调用补偿处理程序。,有两种类型的事件:,与WSDL中请求/响应或单向操作对应的传入消息;,用户设置的时间过后发出的警报。,事件处理程序,?,*,?,+,activity,*,activity,事件处理程序,onMessage标志表示指定的事件是一个等待消息到达的事件。,这个标记及其属性的解释类似于receive活动。partnerLink属性定义请求将到达的合作伙伴链接。portType和operation属性是合作伙伴为引发事件而调用的适当端口类型和操作。变量属性标识包含从合作伙伴接收到的消息的变量。,onAlarm标志标记超时事件。,for属性指定该事件发生之前的持续时间。计算持续时间的计时在相关的作用域的执行开始的时刻响起。,until属性指定发出警报的特定时刻。这两个属性中仅有一个必须出现在任何onAlarm事件中。,事件处理程序,process,receive,reply,invoke,调用一个单向或请求-响应操作,阻塞并等待匹配的消息来临/发送一个回复消息,validate,assign,用新数据更新变量或partner links的值,验证变量中存储的,XML,消息,throw,rethrow,从业务流程内部生成一个错误(fault),从错误处理器中发送一个错误(fault),exit,立即停止一个业务流程实例的执行,compensate,compensateScope,以缺省的顺序在所有完成的子域上调用补偿 (compensation),在一个完成的子域上调用补偿,wait,等待给定的时间段或直到特定时间点,empty,业务流程中的空节点,extensionActivity,BPEL语言扩展的封装,Basic Activities,terminate,我们重点讲解广泛使用的标准,构造业务流程阻塞等待匹配消息的到达,实例化业务流程的惟一方法是receive活动,把 createInstance属性设置为“yes 。该属性的缺省值是“no。,standard-elements,?,+,receive,构造业务流程发送消息以应答通过接收到的消息。,receive和reply的组合为流程构成了在WSDL portType上的请求-响应操作。,standard-elements,?,+,reply,允许业务流程调用由合作伙伴在portType上提供的单向或请求-响应操作。,异步调用仅需要操作的输入变量;同步调用既需要输入变量,又需要输出变量。,invoke,standard-elements,?,+,?,activity,invoke,Invoke ,Invoke ,Reply ,Receive ,例子,.,例子,的作用是用新的数据来更新变量的值。,assign可以包括任意数量的根本赋值。,assign还可把端点引用复制到合作伙伴链接,或把合作伙伴链接复制到端点引用效劳的动态绑定。,standard-elements,+,from-spec,to-spec,assign,from-spec必须是以下形式中的一种:, . literal value . ,to-spec必须是以下形式中的一种:,assign,从业务流程中生成故障。,使用throw发出内部故障。每个故障需要有一个全局惟一的QName,还可选提供数据的变量。故障处理程序可以使用这种数据,来分析和处理该故障并植入需被发送到其他效劳的所有故障消息。,standard-elements,throw,可以用于立即终止当前正在运行的业务流程实例。,所有当前正在运行的活动必须尽可能快地终止,而且没有任何故障处理或补偿行为。,standard-ele
展开阅读全文