一种基于bpel的控制信息流图的建模方法

文档序号:6602433阅读:221来源:国知局
专利名称:一种基于bpel的控制信息流图的建模方法
技术领域
本发明是一种基于BPEL控制信息流图的建模方法,主要用于解决BPEL组合服务 回归测试中的建模问题。
背景技术
以服务计算为核心的服务科学是一门融合软件信息技术和商业服务理念的综合 性前沿学科,代表了软件开发领域的最新研究成果和发展方向。服务计算以面向服务的体 系结构(SOA)为中心,以Web服务为主要实现形式,以服务组合为关键应用模式,服务良好 的复用性、灵活性和松耦合特征使得面向服务的计算成为一种具有里程碑意义的分布式计 算技术,也使组合服务的演化和维护呈现了新的规律。Web服务的高复用性以及用户需求的不稳定性决定了组合服务必然处于频繁的变 动和演化之中,因此设计一个能够适应组合服务特点的回归测试系统十分必要。目前的研 究一般局限于流程的回归测试,而组合服务是内部流程、外部接口与成员服务的统一体,成 员服务的替换以及接口的改变也是服务演化的重要内容。由于成员服务的实现存在差异, 服务的替换很可能引起组合服务功能偏离或运行失败,所以绑定变换后的组合服务也必须 进行重新测试。因此,对组合服务的流程、接口、绑定和路径条件的表示显得尤为重要,如何 更完整有效地对组合服务进行建模是我们关注的问题。

发明内容
技术问题本发明的目的是提供一种基于BPEL的控制信息流图的建模 (BPELControl and Messaging Flow Graph with,BCMFG)方法,以解决 BPEL 组合服务的建 模问题。较之其他的BPEL组合服务模型,该模型能对BPEL组合服务进行全面的回归测试 变更影响分析,识别包括流程、绑定、接口、路径条件在内的各种修改。技术方案本发明为实现上述目的,采用如下技术方案本发明一种基于BPEL的控制信息流图的建模方法,其特征在于包括如下步骤步骤1)对BPEL文档进行解析,生成DOM树;步骤2)遍历DOM树结点,当遇到可以映射为BCMFG的DOM树节点时,创建BCMFG 元素,并给BCMFG元素的域赋值;步骤3)利用BCMFG元素间的控制关系构建BCMFG模型;步骤4)根据BCMFG模型计算所有BCMFG路径。2、根据权利要求1所述的一种基于BPEL的控制信息流图的建模方法,其特征在于 步骤2)所述的给BCMRi元素的域赋值方法如下对DOM树中的每个节点进行遍历,b)若节点代表对伙伴链接partnerLink,则创建BCMFG元素m,m的Category域的 值设定为服务节点集SN,使用节点中相关属性为m的Name域赋值;c)若节点代表基本活动invoke或receive或reply,则首先创建BCMFG元 素m,m的Category域的值设定为交互节点集IN,使用节点中相关属性为m的Name域、partnerLink域、PortType域禾口 Operation域贝武值,并通过partnerLink域值搜索至Il与节 对应得服务节点s ;d)若节点代表基本活动assign,则创建BCMFG元素m,m的Category域值设定为 普通节点集NN,使用节点中相关属性为m的Name域赋值,并通过e中的partnerLink属性 值搜索到对应得服务节点s,利用e中的子元素endpoint为s的Endpoint域赋值;
e)若节点代表结构化活动If,则创建BCMFG元素H^m1的Category域值设定为单 选分支节点EDN,使用节点中相关属性为Hi1的Name域和Condition域赋值,并处理If内部 的基本活动或结构化活动;当节点中含有子元素else if,则继续处理子元素else if的内 部活动,在完成对所有子元素else if的处理后,创建BCMFG元素m2,m2的Category域值设 定为单选归并节点EMN,使用节点中相关属性为m2的Name域赋值,最后处理else的内部活 动,同时更新在之前处理if或else if所生成的所有BCMFG元素的Target域值;f)若节点代表结构化活动While或foreach,则分别创建BCMFG元素Hi1和m2,Hi1 的Category域值设定为单选分支节点EDN,m2的Category域值设定为单选归并节点EMN, 使用节点中相关属性为Hi1的Name域和Condition域及m2的Name域赋值;然后创建m2到 Hi1的控制边ce,同样利用e中相关属性为H^rn2及ce的Target域和Source域赋值;g)若节点代表结构化活动R印eat-Until,则创建BCMFG元素Hi1 ,Hi1的Category域 值设定为单选分支节点EDN,使用节点中相关属性为Hi1的Name域和Condition域赋值,然 后处理Itepeat-Until内的所有子活动%,i为大于1的自然数,记录下其中首个活动m2,并 创建Hi1到m2的控制边ce,再次利用e中相关属性更新mi、m2及ce的Target域和Source 域;h)若节点代表结构化活动Pick,则创建BCMFG元素Hi1, Hi1的Category域值设定 为单选分支节点EDN,使用节点中相关属性为Hi1的Name域赋值,对于〈onMessage〉中的每 个活动,创建BCMFG元素IV i为大于1的自然数,Hii的Category域值设定为交互节点IN, 同样使用节点中相关属性为Hii的PartnerLink域、PortType域和Operation域赋值,并通 过partnerLink域值搜索到对应得服务节点Si,创建从Si到Hii的控制边Cei,并根据控制流 关系更新Hii、Si和Cei的Target域值及Source域值,对于<onAlarm>中的每个活动,创建 BCMFG元素πι」(j > max (i),max ()表示取最大值,即j从i+Ι开始依次取值),Hij的Category 域值设定为普通节点NN,同样使用e中相关属性为Ii^的Name域赋值,最后创建BCMFG元素 mk,(k > max(j),即k从j+Ι开始依次取值),mk的Category的域值设定为单选归并节点 EMN ;i)若节点代表结构化活动Flow,则创建BCMFG元素Hi1和m2,Hi1的Category域值 设定为并发分支节点CBN,m2的Category域值设定为并发归并节点CMN,使用节点中相关属 性为Hi1的Name域和m2的Name域赋值。有益效果本发明BPEL组合服务映射为富含信息的基于BPEL的控制信息流图模 型,在表达顺序、选择、并发、循环等多种控制结构以及流程与成员服务消息交互行为的同 时,向元素中添加绑定信息和谓词约束信息,用于控制流分析、变更的识别、路径的比较以 及回归测试用例的选择与生成。与传统BPEL流图相比,不仅可以表达BPEL流程,还能表达 组合服务内部的消息交互行为,从真正意义上对组合服务进行建模。


图1是BCMRi元素示意图,图中给出了所有类型的节点和边的图形表示。图2是BCMFG控制流图模型的构建流程。图3是BPEL中<partnerLink>元素转化为BCMFG子图的流程。图4是BPEL中〈invoke〉元素转化为BCMFG子图的流程。图5是BPEL中〈receive〉元素转化为BCMFG子图的流程。图6是BPEL中<r印ly>元素转化为BCMFG子图的流程。图7是BPEL中〈assign〉元素转化为BCMFG子图的流程。图8是BPEL中<If>元素转化为BCMFG子图的流程。图9是BPEL中〈While〉元素转化为BCMFG子图的流程。图10是BPEL中<R印eat_Until>元素转化为BCMFG子图的流程。图11是BPEL中<Pick>元素转化为BCMFG子图的流程。图12是BPEL中<Flow>元素转化为BCMFG子图的流程。图13是BPEL中<Foreach>元素转化为BCMFG子图的流程。图14是BPEL中〈sequence〉和<scope>元素转化为BCMFG子图的流程。图15利用基于BPEL的控制信息流图模型对贷款组合服务的BPEL文档构建生成 的BCMFG图。
具体实施例方式下面结合附图对发明的技术方案进行详细说明本发明的方法是把BPEL文件转换为基于BPEL的控制信息流图(BCMFG),然后根据 BCMFG生成BCMFG路径,如图1所示。一、模型定义BCMFG 是一个三元组<N,E ;F>,其中N为节点集,且N = NN U IN U SN U EN U丽U CN,式中,NN是普通节点集,IN是交互节点集,SN是服务节点 集,EN是单选节点集,丽是多选节点集,CN是并发节点集,到达节点的有向边的数目称作节 点的入度,从节点出发的有向边的数目称作节点的出度;E = CE U ME,其中,CE是控制边集 合,ME是消息交互边集合;节点、边统称为BCMFG的元素。F为BCMFG元素的域。1、BCMFG 元素BCMFG的普通节点代表BPEL流程中不需与成员服务交互的基本活动,如〈assign〉、<wait>等。交互节点代表BPEL中与成员服务交互的基本活动,包括〈invoke〉、 <receive>,<reply>以及<pick>结构中的〈onMessage〉活动四种。服务节点表示与流程交 互的成员服务。单选节点(Exclusive Node)也可称作“异或”(XOR)节点,分为单选分支节 点(入度等于1、出度大于1)和单选归并节点(入度大于1、出度等于1),单选节点有且只 有一条输入或者输出边被触发;多选节点(Multiple Node)也可称作“或”(OR)节点,分为 多选分支节点和多选归并节点,可以有任意数目的边被触发;并发节点(ConcurrentNode) 也可称作“与”(AND)节点,分为并发分支节点和并发归并节点,所有的边都必须被触发。图 2给出了 BCMFG元素的图形化示意图,表1给出了 BCMFG元素的分类及相应缩略语。2、BCMFG 元素的域
EBCMFG元素的域F记载元素的信息。EBCMFG的所有元素都含有HashCode域、Id 域、Source 域、Target 域禾口 Category 域。(I)HashCode域是由散列函数产生的字符数组,由于相同的字符串产生的散列码 相同,所以可以利用散列码检测BPEL文档的改动。
(2) Id域的值作为BCMFG元素的标识,在BCMFG图模型中是唯一的。(3) Source域和Target域分别表示该元素的前驱元素集和后继元素集,对于 BCMFG节点而言,它的前驱元素集和后继元素集一般为边,相应地,边的前驱节点集和后继 节点集一般为节点。(4) Category域表示元素类型,普通节点的Category域值是NN,交互节点是IN,服 务节点是SN,单选分支节点是EDN,单选归并节点是EMN,多选分支节点是MBN,多选分支节 点是MMN,并发分支节点是CBN,并发归并节点是CMN,控制边是CE,消息交互边是ME。此外,不同类型的元素还有其特定的域。(1)Name域为BCMFG的节点所含有,其域值为对应的BPEL活动的Name属性值。(2) PartnerLink 域为交互节点所特有,对于〈invoke〉、〈receive〉、<reply> 以及 <pick> 结构中的 <onMessage> 舌云J],PartnerLink 域值为i亥 舌云J]对应的 <partnerLink> 的 Name属性值。(3)C0nditi0n域为单选节点、多选节点、并发节点、控制边所含有,它表示转移条 件(谓词约束)。对于单选节点、多选节点、并发节点而言,其Condition域表示该节点的转 移条件,其值为对应BPEL结构化活动Condition属性的值;对于由<link>生成的边,该域 的值为<link>元素的〈transitionCondition〉的值。为了分析控制流得到路径转移信息, 有必要向由单选分支节点发出的边添加转移条件信息,如果单选节点α的condition值为 c,那么α的两条出边的condition值分别为c和! C。(4)Endpoint域为服务节点所特有,其值为该节点代表的成员服务的端点地址。(5)PortType域和Operation域为交互节点所有,它们的值分别为该节点对应的 BPEL活动的PortType属性和Operation的值。3、BCMFG 路径BCMFG的路径定义为包含节点和有向边的元素集合。每条路径都从BCMFG的初始 节点开始,初始节点有两种情况如果流程始于开始活动〈receive〉,即流程通过接收成员 服务发来的调用消息被激发,此时路径开始于服务节点SN ;如果流程始于另一种开始活动 <pick>,这时路径开始于单选分支节点EDN。这里首先给出控制流路径和消息路径的定义, 并在此基础上给出BCMFG路径的定义。(1)控制流路径Spf= Iei,…,ei+k,…ei+n} (O 彡 k 彡 n, ei+k e IN U NN U EN U MN U CN U CE),如果对于站 e ;?沁,日它,印,ei+p e ei+k. targ ert (O ^ ρ ^ η),则称pf是一条控制流路径。(2)消息路径设 pm = Iej,…,eJ+k,... eJ+m} (O 彡 k 彡 m,eJ+k e SN U ME),pm 始于 消息交互边em并终止于消息交互边e' m,如果对于e /^Λ。+ifc g终止消息边),
e+p e eJ+k. targ et (O彡ρ彡m),则称pm是一条消息路径。(3) BCMFG路径设pf是控制流路径,pmi (1 < i < η)是消息路径, ρ = Pf U pml U ... U pmi U ... U pmn (1 彡 i 彡 η)。如果对于 VpJ}化 n), Binm,inm e pf Λ inm e IN Λ em e pmi Λ (em e inm. target) V em e inm. source),贝Ij称 ρ 是一条 BCMFG路径。二、方法流程利用基于BPEL的控制信息流图模型对BPEL组合服务建模主要分为两个步骤构 建BCMFG模型和计算BCMFG路径。1、构建 BCMFG 模型(2)使用DOM解析器将BPEL文档和WSDL文档解析为DOM树,每个树节点带有相关
fn息
(3)对DOM树中的每个节点e进行遍历,判定e的类型,根据(a) ⑴生成BCMFG 元素,并为该元素的各个域进行赋值a)若节点e代表对伙伴链接partnerLink的定义,则创建BCMFG元素m,m的 Category域的值设定为“SN”,使用e中相关属性为m的Name域赋值。伙伴链接PartnerLink 的具体处理流程如图3所示。b)若节点e代表基本活动invoke,则首先创建BCMFG元素m,m的Category域的值 设定为“IN”,使用e中相关属性为m的Name域、partnerLink域、PortType域和Operation 域赋值,并通过partnerLink域值搜索到对应得服务节点S。然后对服务调用过程中的请 求_响应模式进行判定,如果e中属性inputVariable的值不为空,则创建一条从m到s的 消息边Hie1,并根据控制流关系设定m、s及Hie1的Target域值和Source域值;如果e中属 性outputVariable的值不为空,则创建一条从s到m的消息边me2,并根据控制流关系设定 s、m及me2的Target域值和Source域值。基本活动invoke的具体处理流程如图4所示c)若节点e代表基本活动receive,其处理方法与invoke类似,只是在对服务调 用过程中不需要对请求_响应模式进行判定,直接创建一条从s到m的消息边me即可,其 余处理过程与invoke类似。基本活动receive的具体处理流程如图5所示。d)若节点e代表基本活动reply,由于它与基本活动receive是互逆关系,故只要 反向创建消息边me即可(从m到S)。基本活动r印Iy的处理流程如图6所示。e)若节点e代表基本活动assign,则创建BCMFG元素m,m的Category域值设定 为“顕”,使用e中相关属性为m的Name域赋值,并通过e中的partnerLink属性值搜索到 对应得服务节点s,利用e中的子元素endpoint为s的Endpoint域赋值。基本活动assign 的处理流程如图7所示。f)若节点e代表结构化活动If,则创建BCMFG元素Hi1, Hi1的Category域值设定为 “EDN”,使用e中相关属性为ml的Name域和Condition域赋值,并处理If内部的基本活动 (或结构化活动),该处理过程是递归的,需要调用其他活动模型的处理流程。然后判定e 中是否含有子元素else if,如果有,则继续处理else if的内部活动。在完成对所有else if处理完毕后,创建BCMFG元素m2,m2的Category域值设定为“EMN”,使用e中相关属性为 m2的Name域赋值,最后处理else的内部活动,同时更新在之前处理if/elseif所生成的所 有BCMFG元素的Target域值。结构化活动If的处理流程如图8所示。g)若节点e代表结构化活动While,则分别创建BCMre元素叫和叫,!!^的Category 域值设定为“EDN”,m2的Category域值设定为“EMN”,使用e中相关属性为Hi1的Name域和 Condition域及m2的Name域赋值。然后创建m2到Hi1的控制边ce,同样利用e中相关属性为H^m2及ce的Target域和Source域赋值。最后处理While结构内部的活动,内部活动 的同样需要调用其他活动模型的处理流程。结构化活动While的处理流程如图9所示。h)若节点e代表结构化活动R印eat-Until,则创建BCMFG元素Ivm1的Category 域值设定为“EDN”,使用e中相关属性为Hi1的Name域和Condition域赋值,然后处理 Repeat-Until内的所有子活动HiiG > 1),记录下其中首个活动m2,并创建Hi1到m2的控 制边ce,再次利用e中相关属性更新mi、m2及ce的Target域和Source域。结构化活动 Repeat-Until的处理流程如图10所示。i)若节点e代表结构化活动Pick,则创建BCMFG元素Hi1, Hi1的Category域值设 定为“EDN”,使用e中相关属性为Hi1的Name域赋值,对于〈onMessage〉中的每个活动,创 建BCMFG元素Hii (i > 1),Hii的Category域值设定为"IN",同样使用e中相关属性为Hii的 PartnerLink域、PortType域和Operation域赋值,并通过partnerLink域值搜索到对应得 服务节点Si。创建从Si到Hii的控制边Cei,并根据控制流关系更新H^si和Cei的Target域 值及Source域值。对于<onAlarm>中的每个活动,创建BCMFG元素m」(j > max⑴),Hij的 Category域值设定为“NN”,同样使用e中相关属性为Hij的Name域赋值。最后创建BCMFG 元素mk(k > max (j)),mk的Category的域值设定为“EMN”。结构化活动Pick的处理流程 如图11所示。
j)若节点e代表结构化活动Flow,则创建BCMFG元素Hi1和m2,Hi1的Category域值 设定为“CBN”,m2的Category域值设定为“CMN”,使用e中相关属性为Hi1的Name域和m2的 Name域赋值。然后处理Flow内部活动,需要调用其他活动模型的处理流程,最后根据link 构成的同步依赖关系生成其它BCMFG元素。结构化活动Flow处理流程如图12所示。k)若e代表结构化活动foreach,则处理流程与While类似。具体流程处理见如 图13所示。1)若e代表结构化活云力sequence (或者scope),由于sequence (scope)表示简单 的顺序关系(子函数),所以真正处理流程主要还是针对内部活动的具体类型调用对应的 活动处理流程。Sequence和Scope的处理流程如图14所示。(4)完成对BCMRi模型的构建2、计算 BCMFG 路径根据BCMRi节点中记载的源元素和目标元素的信息,可以通过对图形的遍历找出 由控制流路径和消息路径组合而成的BCMFG路径,分析BCMFG生成BCMFG路径的过程。在算法开始之前,首先查找以初始节点s为源节点的控制边如果有m条这样的 边,则创建m条路径,向每条路径中添加s和再对m条路径中的每一条分别处理。这里 使用p[c0unt]记录BCMRi路径所包含的节点集合,count用于区分不同的路径。根据当前节点e的类型,可分为如下五种不同处理方式(1)如果当前节点e是交互节点IN,首先将e添加进ρ [count],然后按以下方法 生成消息路径Pm 查看e的Source域,若其中有消息边ME,则对于每条消息边,根据它的 Source域逆向遍历,直至遇到交互节点为止,将遍历到的消息边和服务节点全部添加到Pm 中;查看e的Target域,若其中有消息边,则对于每条消息边,根据它的Target域正向遍 历,直至遇到另一交互节点为止,将遍历到的消息边和服务节点全部添加到pm’中。最后, 将pm和pm’中的元素添加进ρ [count]。
(2)如果当前节点e是具有k个分支的单选分支节点,则将p[COimt]复制(k_l) 次,再将e以及以e为源节点的边添加进p[count]以及复制的(k_l)条路径中。(3)如果当前节点e是多选分支节点,假设e的出度为k,则这k条出边中可以同 时执行的数目介于1和k之间,是关于k的全组合,共有2k-l种,因此需将p [count]复制 2k-2次,并将e添加进p [count]以及复制的2k_2条路径中,再分别按这2k_l种组合将这些 边添加到对应的路径中。(4)如果当前节点e是并发分支节点,虽然可以按照并发测试中确定性测试的思 路产生并发内部的同步序列从而衍生出多条执行路径,但是对于特定的输入数据而言,这 些路径具有相同的执行条件和期望输出,按照本文的测试方法可以将它们统一为一条路 径,基于这种考虑,这里不进行路径的复制,而将e以及以e为源节点的所有边都添加进 p[count]。(5)如果e的目标节点n是普通节点等其它元素,则将n添加进p [count]。为了方便描述,我们利用基于BPEL的控制信息流图模型将对贷款组合服务由 BPEL组合服务流程LomiFlo w. bpel进行建模分析,其BPEL文档如下所示。〈process nane = “ LoanFlow“... ><partnerLinks>〈partnerLink name = “ client" . . . />〈partnerLink name = 〃 creditRatmgService“…/>〈partnerLink name = 〃 UnitedLoanService“…/><partnerLinkname = ” StarLoanService“ . . . /></partnerLinnks><variables>. . . </variables>〈sequence〉〈一省略伙伴链接赋值活动一>〈receive name =“ =” tns:LoanFlow“operation =
>
‘GetCreditRating “ variableAccessSerializable
receivelnput 〃 partnerLink = 〃 client 〃 portType 〃 initiate 〃 variable =”input 〃 createlnstance
=〃 yes
//
=,r no


//
〈scope name =
>
〈sequence〉
〈assign name = 〃 copySSN“ >...</assign> 〈invoke name =〃 invokeCR“ partnerLink =〃 creditRatingService “
portType = “ services:CreditRatingService“ operation
=” process"inputVariable = 〃 crInput 〃 outputVariable ="crOutput" />〈assign name = “ copyRating" >. . . </assign></sequence)
</scope> 〈scope name = " GetLoanOffer" variableAccessSerializable =" no" >

<sequence>
<assign name = " prepareApp1ication" >. <flow name = " collectOffers" > <sequence>
</assign><invokename = " invokeUnitedLoan"partnerLink = " UnitedLoanService" portType ="services:LoanService"
="loanApplication" />
operation =
initiate
inputVariable
〈receive name = " receive invokeUnitedLoan'partnerLink = " UnitedLoanService " portType ="services:LoanServiceCallback"operation = " onResult" variable = " loanOfferl" />
</sequence) <sequence>
〈invoke name =
invokeStarLoan
partnerLink
="StarLoanService‘
="initiate"
="StarLoanService‘
portType = " services:LoanService" operation
inputVariable =" loanApplication" /> 〈receive name = " receive_invokeStarLoan" partnerLink
portType = " services:LoanServiceCallback" operatio
n=〃 onResult" variable = 〃 Ioan0ffer2' d',‘ d',‘
</sequence) </flow> </sequence) </scope>
<scope name =" SelectOffer" variableAccessSerializable =" no" > <if name = " selectBestOffer" >
<condition> " bpws:getVariableData (' loanOfferl' , ' payloa /auto:loanOffer/auto:APR')>
bpws:getVariableData(' Ioan0ffer2' , ' payloa /auto:loanOfer/auto:APR')〃 </condition)
<assign name = " selectStarLoanOffer" >...</assign> <else>
11
<assign name = " selectUnitedLoanOffer" >. . . </assign></else></if></scope><invoke name = " replyOutput " partne rLink = " client " portType ="tns:LoanFlowCallback"operation = " onResult" inputVariable = " selectedLoanOffer" /></sequence></process>具体建模流程如下所示(1)使用DOM解析器将BPEL文档和WSDL文档解析为DOM树,每个树节点带有BPEL 文档元素的基本信息。(2)从根元素开始依次读取树中的DOM节点,每当遇到可以映射为BCMFG节点的 BPEL活动时,使用对应的活动处理流程(图3 图14)创建BCMre元素,并给该元素的各个 域赋值。(3)利用BCMFG元素间的控制关系完成BCMFG模型的构建。(4)通过对图形的遍历找出由控制流路径和消息路径组合而成的BCMFG路径。通过上述步骤,即使用基于BPEL的控制信息流图模型完成对BPEL组合服务的建模。图15显示了对贷款组合服务建模后的图形化表示。其中元素2、5、7、9、21、25、41分别 为服务节点、交互节点、普通节点、消息交互边、并发节点、单选节点、控制边。以元素2为 例,其域信息如表2所示。BCMFG路径存在1条,为[5 ;6 ;1 ;29 ;7 ;30 ;8 ;10 ;2 ;9 ;31 ;11 ;32 ;12 ;33 ;21 ;34 ;13 ;14 ;3 ;16 ;35 ;15 ; 36 ;22 ;37 ;17 ;18 ;4 ;20 ;38 ;19 ;39 ;40 ;25 ;41 ;23 ;42 ;26 ;45 ;27 ;28 ;]。
权利要求
一种基于BPEL的控制信息流图的建模方法,其特征在于包括如下步骤步骤1)对BPEL文档进行解析,生成DOM树;步骤2)遍历DOM树结点,当遇到可以映射为BCMFG的DOM树节点时,创建BCMFG元素,并给BCMFG元素的域赋值;步骤3)利用BCMFG元素间的控制关系构建BCMFG模型;步骤4)根据BCMFG模型计算所有BCMFG路径。
2.根据权利要求1所述的一种基于BPEL的控制信息流图的建模方法,其特征在于步骤 2)所述的给BCMRi元素的域赋值方法如下对DOM树中的每个节点进行遍历,a)若节点代表对伙伴链接partnerLink,则创建BCMFG元素m,m的Category域的值设 定为服务节点集SN,使用节点中相关属性为m的Name域赋值;b)若节点代表基本活动invoke或receive或r印ly,则首先创建BCMFG元素m,m的 Category域的值设定为交互节点集IN,使用节点中相关属性为m的Name域、partnerLink 域、PortType域和Operation域赋值,并通过partnerLink域值搜索到与节点对应得服务 节点s ;c)若节点代表基本活动assign,则创建BCMFG元素m,m的Category域值设定为普通 节点集NN,使用节点中相关属性为m的Name域赋值,并通过e中的partnerLink属性值搜 索到对应得服务节点s,利用e中的子元素endpoint为s的Endpoint域赋值;d)若节点代表结构化活动If,则创建BCMFG元素H^m1的Category域值设定为单选分 支节点EDN,使用节点中相关属性为Hi1的Name域和Condition域赋值,并处理If内部的基 本活动或结构化活动;当节点中含有子元素else if,则继续处理子元素else if的内部活 动,在完成对所有子元素else if的处理后,创建BCMFG元素m2,m2的Category域值设定为 单选归并节点EMN,使用节点中相关属性为m2的Name域赋值,最后处理else的内部活动, 同时更新在之前处理if或else if所生成的所有BCMFG元素的Target域值;e)若节点代表结构化活动While或foreach,则分别创建BCMFG元素Hi1和m2,Hi1的 Category域值设定为单选分支节点EDN,m2的Category域值设定为单选归并节点EMN,使 用节点中相关属性为Hi1的Name域和Condition域及m2的Name域赋值;然后创建m2到Hi1 的控制边ce,同样利用e中相关属性为H^m2及ce的Target域和Source域赋值;f)若节点代表结构化活动R印eat-Until,则创建BCMFG元素Ivm1的Category域值设 定为单选分支节点EDN,使用节点中相关属性为Hi1的Name域和Condition域赋值,然后处 理R印eat-Until内的所有子活动叫,i为大于1的自然数,记录下其中首个活动m2,并创建 Hi1到m2的控制边ce,再次利用e中相关属性更新mi、m2及ce的Target域和Source域;a)若节点代表结构化活动Pick,则创建BCMFG元素Hi1, Hi1的Category域值设定为单 选分支节点EDN,使用节点中相关属性为Hi1的Name域赋值,对于〈onMessage〉中的每个活 动,创建BCMFG元素IV i为大于1的自然数,Hii的Category域值设定为交互节点IN,同 样使用节点中相关属性为Hii的PartnerLink域、PortType域和Operation域赋值,并通过 partnerLink域值搜索到对应得服务节点Si,创建从Si到Hii的控制边Cei,并根据控制流 关系更新Hii、Si和Cei的Target域值及Source域值,对于<onAlarm>中的每个活动,创建 BCMFG元素πι」(j > max (i) ,max ()表示取最大值,即j从i+Ι开始依次取值,m」的Category 域值设定为普通节点NN,同样使用e中相关属性为Ii^的Name域赋值,最后创建BCMFG元素mk,k > max (j),即k从j+1开始依次取值,mk的Category的域值设定为单选归并节点EMN, j和k都为自然数;g)若节点代表结构化活动Flow,则创建BCMFG元素mi和m2,m:的Category域值设定 为并发分支节点CBN,m2的Category域值设定为并发归并节点CMN,使用节点中相关属性为 Hi!的Name域禾口 m2的Name域赋值。
全文摘要
本发明公布了一种基于BPEL的控制信息流图的建模方法,包括如下步骤步骤1)对BPEL文档进行解析,生成DOM树;步骤2)遍历DOM树结点,当遇到可以映射为BCMFG的DOM树节点时,创建BCMFG元素,并给BCMFG元素的域赋值;步骤3)利用BCMFG元素间的控制关系构建BCMFG模型;步骤4)根据BCMFG模型计算所有BCMFG路径。本发明不仅可以表达BPEL流程,还能表达组合服务内部的消息交互行为,从真正意义上对组合服务进行建模。
文档编号G06F9/44GK101872302SQ20101017378
公开日2010年10月27日 申请日期2010年5月14日 优先权日2010年5月14日
发明者周颖, 李必信, 王迪, 邱栋 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1