基于程序依赖图的bpel过程一致性度量方法

文档序号:6399847阅读:601来源:国知局
专利名称:基于程序依赖图的bpel过程一致性度量方法
技术领域
本发明属于服务计算领域,具体是一种度量两个BPEL过程行为一致性程度的方法。
背景技术
在面向服务架构(SOA)中,BPEL(业务过程执行语言)已经成为描述基于服务的商业过程的业界标准。随着BPEL过程的不断丰富和扩展,许多商业团体和公司建立了 BPEL过程库。为了更好地对库中的众多BPEL过程进行检索、维护、管理和重用,提出一种合适的标准来度量两个BPEL过程的一致性程度变得越来越迫切。例如,当管理人员向BPEL过程库中增添一种新的过程时,他们首先应该确定该库中是否存在此BPEL过程,然后需要考虑哪些BPEL过程与这种新添加的过程相类似,具有多少的一致性程度。在这种情况下,研究不同的BPEL过程之间一致性就具有重要意义。由于BPEL过程中的活动包含很多信息,导致难以度量两个BPEL过程之间的一致性程度,同时对于给出它们之间的一致性的定义也成为一个挑战。一些学者将过程模型的一致性定义为“均匀度,标准化和无矛盾”。由于BPEL过程中的活动之间的行为关系是评判两个BPEL过程是否一致的基础,所以,定义BPEL过程一致性为“活动关系不变性和无矛盾”。不同的标准能用于制定BPEL过程一致性。比如,从接口的角度,定义基于接口匹配程度的一致性标准。然而,由于即使两个BPEL过程共享同一接口集合,它们的行为也可能千差万别,所以这个标准是不合适的。因而,提出从行为的角度来研究BPEL过程之间的
一致性。在过程模型领域中,一些学者利用线性时间分支时谱中的等价标准定义过程模型之间的行为一致性,其中互模拟(bisimulation)和迹等价(trace equivalence)是最常用的方法。而它们在度量过程模型一致性时只能给出“是/否”二元判断,却不能区分出模型之间具有多大的差别。还有一些学者利用图形结构(thegraphical structure)的方法评判过程模型一致性。然而,从图形结构上看起来非常相似的模型可能差别巨大,所以图形结构可以作为评判过程模型一致性的一个指标。Alves de Medeiros等提出了典型行为(exemplary behavior)的方法比较过程模型一致性,典型行为能够从实际模型执行的事件日志中获得。这种方法给出O到1.0的具体数值来量化过程模型之间一致性程度。这些方法都是一些形式化的方法,都未能描述过程模型中的本质行为关系。于是,Weidlich等提出行为侧画(behavioral profile)的方法度量过程模型的一致性。行为侧画的方法描述了过程模型中活动之间三种本质的行为约束。可以简单地认为只要所有对应的活动对之间的行为约束是完全相同的,那么这两个过程模型就是一致的。这种方法受到两个过程模型之间活动映射的影响很小,并且也能够给出O到1.0的具体数值来量化一致性程度。所以,行为侧画的方法在度量过程模型一致性是非常合适的。由于在软件工程领域相似性和一致性的概念是非常接近的,所以很多度量过程模型的相似性的方法也能用于度量过程模型一致性。在评判过程模型的相似性方面,有学者根据模型结构、模型语义判断过程模型的相似性,还有一些学者从活动行为的角度过程模型的相似性问题,比如,基于活动间因果关系(causal footprint)的方法,首要变迁序列(principal transition sequences)的方法、行为侧画和Jaccard系数(Jaccard coefficient)的方法。然而,上述的这些方法都只是应用于过程模型层面,一些重要的信息(比如数据、伙伴链接等)都被抽象掉,因此,它们不适用于度量BPEL过程一致性。

发明内容
本发明的目的在于提供一种基于程序依赖图的BPEL过程一致性度量方法,该方法实现了对BPEL过程库中的过程进行检索、管理、维护和重用的功能。实现本发明目的的技术解决方案为:一种基于程序依赖图的BPEL过程一致性度量方法,以两个BPEL过程为输入,以这两个BPEL过程的一致性程度为输出结果;该方法使用的BPEL过程必须符合WS-BPEL2.0规范,并且过程中不包含〈link〉活动;步骤如下:(I)输入两个BPEL过程,根据BPEL的特性将两个BPEL过程分别转化为控制流程图;(2)根据每个BPEL过程的控制流程图,分析活动间的三种依赖关系,生成程序依赖图PDG ;(3)通过对两个BPEL过程的程序依赖图的分析,计算出这两个BPEL过程的一致性程度。本发明与现有技术相比,其显著优点:本发明基于BPEL过程中活动之间的依赖和互斥关系,提出了一种定量的BPEL过程一致性度量方法,该方法可以对两个BPEL过程的一致性给出一个从O到I的数值,而不是像传统方法那样仅提供一致和不一致的定性结论,从而有效区分不同程度的一致性。


图1为基于程序依赖图度量BPEL过程一致性的整个流程。图2为基于程序依赖图度量BPEL过程一致性程度的具体步骤流程图。图3为两个BPEL过程实例的控制流程图,图(a)为输入的第一个BPEL过程,图(b)为输入的第二个BPEL过程。图4为本发明两个实例依赖分析得到的程序依赖图,图(a)为第一个BPEL过程所生成的程序依赖图,图(b)为第二个BPEL过程所生成的程序依赖图。图5为本发明两个实例的依赖关系矩阵。图6为本发明计算两个实例的一致性程度。
具体实施例方式本发明提出基于程序依赖图度量两个BPEL过程的行为一致性程度的方法。在BPEL程序依赖图(BTOG)中,BPEL过程中活动间的关系分为互斥关系和依赖关系,而依赖关系包含控制依赖、数据依赖和异步调用依赖关系。当BPEL过程中存在<if>、〈switch〉或〈pick〉选择结构活动时,由于选择结构活动中仅一条分支上的活动能够被执行,这样不同分支上的活动之间也存在着一种关系,这种关系被定义为互斥关系。控制依赖被定义为一个活动Xj控制依赖于另一个活动Xi当且仅当Xi决定Xj能否执行。数据依赖又分为真数据依赖,反数据依赖和输出数据依赖。一个活动Xj真数据依赖于它之前的另一个活动Xi,当且仅当Xj使用了 Xi定义的某个变量;一个活动Xj反数据依赖于它之前的另一个活动Xi,当且仅当Xj定义了 Xi所使用的某个变量。一个活动Xj输出数据依赖于它之前的另一个活动Xi,当且仅当Xj重新定义了 Xi定义的某个变量。实际上,反数据依赖和输出数据依赖可通过变量重命名的方式予以避免。BPEL过程中的一个活动Xj异步调用依赖于它之前的一个活动Xi,当且仅当Xi是一个异步调用〈invoke〉活动,而Xj是用来接收相应返回结果的〈receive〉活动。其中,一个BPEL过程中的〈invoke〉活动可能与另一个BPEL过程中具有异步调用依赖关系的〈invoke〉和〈receive〉活动构成1: 2的对应关系。本发明就是对所提出的方法度量BPEL过程一致性的具体实现。要求输入的BPEL过程满足WS-BPEL2.0规范,尤其是是一些判定条件〈condition〉必须严格遵守所设定的形式,才能够解析出条件中所包含的输入输出变量,并且这些过程中并发活动之间不存在<link>。下面结合附图对本发明做进一步说明。本发明基于程序依赖图的BPEL过程一致性度量方法,其整体流程如图1所示。首先,根据BPEL的特性将两个BPEL过程分别转化为控制流程图;然后,根据每个BPEL过程的控制流程图,分析活动间的三种依赖关系,生成程序依赖图PDG ;最后,通过对两个BPEL过程的程序依赖图的分析,计算出这两个BPEL过程的一致性程度。对于符合规范的BPEL过程,本发明能够解析出其中所包含的所有信息,包括所有类型的活动以及活动的输入输出、伙伴链接、端口类型等。具体步骤如下(如图2所示):1.对BPEL过程建模,主要是根据BPEL的特性将BPEL过程转化为控制流程图,具体可分为以下步骤:1.1按照深度优先的方式遍历给定的BPEL过程,获取所有的活动结点,并且给BPEL过程的根活动设定为域〈scope〉活动;1.2根据所获取活动的类型,选择与此活动类型相对应的解析函数分析BPEL过程中的每个活动结点的属性,将所有活动所共有的活动属性提取出来存入内存中,然后根据活动类型,另行存储每种类型的活动所特有的属性;解析函数根据活动类型可以化分为以下几类:基本活动的解析函数从BPEL过程中读取的基本活动的属性,活动的属性主要包含名称、类型、前驱后继关系、输入输出变量、伙伴链接和端口类型,在块结构中,只有在顺序〈sequence〉活动下的活动之间才存在前驱后继关系,而块结构是由结构化活动与其子活动组成,具有纵向的层次感;对于结构化活动<if>、〈switch〉、〈pick〉、〈while〉和〈repeatUtil〉,它们的输入变量只能从条件语句〈condition〉中获取出来,但这些条件语句必须满足bpel: getVariableProperty ('','')或者 bpws IgetVariableDataC 1 , 1 1 )这两种形式才能够被解析,而输出变量在结构化活动都为空null ;选择和循环结构活动的解析函数从BPEL过程中读取此类型活动的属性,其中输入变量从条件〈condition〉中解析出来,并且,读取对应条件〈conditon〉下的分支活动;
并发结构和顺序结构活动的解析函数从BPEL过程中读取此类型活动的属性,并且读取其每条分支下的活动。根据每个BPEL过程的控制流程图,分析活动间的三种依赖关系,生成程序依赖图roG,其具体包括以下步骤:2.1遍历每个BPEL过程的控制流程图,将控制流程图中除顺序〈sequence〉、并发〈flow〉和域〈scope〉三种类型以外的基本活动和结构化活动存入活动结点集N中;2.2遍历活动结点集N,如果存在结构化活动,将结构化活动与其所有子活动所构成的控制依赖关系添加到依赖关系集E ;2.3给所有无控制依赖的活动增加一个共同开始活动结点Entry,使这些活动都控制依赖于Entry结点,并将Entry结点和所有无控制依赖的活动之间的控制依赖关系添加到依赖关系集E中,Entry结点添加到活动结点集N中;2.4根据每个活动的前驱后继关系和输入输出变量,找到所有活动间的数据依赖关系,并添加到依赖关系集E中;2.5判断一个异步〈invoke〉活动是否与另一个〈receive〉活动的伙伴链接的名称和端口类型的名称相同,若相同,这两个活动之间存在异步调用依赖关系,将此依赖关系添加到依赖关系集E中,其中异步〈invoke〉活动只有输入变量,其执行采用非阻塞方式:BPEL服务在执行该异步〈invoke〉活动后可继续执行其后续活动,该异步〈invoke〉活动的调用结果会由之后的一个〈receive〉活动负责接收;2.6根据活动结点集N和依赖关系集E,从而得到BPEL过程的程序依赖图,并且以矩阵的形式将所有活动间的依赖关系展示出来,需要注意的是:在矩阵中活动前后的位置很重要,比如两个活动Oi1, n2)之间存在控制依赖关系,但是活动(n2,H1)之间就不存在控制依赖关系。其中,步骤2.4的方法如下:遍历活动结点集N,判定获取的一个活动的输入变量名称与该活动的前驱活动的输出变量名称是否相同,如果相同,将此数据依赖关系添加到依赖关系集E中,然后获取另一个活动,寻找该活动与它的前面的活动的数据依赖关系;如果获取的一个活动的输入变量名称与该活动的前驱活动的输出变量名称不相同,首先需要判断与该活动的前驱活动是否为结构化活动,如果不是结构化活动,根据活动的前驱后继关系,获取该活动的前驱活动的前驱活动,判定该活动与它前驱活动的前驱活动的输出变量名称是否相同;如果是结构化活动,遍历结构化活动的子活动,判定其所有子活动的输出变量名称是否与该活动的输入变量名称相同,如果相同,将这些数据依赖关系都添加到依赖关系集E中,如果该活动与此结构化活动的所有子活动没有数据依赖关系,则重复上述的判定,直到找到该活动的数据依赖关系或最顶层活动为止;判断活动自身的输入变量名称是否等于输出输出变量名称,如果相等,将此数据依赖关系添加到依赖关系集E中;如果BPEL过程中存在〈while〉或〈repeatUntil〉循环活动,判定此类活动的输入变量名称是否与该活动的子活动的输出变量名称相同,如果相同,将此数据依赖关系添加到依赖关系集E中;还需要判定此类活动的子活动之间是否存在反数据依赖关系,如果存在,将此数据依赖关系也添加到依赖关系集E中。
分析得到这两个BPEL过程之间不一致的对应活动对,然后基于不一致的此对应活动对的数目计算出两个BPEL过程的一致性程度;其具体包括以下步骤:3.1根据两个BPEL过程的程序依赖图的活动结点集NI和N2,建立对应的活动结点集Nal和Na2,其中对应关系是指两个活动结点集中的活动相互映射,事实上,一个BPEL过程中异步调用依赖的〈invoke〉和〈receive〉活动可能与另一个BPEL过程中的〈invoke〉活动构成2: I的映射关系;3.2如果程序依赖图中包含选择结构活动<if>、〈switch〉或〈pick〉,建立选择结构活动的不同分支上的活动之间互斥关系集R1和R2 ;3.3遍历两个BPEL过程的所有的活动对,判定对应活动对之间的互斥关系和依赖关系是否相同,只要有一种关系不相同,则认为这两个活动对是不一致的,并将其分别添加到不一致的活动对集Q1和Q2,而活动对由活动节点集中任意的两个活动组成的一对活动以及一个活动与自身组成的一对活动;3.4根据两个BPEL过程的活动结点集Nal和Na2的中活动结点数目a和b,以及不一致的对应活动对集Q1和Q2中的活动对数目c和d,采用公式I计算出这两个BPEL过程的一致性程度P。
权利要求
1.一种基于程序依赖图的BPEL过程一致性度量方法,其特征在于:以两个BPEL过程为输入,以这两个BPEL过程的一致性程度为输出结果;该方法使用的BPEL过程必须符合WS-BPEL2.0规范,并且过程中不包含〈link〉活动;步骤如下: (1)输入两个BPEL过程,根据BPEL的特性将两个BPEL过程分别转化为控制流程图; (2)根据每个BPEL过程的控制流程图,分析活动间的三种依赖关系,生成程序依赖图PDG ; (3)通过对两个BPEL过程的程序依赖图的分析,计算出这两个BPEL过程的一致性程度。
2.根据权利要求1所述的基于程序依赖图的BPEL过程一致性度量方法,其特征在于,步骤(I)具体步骤如下: 1.1按照深度优先的方式遍历给定的BPEL过程,获取所有的活动结点,并且给BPEL过程的根活动设定为域〈scope〉活动; 1.2根据所获取活动的类型,选择与此活动类型相对应的解析函数分析BPEL过程中的每个活动结点的属性,将所有活动所共有的活动属性提取出来存入内存中,然后根据活动类型,另行存储每种类型的活动所特有的属性; 解析函数根据活动类型化分为以下几类: 基本活动的解析函数从BPEL过程中读取基本活动的属性,活动的属性包含名称、类型、前驱后继关系、输入输出变量、伙伴链接和端口类型,在块结构中,只有在顺序〈sequence〉活动下的活动之间才存在如驱后继关系; 选择和循环结构活动的解析函数从BPEL过程中读取此类型活动的属性,其中输入变量从条件〈condition〉中解析出来,并且读取对应条件〈conditon〉下的分支活动; 并发结构和顺序结构活动的解析函数从BPEL过程中读取此类型活动的属性,并且读取其每条分支下的活动。
3.根据权利要求1所述的基于程序依赖图的BPEL过程一致性度量方法,其特征在于,步骤(2)具体步骤如下: . 2.1遍历每个BPEL过程的控制流程图,将控制流程图中除顺序〈sequence〉、并发〈flow〉和域〈scope〉三种类型以外的基本活动和结构化活动存入活动结点集N中; .2.2遍历活动结点集N,如果存在结构化活动,将结构化活动与其所有子活动所构成的控制依赖关系添加到依赖关系集E中; .2.3给所有无控制依赖的活动增加一个共同开始活动结点Entry,使这些活动都控制依赖于Entry结点,并将Entry结点和所有无控制依赖的活动之间的控制依赖关系添加到依赖关系集E中,Entry结点添加到活动结点集N中; .2.4根据每个活动的前驱后继关系和输入输出变量,找到所有活动间的数据依赖关系,并添加到依赖关系集E中; .2.5判断一个异步〈invoke〉活动是否与另一个〈receive〉活动的伙伴链接的名称和端口类型的名称相同,若相同,这两个活动之间存在异步调用依赖关系,将此依赖关系添加到依赖关系集E中; .2.6根据活动结点集N和依赖关系集E,得到BPEL过程的程序依赖图,并且以矩阵的形式将所有活动间的依赖关系展示出来。
4.根据权利要求1所述的基于程序依赖图的BPEL过程一致性度量方法,其特征在于:步骤2.3的方法如下: 遍历活动结点集N,判定获取的一个活动的输入变量名称与该活动前驱活动的输出变量名称是否相同,如果相同,将此数据依赖关系添加到依赖关系集E中,然后获取下一个活动,寻找该活动与它前面的活动的数据依赖关系;如果获取的一个活动的输入变量名称与该活动的前驱活动的输出变量名称不相同,首先判断与该活动的前驱活动是否为结构化活动,如果不是结构化活动,根据活动的前驱后继关系,获取该活动的前驱活动的前驱活动,判定该活动与它前驱活动的前驱活动的输出变量名称是否相同;如果是结构化活动,遍历结构化活动的子活动,判定其所有子活动的输出变量名称是否与该活动的输入变量名称相同,如果相同,将这些数据依赖关系都添加到依赖关系集E中,如果该活动与此结构化活动的所有子活动没有数据依赖关系,则重复上述的判定,直到找到该活动的数据依赖关系或最顶层活动为止; 判断活动自身的输入变量名称是否等于输出输出变量名称,如果相等,将此数据依赖关系添加到依赖关系集E中; 如果BPEL过程中存在〈while〉或<r印eatUntil〉循环活动,判定此类活动的输入变量名称是否与该活动的子活动的输出变量名称相同,如果相同,将此数据依赖关系添加到依赖关系集E中;还需要判定此类活动的子活动之间是否存在反数据依赖关系,如果存在,将此数据依赖关系也添加到依赖关系集E中。
5.根据权利要 求1所述的基于程序依赖图的BPEL过程一致性度量方法,其特征在于,步骤(3)的方法如下: .3.1根据两个BPEL过程的程序依赖图的活动结点集N1和N2,建立对应的活动结点集Nai和Na2,其中对应关系是指两个活动结点集中的活动相互映射; .3.2如果程序依赖图中包含选择结构活动<if>、〈switch〉或〈pick〉,建立选择结构活动的不同分支上的活动之间互斥关系集R1和R2 ; .3.3遍历两个BPEL过程的所有的活动对,判定对应活动对之间的互斥关系和依赖关系是否相同,只要有一种关系不相同,则认为这两个活动对是不一致的,并将其分别添加到不一致的活动对集Q1和Q2: .3.4根据两个BPEL过程的活动结点集Nal和Na2的中活动结点数目a和b,以及不一致的对应活动对集Q1和Q2中的活动对数目c和d,采用公式I计算出这两个BPEL过程的一致性程度P。
全文摘要
本发明公开了一种基于程序依赖图的BPEL过程一致性度量方法。以两个BPEL过程为输入,以这两个BPEL过程的一致性程度为输出结果;该方法使用的BPEL过程必须严格符合WS-BPEL2.0规范,并且过程中不包含<link>活动;根据BPEL的特性将两个BPEL过程分别转化为控制流程图;根据每个BPEL过程的控制流程图,分析活动间的三种依赖关系,生成程序依赖图PDG;基于两个BPEL过程的程序依赖图,计算出这两个BPEL过程的一致性程度。本发明提出的方法,可以对两个BPEL过程的一致性给出一个从0到1的数值,而不是像传统方法那样仅仅提供一致和不一致的定性结论,从而有效区分不同程度的BPEL过程一致性。
文档编号G06Q10/06GK103150626SQ20131006455
公开日2013年6月12日 申请日期2013年3月1日 优先权日2013年3月1日
发明者宋巍, 张学伟, 邢建春, 杨启亮, 张文嘉 申请人:南京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1