CN101339501B - 基于有向图的ws-bpel控制环路检测方法 - Google Patents
基于有向图的ws-bpel控制环路检测方法 Download PDFInfo
- Publication number
- CN101339501B CN101339501B CN2008101181244A CN200810118124A CN101339501B CN 101339501 B CN101339501 B CN 101339501B CN 2008101181244 A CN2008101181244 A CN 2008101181244A CN 200810118124 A CN200810118124 A CN 200810118124A CN 101339501 B CN101339501 B CN 101339501B
- Authority
- CN
- China
- Prior art keywords
- bpel
- graph
- control loop
- changeed
- summit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Traffic Control Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于有向图的WS-BPEL控制环路检测方法,其步骤为:首先将WS-BPEL转换为扩展有向图BPEL-Graph,然后对BPEL-Graph中的非控制环路循环,即while和repeatUntil活动进行解环,迭代去掉BPEL-Graph中入度或者出度为零的顶点,因为这些顶点肯定不在任何有向回路上面,接下来采用深度优先算法查找BPEL-Graph中所有有向回路,最后将BPEL-Graph中的有向回路定位到原有WS-BPEL中相应位置。本发明将WS-BPEL的控制环路检测问题转换为有向图的有向回路检测问题,能够快速检测出复杂WS-BPEL中的控制环路,并且可以将控制环路定位到原WS-BPEL中的相应位置。
Description
技术领域
本发明涉及一种基于有向图的WS-BPEL控制环路检测方法,主要应用于在计算机的工作流的建模系统中。
背景技术
WS-BPEL(Web Services Business Process Execution Language,Web服务业务流程可执行语言)是一种基于XML的业务流程描述语言。前身是由IBM、Microsoft共同推出的BPEL4WS(Business Process Execution Language for Web Services),2003年4月提交给标准化组织OASIS,经过大量修改使之得到全面提高,于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和repeatUntil活动等。
作为一种可执行的语言,通过将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和repeatUntil活动进行解环;
第三步,去掉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中的repeatUntil活动转换为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中的repeatUntil活动解环;
图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,Reply,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,Pick_End,Flow_Start,Flow_End,ForEach_Start,ForEach_End,Scope_Start,Scope_End},
C是E上的函数,取值为表达式,
称V的元素为顶点,E的元素为边,T的取值为类型,C的取值为条件。
(2)然后将WS-BPEL转换为BPEL-Graph分为以下几部分:
a、WS-BPEL中的基本活动转换为BPEL-Graph中的顶点,WS-BPEL中的基本活动包括Invoke,Receive,Reply,Assign,Throw,Wait,Empty,ExtensionActivity,Exit,Rethrow活动。如图2所示,顶点的类型为对应的活动类型,顶点的条件为该活动targets子元素的joinCondition属性的值。
b、WS-BPEL中的结构化活动转换为BPEL-Graph的子图:
其中结构化活动包括:
sequence活动,如图3A所示,生成类型为Sequence_Start和Sequence_End的两个顶点,然后将子活动转换为相应的BPEL-Graph子图。
if活动,如图3B所示,生成类型为If_Start和If_End的两个顶点,然后将子活动转换为相应的BPEL-Graph子图。
while活动,如图3C所示,生成类型为While_Start和While_End的两个顶点,然后将子活动转换为相应的BPEL-Graph子图。
repeatUntil活动,如图3D所示,生成类型为RepeatUntil_Start和RepeatUntil_End的两个顶点,然后将子活动转换为相应的BPEL-Graph子图。
pick活动,如图3E所示,生成类型为Pick_Start和Pick_End的两个顶点,然后将子活动转换为相应的BPEL-Graph子图。
flow活动,如图3F所示,生成类型为Flow_Start和Flow_End的两个顶点,然后将子活动转换为相应的BPEL-Graph子图。
forEach活动,如图3G所示,生成类型为ForEach_Start和ForEach_End的两个顶点,然后将子活动转换为相应的BPEL-Graph子图。
scope活动,如图3H所示,生成类型为Scope_Start和Scope_End的两个顶点,然后将子活动转换为相应的BPEL-Graph子图。
c、WS-BPEL中的link转换为BPEL-Graph中的边,如图4所示。
2、对BPEL-Graph中的非控制环路循环,即while和repeatUntil活动进行解环;
因为WS-BPEL中的while和repeatUntil活动转换成BPEL-Graph子图后,也会形成有向回路,因此需要对这三类BPEL-Graph子图进行解环,解环方法为:去掉while和repeatUntil活动生成的BPEL-Graph子图中的循环边。
a、while活动的解环,如图4A所示,去掉对应BPEL-Graph子图的循环边。
b、repeatUntil活动的解环,如图4B所示,去掉对应BPEL-Graph子图的循环边。
3.去掉BPEL-Graph中入度或者出度为零的顶点,因为这些顶点肯定不在任何有向回路上面,直到BPEL-Graph中所有顶点入度和出度都不为零;
经过解环之后的BPEL-Graph,其中存在的有向回路必定是由WS-BPEL中的控制环路引起。为了减少查找有向回路的计算量,可以去掉BPEL-Graph中肯定不在任何有向回路上的顶点,而这些顶点的入度或者出度为零,如图5所示。经过迭代消去,BPEL-Graph中剩下的顶点肯定是在某一个或者某几个有向回路上。
4、采用深度优先算法查找BPEL-Graph中所有有向回路;
其步骤如下:
设G是连通(n,m)BPEL-Graph图,V={1,2,…,n},V是一个非空有限集合,n为顶点数,m为边数,H是BPEL-Graph图中的邻接矩阵,P是阶n的一维数组,P=(p1,p2,…,pk,0,…,0),表示在搜索过程中当前有向路,其起点为p1,终点为pk,开始时,P=(0,0,…,0),k=1,p1=1,设X为禁止矩阵,i为变量,
第1步X=0
第2步i=p1+1
第3步若i>n,转第8步
第4步若没有边(pk,i)即H[pk,i]=0,转第7步
第5步若顶点i在P上,转第7步
第6步若禁止从顶点pk到i即X[pk,i]=1,转第7步。否则令k=k+1,pk=i,转第2步。
第7步令i=i+1,转第3步
第8步若有边(pk,p1)即即H[pk,p1]=1,则输出有向环[p1,p2,…,pk]。
第9步若k=1,令p1=p1+1,pk=p1,转第11步。
第10步令X[pk,j]=0,j=1,…,n,X[pk-1,pk]=1,pk=0,k=k-1,转第2步
第11步若p1>n,停。
若p1=n,转第8步。
若p1<n,转第1步。
5.最后,因为BPEL-Graph中已经包含了WS-BPEL的相关活动信息(包括活动类型和条件),因此很容易将查找到的有向回路定位到原来WS-BPEL中的相应位置。
Claims (4)
1.一种基于有向图的WS-BPEL控制环路检测方法,其特征在于步骤如下:
第一步,将WS-BPEL转换为扩展有向图BPEL-Graph;
第二步,对BPEL-Graph中的非控制环路循环进行解环;
第三步,去掉BPEL-Graph中入度或者出度为零的顶点;
第四步,重复执行第三步,直到BPEL-Graph中所有顶点入度和出度都不为零;
第五步,采用深度优先算法查找BPEL-Graph中所有有向回路;
第六步,将BPEL-Graph中的有向回路定位到原有WS-BPEL中相应位置。
2.根据权利要求1所述的基于有向图的WS-BPEL控制环路检测方法,其特征在于:所述的第一步将WS-BPEL转换为有向图BPEL-Graph的方法为:
(1)首先定义扩展有向图BPEL-Graph,称G=(V,E,T,C)为BPEL-Graph,
V是一个非空有限集合;
E是V中元素的有序对所组成的有限集合;
T是V上的函数;C是E上的函数,取值为表达式;
称V的元素为顶点,E的元素为边,T的取值为类型,C的取值为条件;
(2)将WS-BPEL转换为BPEL-Graph的方法为:
a、WS-BPEL中的基本活动转换为BPEL-Graph中的顶点,基本活动包括Invoke,Receive,Reply,Assign,Throw,Wait,Empty,ExtensionAetivity,Exit,Rethrow活动;
b.将WS-BPEL中的结构化活动转换为BPEL-Graph的子图;
c.将WS-BPEL中的link转换为BPEL-Graph中的边。
3.根据权利要求1所述的基于有向图的WS-BPEL控制环路检测方法,其特征在于:所述的第二步对BPEL-Graph中的非控制环路循环,进行解环方法为:去掉while和repeatUntil活动生成的BPEL-Graph子图中的循环边。
4.根据权利要求1所述的基于有向图的WS-BPEL控制环路检测方法,其特征在于:所述的第五步采用深度优先算法查找BPEL-Graph中的有向回路的步骤为:
设G是BPEL-Graph图,V={1,2,…,n},V是一个非空有限集合,n为顶点数,m为边数,H是BPEL-Graph图中的邻接矩阵,P是阶n的一维数组,P=(p1,p2,…,pk,0,…,0),表示在搜索过程中当前有向路,其起点为p1,终点为pk,开始时,P=(0,0,…,0),k=1,p1=1,设X为禁止矩阵,i为变量,
第1步X=0;
第2步i=p1+1;
第3步若i>n,转第8步;
第4步若没有边(pk,i),即H[pk,i]=0,转第7步;
第5步若顶点i在P上,转第7步;
第6步若禁止从顶点pk到i,即X[pk,i]=1,转第7步,否则令k=k+1,pk=i,转第2步;
第7步令i=i+1,转第3步;
第8步若有边(pk,p1),即H[pk,p1]=1,则输出有向环[p1,p2,…,pk];
第9步若k=1,令p1=p1+1,pk=p1,转第11步;
第10步令X[pk,j]=0,j=1,…,n,X[pk-1,pk]=1,pk=0,k=k-1,转第2步;
第11步若p1>n,整个算法结束;
若p1=n,转第8步;
若p1<n,转第1步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101181244A CN101339501B (zh) | 2008-08-12 | 2008-08-12 | 基于有向图的ws-bpel控制环路检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101181244A CN101339501B (zh) | 2008-08-12 | 2008-08-12 | 基于有向图的ws-bpel控制环路检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101339501A CN101339501A (zh) | 2009-01-07 |
CN101339501B true CN101339501B (zh) | 2012-07-18 |
Family
ID=40213577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101181244A Expired - Fee Related CN101339501B (zh) | 2008-08-12 | 2008-08-12 | 基于有向图的ws-bpel控制环路检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101339501B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101827414B (zh) * | 2010-03-26 | 2014-10-29 | 中兴通讯股份有限公司 | 一种网状网中环路路径的查找方法及装置 |
US8601013B2 (en) | 2010-06-10 | 2013-12-03 | Micron Technology, Inc. | Analyzing data using a hierarchical structure |
CN102566972B (zh) * | 2010-12-24 | 2016-11-23 | 上海电机学院 | 一种图形化的Pi演算方法 |
CN102043681A (zh) * | 2010-12-28 | 2011-05-04 | 西北大学 | 基于Pi演算的分布式流程验证系统及方法 |
EP2668576B1 (en) | 2011-01-25 | 2024-04-24 | Micron Technology, INC. | State grouping for element utilization |
US8726256B2 (en) * | 2011-01-25 | 2014-05-13 | Micron Technology, Inc. | Unrolling quantifications to control in-degree and/or out-degree of automaton |
KR101606622B1 (ko) | 2011-01-25 | 2016-03-25 | 마이크론 테크놀로지, 인크. | Fsm을 구현하기 위한 특수 목적 요소의 이용 |
KR101640295B1 (ko) | 2011-01-25 | 2016-07-15 | 마이크론 테크놀로지, 인크. | 정규 표현을 컴파일하기 위한 방법 및 장치 |
CN102722170B (zh) * | 2012-05-10 | 2014-08-27 | 北京宇航系统工程研究所 | 一种用于运载火箭测试发射阶段的故障检测方法 |
CN103268254B (zh) * | 2013-05-20 | 2016-08-03 | 中国联合网络通信集团有限公司 | 控制依赖死锁检测方法和装置 |
CN108829524A (zh) * | 2018-06-20 | 2018-11-16 | 中国联合网络通信集团有限公司 | Bpel流程图形化设计中检测死锁的方法和装置 |
CN110968429B (zh) * | 2019-12-20 | 2022-11-11 | 北京百度网讯科技有限公司 | 一种有向图中的环路检测方法、装置、设备和存储介质 |
CN112527474B (zh) * | 2020-12-10 | 2023-07-25 | 北京百度网讯科技有限公司 | 任务处理方法及装置、设备、可读介质、计算机程序产品 |
CN113204678A (zh) * | 2021-05-27 | 2021-08-03 | 中国工商银行股份有限公司 | 有向图的环路检测方法、装置、系统、设备及介质 |
CN113672780A (zh) * | 2021-08-12 | 2021-11-19 | 北京金山云网络技术有限公司 | 检测有向图闭环的方法、装置、设备及存储介质 |
CN113656021B (zh) * | 2021-08-17 | 2023-08-25 | 东北石油大学 | 一种面向业务场景的油气大数据分析系统及方法 |
CN115994244B (zh) * | 2021-10-18 | 2024-03-19 | 广州南天电脑系统有限公司 | 基于大数据的有向图数据处理方法、装置、计算机设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1987796A (zh) * | 2005-12-22 | 2007-06-27 | 国际商业机器公司 | 检测多线程程序中的死锁的方法和装置 |
-
2008
- 2008-08-12 CN CN2008101181244A patent/CN101339501B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1987796A (zh) * | 2005-12-22 | 2007-06-27 | 国际商业机器公司 | 检测多线程程序中的死锁的方法和装置 |
Non-Patent Citations (5)
Title |
---|
.2006,第2006卷(第ICSEA"2006期), * |
Proceedings of the International Conference on Software Engineering Advances (ICSEA"2006)IEEE> * |
Yuan Yuan et. al..A Graph-search Based Approach to BPEL4WS Test Generation.< * |
Yuan Yuan et. al..A Graph-search Based Approach to BPEL4WS Test Generation.<Proceedings of the International Conference on Software Engineering Advances (ICSEA"2006)IEEE>.2006,第2006卷(第ICSEA"2006期), |
陈宏宇.基于图论理论解决关系数据库死锁方法的研究.《微电子学与计算机》.2005,第2005年第22卷(第8期), * |
Also Published As
Publication number | Publication date |
---|---|
CN101339501A (zh) | 2009-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101339501B (zh) | 基于有向图的ws-bpel控制环路检测方法 | |
Shirole et al. | UML behavioral model based test case generation: a survey | |
Wachter et al. | Verifying multi-threaded software with impact | |
Jaffar et al. | Unbounded symbolic execution for program verification | |
Hinge et al. | Process seer: A tool for semantic effect annotation of business process models | |
Kherbouche et al. | Using model checking to control the structural errors in BPMN models | |
Gawlitza et al. | Join-lock-sensitive forward reachability analysis for concurrent programs with dynamic process creation | |
CN106682514B (zh) | 基于子图挖掘的系统调用序列特征模式集生成方法 | |
Auguston | Program Behavior Model Based on Event Grammar and its Application for Debugging Automation. | |
Fujiwara et al. | Test data generation for web application using a UML class diagram with OCL constraints | |
Weidlich et al. | Efficient computation of causal behavioural profiles using structural decomposition | |
Yao et al. | Consistency checking of UML dynamic models based on petri net techniques | |
Illanes et al. | Numeric Planning via Abstraction and Policy Guided Search. | |
Hajlaoui et al. | QoS based framework for configurable IaaS cloud services discovery | |
Wolf | How Petri net theory serves Petri net model checking: a survey | |
Ahmed | Towards the development of integrated reuse environments for UML artifacts | |
Wu | Generating metamodel instances satisfying coverage criteria via SMT solving | |
Bartolini et al. | Data flow-based validation of web services compositions: Perspectives and examples | |
US20150293831A1 (en) | Parameterized states in symbolic execution for software testing | |
Nadel | Bit-vector rewriting with automatic rule generation | |
Reynier et al. | Minimal coverability set for Petri nets: Karp and Miller algorithm with pruning | |
Song et al. | An approach to identifying causes of implied scenarios using unenforceable orders | |
Khomenko et al. | An algorithm for direct construction of complete merged processes | |
Khai et al. | A Prolog based approach to consistency checking of UML class and sequence diagrams | |
Grumberg et al. | Applying software model checking techniques for behavioral UML models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120718 Termination date: 20140812 |
|
EXPY | Termination of patent right or utility model |