首页 > 方案案例 > 正文

基于数据流优化的BPEL流程分割方法

2009-07-17 09:25:36  来源:万方数据

摘要:集中式执行的BPEL流程性能不高并且不能满足动态流程管理的需求.为此,文中提出了一种基于数据流优化的BPEL流程分割方法,以支持BPEL流程的分散化协调.首先将BPEL流程变换成程序流图(PFG),然
关键词: 服务组合 流程分割

  WS—BPEL(Web Services Business Process Execution Language,简称BPEL)作为目前用Web服务实现业务流程的标准流程描述语言得到了广泛应用。目前的BPEL流程都是集中式地运行在一个BPEL引擎中,这被称作集中式编排。采用集中式编排,BPEL引擎要负责协调和控制不同参与者之间的控制流和数据流,所有的数据都要经过BPEL引擎中转,而不是由数据生产者直接发送给数据消费者,因此可能成为系统的瓶颈.如果采用分散化协调机制,被BPEL流程分割成子流程分布的执行,数据直接由生产者发送到消费者,可以增加系统并行度、减少消息传递次数.动态业务流程管理经常要求把一个业务流程分割成多个子流程来执行,比如业务流程外包会将一部分业务流程分割出来委派给第三方完成,但是目前没有有效的分割业务流程的方法。

BPEL流程分割方法

  对BPEL流程分散协调和流程分割已开展了一些研究工作:提出基于角色的业务流程分解机制,但是其中的“数据分析”模块并没有实现,并提出一种代码分割算法用于分割BPEL流程,这种算法比较复杂并且产生很多无效的分割结果,最重要的是它没有对数据流进行优化。

  设计了可以将Web服务的输出结果发送给那些真正需要这些结果的Web服务的触发器,但是文中只给出了触发器的定义方法并没有给出得到Web服务输出结果真正目的地的方法。

  针对上述问题,本研究提出一种自动的BPEL流程分割与优化方法.采用数据流分析方法对BPEL流程进行分析,并提出数据流优化算法,经过优化的BPEL流程按照定义的角色被分割成一组流程片段分散执行以提高系统性能.

  1 方法概述

  本研究提出的BPEL流程优化及分割方法由BPEL流程变换、数据流分析与优化、流程分割3个阶段组成.总体描述如图1所示。在BPEL流程变换阶段,BPEL流程经过赋值变换、异步化变换和消息展开,被表示成程序流图(PFG),赋值变换将BPEL流程中操作数据的活动转换成为赋值语句,异步化变换引入SEND和RECV两个原语,将BPEL流程中的所有同步通信转换成异步通信模式,消息展开将BPEL流程中使用的消息变量展开成一组数据元素。这三种变换将BPEL流程转换成传统程序设计语言的形式.转换后的BPEL流程被表示成程序结构的PFG图,以描述具有同步的并行程序,分析与优化阶段定义了一组数据流方程,通过计算方程收集所需的数据流信息,之后提出一个数据流优化算法对PFG图进行数据流优化,生成优化的PFG图,流程分割阶段按照流程中定义的角色将优化的PFG图进行分割,最终为每个角色生成各自的子流程BPEI-S。

  2 BPEL流程变换

  BPEL流程变换阶段的目的就是要把BPEL流程转换成传统程序设计语言的形式,并用PFG图表示,这样才能对其进行数据流分析。

  2.1 赋值变换

  赋值变换是将BPEL流程中操作数据的活动转换成变量赋值的形式.在BPEL流程中,消息通过<invoke>、<recieve>、<onMessage>、<reply>等活动进行传输.为了对BPEL流程进行数据流分析,这些活动必须转换成为对变量的赋值操作。比如,一个同步的调用活动<invoke partnerLink=samplePL”operaion=”“request”outputVariable=“response”/>可以被转换成为response=inyoke(samplePL,request)。这个语句是对变量response的定义,对变量request的引用。

  2.2异步化变换

  BPEL流程的分散化执行依赖于异步通信机制,因此用SEND和RECV两个操作原语将同步的消息通信转换成异步的消息通信。

  2.3 消息展开

  消息展开变换将BPEL中的用XML(Extensible Markup Language)描述消息展开成一组变量的形式。BPEL是基于消息的流程描述语言,但是传统数据流分析方法不能够直接应用于基于消息的程序语言,这是因为不能够直接分析出消息的定义和引用。例如a=b可以称为是变量b对变量a的定义,但是对于消息m和消息n,m.part1=m.part2则只是对消息m的一部分进行定义,因此需要把消息展开。BPEL中采用三种变量声明:Web服务描述语音(WSDL)消息类型、XML模式类型和XML模式元素。由于所有的XML类型的数据都可以用XPath表示成一棵树,所以将BPEL中的所有消息变量展开,每个消息变量由树的所有叶子节点组成.这样就以对BPEL流程中的变量进行细粒度的数据流分析。

  3 数据流分析与优化

  对BPEL流程的数据流优化主要分为两个步骤。首先是定义数据流方程分析BPEL流程中的数据流信息,然后是制定优化算法对这些数据流信息进行优化,对BPEL流程数据流分析分为串行和并行两部分。BPEL流程的串行部分采用传统数据流分析方法。针对并行部分,本研究提出了一组数据流方程,可以用来计算具有同步的并行程序的数据流信息;提出的数据流优化算法是复制传播算法(CP)的扩展.复制传播将赋值语句右部的参数传播到左部的变量使用的位置.如果该赋值语句可以传播到所有的引用位置,则成为无用语句,可以通过删除该语句优化程序的数据流.本研究提出的优化算法不仅要删除那些无用语句,对于那些不能传播到所有引用位置的赋值语句同样要进行最大程度的传播.因为删除无用语句可以减少需要传输的数据量,而最大程度地传播赋值语句可以改变数据的流向,将数据发送到真正目的地。

  3.1 数据流信息收集

  由于对BPEL流程的优化是对复制传播算法的扩展,因此数据流收集要满足复制传播的前提条件,即对于一个赋值语句X=Y,若要将Y传播到X的一个引用Ux上,则赋值X=Y是到达Ux的唯一定义,并且在工=Y和Ux之间没有对Y的定义。

  这两个条件为数据流分析中的生成(gen)和剔除(kill)定义了不同的操作语义生成:

数据流信息收集

  对于赋值语句s:X=Y,如果s在基本块B中并且在s之后没有对Y的定义,则称日生成赋值语句s:X=Y剔除:对于赋值语句s:X=Y,如果在s之后X或者Y被重新定义了,则称剔除了赋值语句s:X=Y,因此数据流方程中的gen[n]和kill[n]集合要根据以上语义计算。

  3.2数据流优化

  传统复制传播算法将复制传播和无效代码消除结合在一起,只有当一个赋值语句可以传播到它的所有引用的时候,才将该语句传播并删除该语句。经过这样优化的BPEL流程可将不必要的数据传输删除,但是无法改变数据的流向,也就是无法将数据发送到其真正的目的地。因此,笔者在传统赋值传播算法基础上进一步扩展,将那些不能传播到所有引用的赋值语句也进行传播,数据流优化算法说明如下:

  令G为BPEL流程的PFG表示;U是所有赋值语句的集合;use[s]是所有包含对定义s引用的语句集合。

  输入:PFG图G及每个节点的in集合

  输出:优化后的PFG图G’

数据流优化

  4 BPEL流程分割

  BPEL流程的分割是基于流程中参与的角色进行的,如果一个BPEL流程中有n个参与者,那么这个流程会被分割成为n+1个流程片段,每个流程片段需要遵循以下约束:每个流程片段至少包含一个BPEL活动;不同的流程片段不会共享一个活动.对于笔者引入的SEND和RECV两个原语处理则要遵循以下规则:

  (1)如果有属于同一簇的SEND和RECV原语,则同一簇的SEND和RECV原语要恢复成为BPEL中的双向调用活动(具有输入和输出参数的<invoke>活动).

  (2)如果在一个簇中只有SEND而没有RECV原语,则这些SEND原语被翻译成单向调用活动(只有输入参数的<invoke>活动).

  (3)如果在一个簇中只有RECV原语没有SEND原语,则这些RECV原语被翻泽成接收活动<receive>。

  (4)如果SEND原语中包含RECV原语。

  5 方法的实例说明

  下面用一个完整的例子说明方法的实施步骤,FindRoute是寻找两个人所在位置之间路径的BPEL流程,由两个地址薄服务AddressServicel、AddressService2,和一个路径服务RouteService组合而成。其中,地址薄服务接收人名并返回这个人所在的地址。路径服务接收两个地址并返回这两个地址之间的路径。FindRoute流程源码如下:

方法的实例说明

  6 结论

  本研究提出基于数据流优化的BPEL流程分割方法,对BPEL流程的数据流进行优化并按照流程中的角色进行分割.经过分割的BPEL流程采用分散式协调模式,不仅可以增强系统的性能还可以满足动态业务流程管理的需求,实验结果表明,对BPEL流程的有效分割和数据流优化减少了系统负荷和响应时间,尤其是当并行访问数量或者消息容量较大时。优化效果更明显.和其他相关分割方法相比,并且生成明确的分割结果,流程执行的响应时间也降低了30%~50%。此外,文中提出的对BPEL流程的数据流分析方法可以作为很多相关工作的基础,为BPEL流程数据依赖和数据流优化提供技术支持。


第三十八届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。