[计算机]bpel简介 30页

  • 463.00 KB
  • 2022-08-30 发布

[计算机]bpel简介

  • 30页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
BPEL简介\nBPEL简介BPEL(BusinessProcessExecutionLanguage,业务流程执行语言),是一种使用Web服务定义和执行业务流程的语言。BPEL是专门为整合WebService而制定的一项规范标准。BPEL的作用是将一组现有的服务组合起来,从而定义一个新的Web服务。因此,BPEL基本上是一种实现此种组合的语言,组合后的服务的接口也被描述为WSDL的portType集合。\nBPEL结构partnerLinks:合作伙伴链接variables:变量定义correlationSets:相关集定义faultHandlers:故障处理程序compensationHandlers:补偿处理程序eventHandlers:事件处理程序activity:流程主体\n合作伙伴链接PartnerLinkType:伙伴链接类型为了描述两个服务之间的会话关系,伙伴链接类型定义了会话中每个服务所扮演的“角色”,并且指定了每个角色所提供的portType。伙伴链接类型定义文档可以是独立于任一个服务的WSDL文档的单独构件,也可以被放在定义portType的WSDL文档中,这些portType也被用来定义不同的角色。但是,必须注意的是PartnerLinkType不是在BPEL文件中定义的,而是在WSDL文件中定义的。\n合作伙伴链接PartnerLink:伙伴链接与业务流程交互的服务被描述成伙伴链接。每个伙伴链接由partnerLinkType来描述。每个伙伴链接都被命名,这个名称用于与这个伙伴的所有服务交互。每个合作伙伴链接可以拥有一个或两个角色。属性myRole指出了业务流程本身的角色,而属性partnerRole指出了伙伴的角色。通常同步请求/响应操作仅能指定一个角色;对于异步操作,它指定两个角色。\n变量定义业务流程指定了涉及伙伴之间消息交换的有状态交互。业务流程的状态不仅包括被交换的消息,而且还包括用于业务逻辑和构造发送给伙伴的消息的中间数据,这些中间数据可以通过变量来存储。每个变量的类型可以是WSDL消息类型、XMLSchema简单类型或XMLSchema元素。\n相关集定义BPEL提供了声明性机制,以指定服务实例中相关联的操作组。一组相关标记可定义为相关联的组中所有消息共享的一组特性。这样的一组特性称为相关集。每个关联集都在一个作用域中进行声明并属于该作用域。在流程开始时,全局关联集处于未初始化的状态。在其所属的作用域的执行开始时,本地关联集处于未初始化的状态。相关集在其语义上类似于延迟绑定的常数。相关集的绑定由特别标记的消息发送或接收操作来触发。相关集在其所属的作用域的生存期中只能初始化一次。在初始化之后,它的值就可被认为是业务流程实例的标识的别名。相关集的名称用在invoke、receive和reply活动中,也用在pick活动的onMessage分支中,同时还用在事件处理程序的onMessage形式中。\n故障处理程序故障处理是因发生故障而切换到撤销发生故障的作用域中的部分或不成功的工作。故障处理程序提供了定义一组自定义的故障处理活动的方法,句法上定义为catch活动。定义的每个catch活动能拦截某种特定的故障(由全局惟一的故障名和有与该故障相关联的数据的变量来定义)。如果没有故障名,那么catch将拦截全部有适合类型的故障数据的故障。使用catch处理程序中的faultVariable属性来指定故障变量。对invoke活动的故障响应是故障的来源之一,根据WSDL操作中的故障定义,该故障有显式给出的名称和数据部分。程序化地抛出throw活动是故障的另一个来源,它也有显式给出的名称和数据。\n补偿处理程序通过补偿处理程序,作用域可以描述一部分通过应用程序定义的方式可撤销的行为。有补偿处理程序的作用域可不受约束任意深地被嵌套。补偿处理程序仅仅是补偿活动的包装。在许多情况下,补偿处理程序需要接收当前状态的数据并返回关于补偿结果的数据。补偿处理程序的调用方法是使用compensate活动。\n事件处理程序整个流程以及每个作用域可以与一组在相应的事件发生时并发调用事件处理程序相关联。在事件处理程序中进行任何类型的活动,但是不允许使用调用补偿处理程序。有两种类型的事件:与WSDL中请求/响应或单向操作对应的传入消息;用户设置的时间过后发出的警报。\n流程主体由一系列的基本活动和结果活动组成BPEL语言的基本单位是活动,其活动按作用可分为如下几类:基本活动:实现基本功能结构活动:控制流程结构特殊活动故障处理:BPEL2.0中将故障处理单独归类\n基本活动基本活动是与外界进行交互最简单的形式。它们是无序的个别步骤,与服务进行交互、操作、传输数据或者处理异常等。包括如下:流程用于和外界进行交互的基本活动:receive、invoke、reply;流程用于传输数据的基本活动:assign;通过throw活动发出故障信号;通过terminate活动放弃所有流程实例的执行;通过wait活动使流程等待一段时间或到达某个截止期限后再执行;通过empty活动不执行任何的动作;通过compensate活动做一些补偿动作,通常需要和scope联合使用。\n主要基本活动负责调用服务receivereplyinvokeassignwaitemptyexit\n结构活动结构化的活动规定了一组活动发生的顺序。他们描述了业务流程是怎样通过把它执行的基本活动组成结构而被创建的,这些结构表达了涉及业务协议的流程实例间的控制形式、数据流程、故障和外部事件的处理以及消息交换的协调。包括如下:活动间一般的顺序控制由sequence、switch和while来提供;活动间的并发和同步由flow来提供;基于外部事件的不确定的选择由pick来提供;结构化的活动可以被任意的嵌套和组合。\n主要结构活动repeateUntilwifpickforEachsequenceflowwhile\n特殊活动(Scope活动)Scope活动为嵌套在其中的活动提供故障处理功能和补偿处理功能。scope可以提供故障处理程序、补偿处理程序、数据变量和相关集。每个Scope有一个定义它的正常行为的主要活动。该主要活动可以是一个复杂的结构化的活动,其中有任意深度的许多嵌套的活动。所有的嵌套的活动都共享该Scope。\njPDL和BPEL比较流程结构定义jPDL中定义了一些基于有向图的节点和变换,通过这些节点和变换来实现流程的定义。而在BPEL中有一些基于XML元素的结构化活动,通过这些活动来实现流程的结构定义。数据处理jPDL中的变量是基于POJO(PlainOldJavaObject)定义的,流程中需要进行处理处理的数据可以通过ContextInstance在外部类中调用。BPEL中变量是基于XML结构,可以通过assign活动来进行操作。和流程的交互方式jBPM提供了一组API,通过调用这些API中的方法允许客户端代码和流程实例的直接交互。BPEL提供了Web服务的接口,客户端通过这些接口来实现和流程实例的间接交互。服务的调用jPDL流程通过actionhandler来实现和外部服务的交互。在BPEL中,通过invoke等活动来实现。\nBPEL2.0的改动《BPEL开发手册》所介绍的是BPEL1.1版本,BPEL2.0中对活动有了一些改动和添加,下面是BPEL2.0图形化编辑插件的截图。\n通过ActiveBPEL进行开发ActiveBPEL:提供流程编辑器和流程执行引擎如右图:bpel中存放*.bpel流程描述文件。deploy中存放用于流程部署的pdd和bpr文件。sample-data和test文件夹存放用于流程测试的数据和BUnit。schema存放预定义的数据类型文件*.xsd。wsdl存放流程所调用服务的描述文件wsdl。\n引入wsdl文件引入wsdl文件——从服务提供方处获得服务的wsdl描述并放入wsdl文件夹。引入wsdl文件后,在Interfaces一栏中可以看到wsdl中描述的PartnerLinkTypes和Porttypes。\n创建BPEL流程右键点击bpel文件夹,通过New->BPELProcess新建一个BPEL文件。\n编辑BPEL流程可以从PortType中将服务托拽到BPEL编辑器中,从而添加一个流程。若该服务没有定义PartnerLinkTypes,编辑器会要求你创建一个。可以将创建的PartnerLinkTypes直接添加到相应的服务描述文件wsdl中。\n\nPartenerLink\nPartenerLink\nPartenerLink\nBPELWSDL◆SendSalesOrderNotification●RetailerCallbackPortType◆customerOrder◆cancelOrder●OrderManagerPortType(partnerLinkType)OrderingPLT※OrderPlacerRetailerCallbackPortType※OrderingSystemOrderManagerPortTyperole※PortType●operation◆(partnerLink)OrderManagerpartnerLinkTypeOrderingPLTmyRoleOrderPlacerpartnerRoleOrderingSystem(invoke)CreateSalesOrderpartnerLinkOrderManageroperationcustomerOrderVariable……\n数据传递在assign活动中,BPEL可以通过XPath语言进行数据传递。使用XPath语言必须将流程的CreateXPath属性设为Yes,其默认值为No。\n生成pdd文件右键点击bpel文件,New->DeploymentDiscriptor,生成同名pdd文件,并放置在deploy文件夹中。\n生成pdd文件pdd文件需要修改服务连接部分。

相关文档