一种基于有向图的WS-BPEL控制环路检测方法,其步骤为:首先将WS-BPEL转换为扩展有向图BPEL-Graph,然后对BPEL-Graph中的非控制环路循环,即while和repeatUntil活动进行解环,迭代去掉BPEL-Graph中入度或者出度为零的顶点,因为这些顶点肯定不在任何有向回路上面,接下来采用深度优先算法查找BPEL-Graph中所有有向回路,最后将BPEL-Graph中的有向回路定位到原有WS-BPEL中相应位置。本发明专利技术将WS-BPEL的控制环路检测问题转换为有向图的有向回路检测问题,能够快速检测出复杂WS-BPEL中的控制环路,并且可以将控制环路定位到原WS-BPEL中的相应位置。
【技术实现步骤摘要】
本专利技术涉及一种基于有向图的WS-BPEL控制环路检测方法,主要应用于在计算机韵 工作流的建模系统中。
技术介绍
WS—BPEL (Web Services Business Process Execution Language, Web月艮务业务 流程可执行语言)是一种基于XML的业务流程描述语言。前身是由IBM、 Microsoft共 同推出的BPEL4WS (Business Process Execution Language for Web Services) , 2003 年4月提交给标准化组织0ASIS,经过大量修改使之得到全面提高,于2007年7月正式 将WS-BPEL2. 0发布为OASIS标准。WS-BPEL融合了 IBM和Microsoft各自开发的上一代业务流程描述语言WSFL和 XLANG。 WSFL和XLANG分别基于Petri网和Pi演算,因此WS-BPEL吸收和借鉴Petri网 和Pi演算的优点,是一种高级的、抽象的、可执行建模语言,它不仅实现Web服务间 的组合,也将流程自身暴露为Web服务。虽然除WS-BPEL之外还有其他业务流程规范, 但是到目前为止,WS-BPEL是最为成熟和被广泛支持的技术。作为一种描述业务流程的语言,WS-BPEL不但提供了业务伙伴、业务相关集、业务 数据、事件处理、错误处理和补偿处理等的定义,还提供了丰富的流程控制结构描述, 如表示顺序执行的sequence活动,表示选择执行的if-else活动,表示并发执行的flow 活动,表示循环执行的while和r印eatUntil活动等。作为一种可执行的语言,通过将WS-BPEL部署到相应的运行容器中,能够把业务流 程描述迅速地转换为实际的业务流程系统,因此,在部署之前,保证WS-BPEL的正确性 成为关键性的工作之一。与其他可执行语言Java和C语言不同的地方是,WS-BPEL流程 通过网络交互的是位于不同业务伙伴中的分布式Web服务,如果采用传统运行测试的方 式检验正确性,势必会导致网络资源以及服务资源的浪费,所以检测WS-BPEL的正确性 一般采用静态分析的方法,即在语法正确的基础上,验证WS-BPEL是否满足一些事先约 定的语义属性。其中,是否存在控制环路是关键语义属性之一。WS-BPEL中的控制环路是指流程描述中的某些活动在执行序列上存在循环依赖关 系,导致整个业务流程逻辑在实际运行过程中会产生死锁。通常检验控制环路是采用形 式化验证的方式,即将WS-BPEL转换为已有形式化模型,比如Petri网或者进程代数,然后用时序逻辑公式表达控制环路,在整个形式化模型的状态空间中搜索是否存在时序 逻辑公式的反例状态,如果存在反例状态,则表示存在控制环路。形式化验证方式的优点是比较通用,能够利用已有的形式化模型和相应理论,并且 存在大量优秀的验证工具。但这种方式的缺点有两方面, 一方面当被描述的对象比较复 杂时,形式化模型会产生状态空间爆炸问题,在数量庞大的状态空间中搜索反例状态的 效率非常低,而控制环路往往倾向于出现在比较复杂的WS-BPEL;另一方面,形式化验 证的结果很难映射到原有对象中,也就是说,形式化验证的方式能够监测出WS-BPEL中 存在控制环路,但是不能告诉用户是由哪些活动形成了循环依赖,这样给用户查找并修 改错误带来困难。
技术实现思路
鉴于上述原因,本专利技术的主要目的是提供一种基于有向图的WS-BPEL控制环路检测 方法,该方法将WS-BPEL的控制环路检测问题转换为有向图的有向回路检测问题,能够 快速检测出复杂WS-BPEL中的控制环路,并且可以将控制环路定位到原WS-BPEL中的相 应位置。为实现上述目的,本专利技术采取以下技术方案 一种基于有向图的WS-BPEL控制环路 检测方法,包括以下步骤第一步,将WS-BPEL转换为扩展有向图BPEL-Graph;第二步,对BPEL-Graph中的非控制环路循环,即while和r印eatUntil活动进行解环;第三步,去掉BPEL-Graph中入度或者出度为零的顶点,因为这些顶点肯定不在任何 有向回路上面;第四步,重复执行第三步,直到BPEL-Graph中所有顶点入度和出度都不为零; 第五步,采用深度优先算法查找BPEL-Graph中所有有向回路; 第六步,将BPEL-Graph中的有向回路定位到原有WS-BPEL中相应位置。 本专利技术与现有技术相比的优点在于本专利技术将WS-BPEL的控制环路检测问题转换为 有向图的有向回路检测问题。因为将WS-BPEL转换为BPEL-Graph的过程中,如果WS-BPEL 中包含有N个活动,那么生成的BPEL-Graph至多有2N个顶点,该极端情况出现在这N 个活动都是结构化活动的时候。因此,与现有的模型检测技术相比,本专利技术避免了状态 空间爆炸的问题,能够快速检测出复杂WS-BPEL中的控制环路。同时,因为BPEL-Graph 中已经包含了 WS-BPEL的相关活动信息(包括活动类型和条件),因此可以将控制环路 定位到原WS-BPEL中的相应位置。附图说明图1为本专利技术方法的流程图2为本专利技术将WS-BPEL中的基本活动转换为BPEL-Graph中的顶点; 图3A为本专利技术将WS-BPEL中的sequence活动转换为BPEL-Graph子图; 图3B为本专利技术将WS-BPEL中的if活动转换为BPEL-Graph子图; 图3C为本专利技术将WS-BPEL中的while活动转换为BPEL-Graph子图; 图3D为本专利技术将WS-BPEL中的r印eatUntil活动转换为BPEL-Graph子图; 图3E为本专利技术将WS-BPEL中的pick活动转换为BPEL-Graph子图; 图3F为本专利技术将WS-BPEL中的flow活动转换为BPEL-Graph子图; 图3G为本专利技术将WS-BPEL中的forEach活动转换为BPEL-Graph子图; 图3H为本专利技术将WS-BPEL中的scope活动转换为BPEL-Graph子图; 图4为本专利技术将WS-BPEL中的link转换为BPEL-Graph中的边; 图5A为本专利技术将BPEL-Graph中的while活动解环; 图5B为本专利技术将BPEL-Graph中的r印eatUntil活动解环; 图6为本专利技术将BPEL-Graph中不在有向回路上的顶点迭代消除。 具体实施例方式如图1所示,本专利技术的实现步骤如下1.将WS-BPEL转换为扩展有向图BPEL-Graph(1) 首先,定义扩展有向图BPEL-Graph。定义称G: (V, E, T, C)为BPEL-Graph,其中 V是一个非空有限集合, E是V中元素的有序对所组成的有限集合,T是V上的函数,取值为枚举型{Invoke, Receive, R印ly, Assign, Throw,Wait,Empty,ExtensionActivity,Exit,Rethrow, Sequence_Start, Sequence—End, If—Start, If_End, While—Start, While_End, RepeatUntil一Start, RepeatUntil一End, Pick—Start, P本文档来自技高网...
【技术保护点】
一种基于有向图的WS-BPEL控制环路检测方法,其特征在于步骤如下: 第一步,将WS-BPEL转换为扩展有向图BPEL-Graph; 第二步,对BPEL-Graph中的非控制环路循环,即while和repeatUntil活动进行解环; 第三步,去掉BPEL-Graph中入度或者出度为零的顶点,因为这些顶点肯定不在任何有向回路上面; 第四步,重复执行第三步,直到BPEL-Graph中所有顶点入度和出度都不为零; 第五步,采用深度优先算法查找BPEL-Graph中所有有向回路; 第六步,将BPEL-Graph中的有向回路定位到原有WS-BPEL中相应位置。
【技术特征摘要】
【专利技术属性】
技术研发人员:马殿富,孙斗,刘敏,刘建,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。