CN106126416A - 一种基于流程编排的服务组合路径推导方法 - Google Patents
一种基于流程编排的服务组合路径推导方法 Download PDFInfo
- Publication number
- CN106126416A CN106126416A CN201610428666.6A CN201610428666A CN106126416A CN 106126416 A CN106126416 A CN 106126416A CN 201610428666 A CN201610428666 A CN 201610428666A CN 106126416 A CN106126416 A CN 106126416A
- Authority
- CN
- China
- Prior art keywords
- path
- node
- bpel
- parallel
- service combination
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000008569 process Effects 0.000 title claims abstract description 32
- 238000009795 derivation Methods 0.000 title claims abstract description 16
- 239000011159 matrix material Substances 0.000 claims abstract description 33
- 239000000284 extract Substances 0.000 claims abstract description 18
- 238000005516 engineering process Methods 0.000 claims abstract description 8
- 230000000694 effects Effects 0.000 claims description 49
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 3
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 238000012360 testing method Methods 0.000 abstract description 30
- 239000000203 mixture Substances 0.000 abstract description 10
- 230000008901 benefit Effects 0.000 abstract description 2
- 238000013522 software testing Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013024 troubleshooting Methods 0.000 description 2
- 240000000233 Melia azedarach Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 230000001808 coupling effect Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000013440 design planning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001027 hydrothermal synthesis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000004899 motility Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Stored Programmes (AREA)
Abstract
本发明一种基于流程编排的服务组合路径推导方法,属于软件测试技术领域,具体包括:首先、提取某段BPEL源文档中的元素并分别进行编号;同时将该BPEL源文档划分为正常处理程序和异常处理程序;然后分别提取出BPEL路径信息形成中间XML文档;并去除冗余元素,得到描述路径的XML文档,读取边以及节点,建立服务组合路径的邻接矩阵以及并行节点集合;最后、结合深度优先搜索算法,得到所有的服务组合路径,在路径执行条件下输出;优点在于:能够自动化解析BPEL源文档,得到服务组合执行顺序,简化了测试人员的BPEL解析工作;完备的寻找到所有的服务组合路径,辅助测试过程,使得测试结果更加全面。
Description
技术领域
本发明属于软件测试技术领域,具体是一种基于流程编排的服务组合路径推导方法。
背景技术
相对于传统面向过程或功能的软件结构,面向服务的体系结构(Service-Oriented Architecture,SOA)能更好的适应当下信息化和网络服务的不断发展,在各种企业和IT系统得到广泛应用。SOA中,不同的功能单元通过接口连接完成一个完整的程序功能,这些单元被称为服务。接口的定义是中立的,即SOA的各个服务之间是松耦合的,使SOA具有极高的灵活性和适应性,其中的服务具有良好的可替换性和可复用性;但松耦合的特性同时也对SOA系统的测试带来了一些困难,主要体现在以下三个方面:
第一,使用者无法知晓服务内部的运行原理,只有服务的提供者才能对系统进行完整的测试。第二,SOA服务具有动态绑定的特性,会使系统参数在测试运行时发生改变,使得已测得的数据失效。第三,SOA通过对各个服务进行编排来实现完整的业务功能,即使各项服务都能够单独通过测试,将它们整合起来后,测试业务流程时仍可能出现问题。同时,在一个较为复杂的SOA系统中,也可能在测试中错过了某些能够完成功能的服务组合,测试结果可能是不全面的。
当前针对SOA系统的测试技术研究有三个不同的阶段:第一阶段为:关注企业内部的测试,主要测试单个服务的功能,检测其功能实现能力和对接口、消息的交换能力;
第二阶段为关注面向服务的系统特性,测试主要针对服务的发布、查找和绑定的三种行为,以及服务之间不能及时互相传递信息的问题。
第三阶段为关注服务的动态特性和服务组合总体的测试,一般从SOA系统整体上看待问题,关注各个服务组合的集成测试。
综合国内外对SOA系统的研究与应用来看,关于SOA测试的研究,其内容一般分为以下三类:针对服务协议和状态进行的简单测试,用自动化生成测试用例对SOA系统整体进行测试以及对SOA系统自动检测工具的相关研究。
从相关的文献资料可以看出,目前SOA测试的研究大多只针对系统中的单个服务或者服务之间的关系,对真正能够实现功能的含有多个服务的业务流程的测试较少。自动化检测工具和整体测试中,多用确定的规则自动化生成生成测试用例,而很少使用真实数据进行测试。
对于服务组合集成测试需要解析BPEL源文档,得到服务组合执行顺序。Web服务的业务流程执行语言BPEL4WS(Business Process Execution Language For WebServices),是为了整合Web服务而制定的一项规范标准。
许多BPEL编辑工具提供从业务流程图转化到BPEL语言的映射,以实现BPEL的图形化设计和分析。现在大约有二十几种能够进行BPEL编辑的工具和相应的平台,其中许多还可以进行可视化的图形操作。但这些工具中的图形或其他符号都是为了转换成BPEL代码而使用的,需要对BPEL的书写规范和代码结构十分熟悉才能高效的利用这些编辑工具。从业务流程模型或业务流程建模与标注标准(Business Process Modeling Notation,BPMN)到BPEL程序的转换算法广泛的被提出和应用,使人们能够更好地利用BPEL语言来设计规划业务流程。但对业务流程的测试还没有得到足够的重视,所需要的从BPEL语言程序到控制流程图形的逆向转换算法并不完备。
发明内容
本发明为了解决BPEL语言程序到控制流程图的转换问题,从测试角度出发,基于BPEL源程序自动化生成测试服务组合路径的技术还不成熟,提出了一种基于流程编排的服务组合路径推导方法;
具体步骤如下:
步骤一、针对某段BPEL源文档,提取BPEL源文档中的元素并分别进行编号;
BPEL源文档中的元素分为基本活动元素以及结构化活动元素,首先将对基本活动元素按序进行编号,然后,继续顺次对结构化活动元素按序进行编号;并记录基本活动元素的最后一个编号作为分界编号。
步骤二、按BPEL语法标准将该BPEL源文档划分为正常处理程序和异常处理程序;
步骤三、分别对正常处理程序和异常处理程序提取出BPEL路径信息;
具体步骤为:
步骤301、首选针对某段程序,判断是否为正常程序,如果是,删除scope元素;否则,保留scope元素;
步骤302、从外层到内层逐层遍历该段程序中的每层元素;
步骤303、针对某层作为当前层,判断该层遍历到的当前元素是否为基本活动元素,如果是,进入步骤304,否则,进入步骤307;
步骤304、判断当前层下一个元素是否为基本活动元素;如果是,将两个基本活动元素的编号相连,形成一条边;否则,进入步骤305;
步骤305、判断当前层下一个元素是否为结构化活动元素,如果是,将当前基本活动元素与结构化活动元素的编号相连形成一条边,进入步骤307;否则,进入步骤306;
步骤306、判断当前层下一个元素是否为throw,如果是,当前层的throw元素与该throw元素寻找的到异常程序中的第一个节点相连,并返回步骤303;否则,当前层下一个元素不存在,结束。
第一个节点是指异常程序中的结构化活动元素catchAll或catch;throw元素按BPEL语法标准寻找异常程序。
步骤307、判断结构化活动元素的内层元素是否为基本活动元素,如果是,该结构化活动元素与内层基本活动元素的编号相连形成边;否则,与内层结构化活动元素的编号相连形成边;
步骤四、将所有层提取的BPEL路径信息形成中间XML文档;
BPEL路径信息包括节点和边;其中节点是指每个基本活动元素的编号;边包括连边和边属性两部分;
BPEL路径形式为:from="编号"to="编号"condition="null/valid"flow="true/false";
步骤五、对中间XML文档,去除冗余元素,得到描述路径的XML文档;
具体去除方法为:针对两条BPEL不同的路径:当第一条路径中的to属性与第二条路径中的from属性中采用的编号值相同,且该编号大于分界编号时,删除该编号,将两条路径合并为一条路径;当两条路径的condition属性中至少有一个为valid,则合并condition属性为valid;当两条路径的flow属性至少有一个为true,则合并flow属性为true。
步骤六、利用XML解析工具读取描述路径的XML文档中的边以及节点;
步骤七、利用边和节点建立服务组合路径的邻接矩阵以及并行节点集合;
邻接矩阵为边和点的连接有向图;
并行节点集合为一维向量,用来存储邻接矩阵中具有并行分支路径的开始节点;每个开始节点向下一个节点相连边的flow属性均为true;并行节点用于记录并行路径信息。
步骤八、结合深度优先搜索算法,得到所有的服务组合路径;
首先、从邻接矩阵中提取所有路径并存储到总路径集合中;
所有路径包括无并行执行的路径和并行执行路径,其中并行执行路径的开始节点存放在并行节点集合中;
然后、从总路径集合中,将无并行执行路径一一提取并存储到临时存储空间;针对并行节点集合中的每个开始节点,将该开始节点下同时执行的至少两条路径分别提取,作为一组并行路径,放到临时存储空间。
具体提取过程为:针对并行节点集合中的每个开始节点,该开始节点下的所有同时执行的并行子节点,对每一个并行子节点对应的分支路径一一提取,并将同一个并行子节点下的所有分支路径存储在一个块结构中,从每个块结构中各选取一条分支路径组合在一起,形成一组并行路径,每个块结构中的所有分支路径都要被选取到。
不同的块结构中选取的分支路径为同时执行的路径。
最后、无并行执行路径和各组并行路径共同组成了所有的服务组合路径;
步骤九、将所有的服务组合路径,在路径执行条件下输出;
路径执行条件是指每条边上condition属性中的valid条件。
本发明的优点在于:
1)、一种基于流程编排的服务组合路径推导方法,能够自动化解析BPEL源文档,得到服务组合执行顺序,简化了测试人员的BPEL解析工作。
2)、一种基于流程编排的服务组合路径推导方法,能够完备的寻找到所有的服务组合路径,辅助测试过程,使得测试结果更加全面。
3)、一种基于流程编排的服务组合路径推导方法,能够辅助完成针对SOA软件系统的服务组合集成测试。
附图说明
图1是本发明一种基于流程编排的服务组合路径推导方法的流程图;
图2是对正常处理程序和异常处理程序提取出BPEL路径信息的流程图;
图3是本发明基于流程编排的服务组合路径推导具体实例示意图;
图4是结合深度优先搜索算法得到所有的服务组合路径的示意图;
图5是本发明第一个块结构的示意图;
图6是本发明第二个块结构的示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
本发明一种基于流程编排的服务组合路径推导方法,在SOA软件中,通过读取BPEL源文档,解析业务流程编排语言,提取BPEL路径信息,生成中间XML文档,通过去除冗余,生成描述路径的XML文档;然后利用改进的深度优先搜索算法,实现对控制流程图的搜索,为SOA软件架构系统推导出服务组合路径用于系统测试,验证系统测试人员是否完整的测试了所有的服务组合路径,还可以指导测试用例的生成。
如图1所示,具体步骤如下:
步骤一:针对某段BPEL源文档,提取BPEL源文档中的XML元素并分别进行编号;
元素编号用来唯一确定特定的BPEL元素;BPEL源文档中的元素分为基本活动元素以及结构化活动元素,先对基本活动元素进行编号,紧接着对结构化活动元素进行编号,并记录两次编号的分界编号,用于在后期去冗余合并边处理中判断是否为需要合并的边,在此将最后一个基本活动元素的编号作为分界编号。
步骤二、按BPEL语法标准将该BPEL源文档划分为正常处理程序和异常处理程序;
正常处理程序与异常处理程序与BPEL语法规范介绍的故障处理代码概念一致,异常处理代码由标签名faulthandler引导。
本发明将BPEL的解析划分为两部分,第一部分为正常的处理程序,第二部分为异常的处理程序。正常处理程序主要包括基本活动元素与结构化活动元素组成的活动,异常处理程序为故障处理。
步骤三、分别对正常处理程序和异常处理程序提取出BPEL路径信息;
如图2所示,具体步骤为:
步骤301、首选针对某段程序,判断是否为正常程序,如果是,删除scope元素;否则,保留scope元素;
步骤302、从外层到内层逐层遍历该段程序中的每层编号后的元素;
步骤303、针对某层作为当前层,判断该层遍历到的当前元素是否为基本活动元素,如果是,进入步骤304,否则,进入步骤307;
步骤304、判断当前层下一个元素是否为基本活动元素;如果是,将两个基本活动元素的编号相连,形成一条边;否则,进入步骤305;
步骤305、判断当前层下一个元素是否为结构化活动元素,如果是,将当前基本活动元素与结构化活动元素的编号相连形成一条边,进入步骤307;否则,进入步骤306;
步骤306、判断当前层下一个元素是否为throw,如果是,当前层的throw元素与该throw元素寻找的到异常程序中的第一个节点相连,并返回步骤303;否则,当前层下一个元素不存在,结束。
第一个节点是指异常程序中的结构化活动元素catchAll或catch;throw元素按BPEL语法标准寻找异常程序。
步骤307、判断结构化活动元素的内层元素是否为基本活动元素,如果是,该结构化活动元素与内层基本活动元素的编号相连形成边;否则,与内层结构化活动元素的编号相连形成边;
步骤四、将所有层提取的BPEL路径信息形成中间XML文档;
BPEL路径信息包括节点和边;其中节点是指每个基本活动元素的编号;边包括连边和边属性两部分;连边形式为:from=……to=……;边属性形式为:condition=……,flow=……;
BPEL路径形式为:from="编号"to="编号"condition="null/valid"flow="true/false";
对于边的解释例如下面的例子:
<arc from="6"to="pick54start"condition="null"flow="false"/>
arc元素为处理过程中定义的边元素,from="6"to="pick54start"表示连边方向为服务节点6到编号为54的pick活动的开始元素标签,condition="null"表示连边上没有条件,flow="false"表示连边不为并行节点分支。
步骤五、对中间XML文档,去除冗余元素,得到描述路径的XML文档;
具体去除方法为:针对两条BPEL不同的路径:当第一条路径中的to属性与第二条路径中的from属性中采用的编号值相同,且该编号大于分界编号,删除该编号,将两条路径合并为一条路径;当两条路径的condition属性中至少有一个为valid,则合并condition属性为valid;当两条路径的flow属性至少有一个为true,则合并flow属性为true。
示例:<arc from="-2"to="sequence94start"condition="null"flow="true"/>
<arc from="sequence94start"to="3"condition="my_condition"flow="false"/>
针对该示例,XML文档中的两条arc中同时出现相同字符串"sequence94start",并且前一个arc中的该字符串位于to属性,后一个arc中的该字符串位于from属性,且该属性的编号大于分界编号,说明该属性可删除,将这两条arc中的相同字符串删除,并合并为一条arc边;得到:<arc from="-2"to="3"/>;
同时,判断这两条边的condition有一个不为null,将合并的condition置位为"my_condition",同理这两条边只要有一个flow="true"则合并的flow置位为"true"。得到:<arc from="-2"to="3"condition="my_condition"flow="true"/>;
步骤六、利用XML解析工具读取描述路径的XML文档中的边以及节点。
利用DOM4J处理XML格式文件(描述路径的XML文档),BPEL的各个元素在同级时是平级没有特定顺序的,实现时:从BPEL中提取元素放入队列中,利用队列提供的顺序及其简便的存取操作可以完成相应的规则处理。遍历各个节点与边元素的属性,并利用哈希表存储节点与边的信息。
如图3所示,每个节点编号代表一个服务,每一个节点间连边的编号代表服务路径的触发事件或者条件。节点通过有向边相连,表示服务执行的顺序,例如:其中一个服务执行顺序为-2、4、6、8、5、0。-2特指所有服务路径的开始节点,4、6、8、5、0以节点顺序的方式表示了服务执行顺序。节点6和节点8之间有一个执行触发事件:7,即编号为7的这个服务事件如果发生,系统执行完编号为6的服务后会继续执行编号为8的服务。
步骤七、根据边和节点建立服务组合路径的邻接矩阵以及并行节点集合。
邻接矩阵为边和点的有向图;本示例中定义节点编号-2的节点为服务路径的开始节点。
邻接矩阵需要存储边的condition属性,所以定义邻接矩阵为String类型,若边元素的condition属性不为空,在邻接矩阵相应的位置填入condition的信息。
与传统的邻接矩阵的区别在于:1)类型不同,传统的邻接矩阵一般为布尔类型,而该邻接矩阵为String类型;2)存储内容不同,传统的邻接矩阵为非0即1的存储形式,而该邻接矩阵有三种内容:若两节点间不存在连边,邻接矩阵对应位置为空;若两节点间有连边无条件,则邻接矩阵对应位置为1;若两节点间有连边并且两节点间服务顺序执行有条件,则邻接矩阵对应位置为对应的条件。
示例如下:
针对该示例,得到的邻接矩阵如下:
对邻接矩阵处理时有两种处理方式,分别为:1)读取邻接矩阵元素,若为空,则说明节点间无连边,若不为空则说明节点间有连边;2)服务组合路径输出时若读取到非空且不为1的字符串,则说明边上有条件,输出时需要将其加入。
其中矩阵外数字表示服务节点,矩阵内元素1表示无条件的连边,例如,服务节点4和服务节点6对应矩阵元素为1,表示服务节点4与服务节点6相连;矩阵内元素7、9、11、13表示连边的条件,例如,服务节点6与服务节点8对应矩阵元素7,表示服务节点6执行完后,以服务7为触发条件,才能执行服务节点8。
并行节点集合为一维向量,用来存储邻接矩阵中具有并行分支路径的开始节点;每个开始节点向下一个节点相连边的flow属性均为true;并行节点用于记录并行路径信息。该示例并行节点集合为{4}。
步骤八、结合改进的深度优先搜索算法,得到所有的服务组合路径;
如图4所示,将BPEL控制流程图的邻接矩阵(包含条件condition的信息)生成多条路径,分别存储到默认无并行的路径存储空间,并将无并行路径写入所有服务组合路径临时存储空间;同时,从flow属性为true的边对应的并行开始节点集合生成块结构,每个块结构包括多个特定flow节点下的非并行分支路径,将所有的块结构组合生成的并行路径,写入所有服务组合路径临时存储空间,读取路径执行条件输出所有服务组合路径临时存储空间的路径;
BPEL标准中存在并行结构—flow,同一时间会出现多条服务路径同时执行,本发明将同时执行的多条路径作为一条路径,这样符合SOA路径搜索的实际意义需求。
具体步骤如下:
步骤801、从邻接矩阵中提取所有路径并存储到总路径集合中;
通过改进的算法可以解决路径合并到同一节点时,传统深度优先搜索算法无法遍历路径的问题,具体如下:
首先,搜索当前路径,判断当前节点是否被遍历,若未被遍历则将该节点加入路径,否则,继续判断当前路径存储空间中的路径子集是否存在,如果与搜索到的当前路径(包括当前节点)完全重合,则该节点不能加入路径,否则将该节点加入路径。
该示例得到的所有路径如下所示:
<-2><4><6><15>;<-2><4><10><15>;<-2><4><6><5><0>;<-2><4><10><5><0>;
<-2><4><6><8><5><0>;<-2><4><10><12><5><0>;<-2><-1><2>;
<n>表示编号为n的服务节点。
所有路径包括无并行执行的路径和并行执行路径,其中并行执行路径的开始节点存放在并行节点集合中;
步骤802、从总路径集合中,将无并行执行路径一一提取并存储到临时存储空间;
无并行执行路径为:<-2><-1><2>。
步骤803、针对并行节点集合中的每个开始节点,将该开始节点下同时执行的至少两条路径分别提取,作为一组并行路径,放到临时存储空间。
具体提取过程为:针对并行节点集合中的每个开始节点,该开始节点下的所有同时执行的并行子节点,对每一个并行子节点对应的分支路径一一提取,并将同一个并行子节点下的所有分支路径存储在一个块结构中,从每个块结构中各选取一条分支路径组合在一起,形成一组并行路径,每个块结构中的所有分支路径都要被选取到。
不同的块结构中选取的分支路径为同时执行的路径。
该示例中并行节点集合为{4},并行子节点为{6,10};得到的块结构为2个;
如图5所示,块1包括:<-2><4><6><15>;<-2><4><6><5><0>;<-2><4><6><8><5><0>;
如图6所示,块2包括:<-2><4><10><15>;<-2><4><10><5><0>;<-2><4><10><12><5><0>;
步骤804、无并行执行路径和各组并行路径共同组成了所有的服务组合路径;
块1中的路径集合x1与块2中的路径集合x2分别有三条路径,两组集合的路径两两组合可生成9条并行路径。同时把无并行执行路径为:<-2><-1><2>加入到总的服务组合路径中,总共得到10条路径。
如下所示:
path1:<-2><4><6><15>;<-2><4><10><15>
path2:<-2><4><6><5><0>;<-2><4><10><5><0>
path3:<-2><4><6><8><5><0>;<-2><4><10><5><0>
path4:<-2><4><6><15>;<-2><4><10><5><0>
path5:<-2><4><6><5><0>;<-2><4><10><12><5><0>
path6:<-2><4><6><8><5><0>;<-2><4><10><12><5><0>
path7:<-2><4><6><15>;<-2><4><10><12><5><0>
path8:<-2><4><6><5><0>;<-2><4><10><15>
path9:<-2><4><6><8><5><0>;<-2><4><10><15>
Path10:<-2><-1><2>
步骤九、将所有的服务组合路径,在路径执行条件下输出;
将所有无并行路径和所有并行路径,结合邻接矩阵中的condition信息,一并作为服务组合路径输出;路径执行条件是指每条边上condition属性中的valid条件。
读取所有服务组合路径临时存储空间以及带有condition条件属性的邻接矩阵,如果两节点间有condition属性,则在路径输出时的两节点间加入condition属性。
最终得到所有服务组合路径为:
path1:<-2><4><6>-9-<15>;<-2><4><10>-13-<15>
path2:<-2><4><6><5><0>;<-2><4><10><5><0>
path3:<-2><4><6>-7-<8><5><0>;<-2><4><10><5><0>
path4:<-2><4><6>-9-<15>;<-2><4><10><5><0>
path5:<-2><4><6><5><0>;<-2><4><10>-11-<12><5><0>
path6:<-2><4><6>-7-<8><5><0>;<-2><4><10>-11-<12><5><0>
path7:<-2><4><6>-9-<15>;<-2><4><10>-11-<12><5><0>
path8:<-2><4><6><5><0>;<-2><4><10>-13-<15>
path9:<-2><4><6>-7-<8><5><0>;<-2><4><10>-13-<15>
path10:<-2><-1>-1-<2>;
其中-a-表示路径执行条件为a。
Claims (5)
1.一种基于流程编排的服务组合路径推导方法,其特征在于,具体步骤如下:
步骤一、针对某段BPEL源文档,提取BPEL源文档中的元素并分别进行编号;
BPEL源文档中的元素分为基本活动元素以及结构化活动元素,首先将对基本活动元素按序进行编号,然后,继续顺次对结构化活动元素按序进行编号;并记录基本活动元素的最后一个编号作为分界编号;
步骤二、按BPEL语法标准将该BPEL源文档划分为正常处理程序和异常处理程序;
步骤三、分别对正常处理程序和异常处理程序提取出BPEL路径信息;
步骤四、将所有层提取的BPEL路径信息形成中间XML文档;
步骤五、对中间XML文档,去除冗余元素,得到描述路径的XML文档;
具体去除方法为:针对两条BPEL不同的路径:当第一条路径中的to属性与第二条路径中的from属性中采用的编号值相同,且该编号大于分界编号时,删除该编号,将两条路径合并为一条路径;当两条路径的condition属性中至少有一个为valid,则合并condition属性为valid;当两条路径的flow属性至少有一个为true,则合并flow属性为true;
步骤六、利用XML解析工具读取描述路径的XML文档中的边以及节点;
步骤七、利用边和节点建立服务组合路径的邻接矩阵以及并行节点集合;
邻接矩阵为边和点的连接有向图;
并行节点集合为一维向量,用来存储邻接矩阵中具有并行分支路径的开始节点;每个开始节点向下一个节点相连边的flow属性均为true;并行节点用于记录并行路径信息;
步骤八、结合深度优先搜索算法,得到所有的服务组合路径;
步骤九、将所有的服务组合路径,在路径执行条件下输出;
路径执行条件是指每条边上condition属性中的valid条件。
2.如权利要求1所述的一种基于流程编排的服务组合路径推导方法,其特征在于,所述的步骤三具体为:
步骤301、首选针对某段程序,判断是否为正常程序,如果是,删除scope元素;否则,保留scope元素;
步骤302、从外层到内层逐层遍历该段程序中的每层元素;
步骤303、针对某层作为当前层,判断该层遍历到的当前元素是否为基本活动元素,如果是,进入步骤304,否则,进入步骤307;
步骤304、判断当前层下一个元素是否为基本活动元素;如果是,将两个基本活动元素的编号相连,形成一条边;否则,进入步骤305;
步骤305、判断当前层下一个元素是否为结构化活动元素,如果是,将当前基本活动元素与结构化活动元素的编号相连形成一条边,进入步骤307;否则,进入步骤306;
步骤306、判断当前层下一个元素是否为throw,如果是,当前层的throw元素与该throw元素寻找的到异常程序中的第一个节点相连,并返回步骤303;否则,当前层下一个元素不存在,结束;
第一个节点是指异常程序中的结构化活动元素catchAll或catch;throw元素按BPEL语法标准寻找异常程序;
步骤307、判断结构化活动元素的内层元素是否为基本活动元素,如果是,该结构化活动元素与内层基本活动元素的编号相连形成边;否则,与内层结构化活动元素的编号相连形成边。
3.如权利要求1所述的一种基于流程编排的服务组合路径推导方法,其特征在于,步骤四中所述的BPEL路径信息包括节点和边;其中节点是指每个基本活动元素的编号;边包括连边和边属性两部分;
BPEL路径形式为:from="编号"to="编号"condition="null/valid"flow="true/false"。
4.如权利要求1所述的一种基于流程编排的服务组合路径推导方法,其特征在于,所述的步骤八具体为:
首先、从邻接矩阵中提取所有路径并存储到总路径集合中;
所有路径包括无并行执行的路径和并行执行路径,其中并行执行路径的开始节点存放在并行节点集合中;
然后、从总路径集合中,将无并行执行路径一一提取并存储到临时存储空间;针对并行节点集合中的每个开始节点,将该开始节点下同时执行的至少两条路径分别提取,作为一组并行路径,放到临时存储空间。
最后、无并行执行路径和各组并行路径共同组成了所有的服务组合路径。
5.如权利要求4所述的一种基于流程编排的服务组合路径推导方法,其特征在于,所述的提取过程为:针对并行节点集合中的每个开始节点,该开始节点下的所有同时执行的并行子节点,对每一个并行子节点对应的分支路径一一提取,并将同一个并行子节点下的所有分支路径存储在一个块结构中,从每个块结构中各选取一条分支路径组合在一起,形成一组并行路径,每个块结构中的所有分支路径都要被选取到;不同的块结构中选取的分支路径为同时执行的路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610428666.6A CN106126416B (zh) | 2016-06-16 | 2016-06-16 | 一种基于流程编排的服务组合路径推导方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610428666.6A CN106126416B (zh) | 2016-06-16 | 2016-06-16 | 一种基于流程编排的服务组合路径推导方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106126416A true CN106126416A (zh) | 2016-11-16 |
CN106126416B CN106126416B (zh) | 2018-12-07 |
Family
ID=57470619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610428666.6A Expired - Fee Related CN106126416B (zh) | 2016-06-16 | 2016-06-16 | 一种基于流程编排的服务组合路径推导方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106126416B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109214626A (zh) * | 2017-07-03 | 2019-01-15 | 优甸网络科技(上海)有限公司 | 基于编辑器的流程活页配置机制 |
CN110275697A (zh) * | 2019-06-28 | 2019-09-24 | 普元信息技术股份有限公司 | 分布式环境下基于拓扑结构的业务中台流程差异对比分析系统及方法 |
CN111694726A (zh) * | 2019-03-15 | 2020-09-22 | 南京大学 | 一种基于类型标注的Python程序类型推导方法 |
CN112102102A (zh) * | 2020-09-01 | 2020-12-18 | 紫光云(南京)数字技术有限公司 | 一种基于制造执行系统的工艺路径解决方法 |
CN115935012A (zh) * | 2023-02-21 | 2023-04-07 | 云筑信息科技(成都)有限公司 | 一种基于xml的流程可视化标记语言的业务处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955956A (zh) * | 2005-10-28 | 2007-05-02 | 北京航空航天大学 | 基于bpel的图形与xml文档相互转换的方法 |
US20100031138A1 (en) * | 2008-07-30 | 2010-02-04 | International Business Machines Corporation | Method For Generating Simple Object Access Protocol Messages and Process Engine |
CN104133717A (zh) * | 2014-08-26 | 2014-11-05 | 中电海康集团有限公司 | 一种用于数据开放系统的服务自动化生成和部署方法 |
-
2016
- 2016-06-16 CN CN201610428666.6A patent/CN106126416B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955956A (zh) * | 2005-10-28 | 2007-05-02 | 北京航空航天大学 | 基于bpel的图形与xml文档相互转换的方法 |
US20100031138A1 (en) * | 2008-07-30 | 2010-02-04 | International Business Machines Corporation | Method For Generating Simple Object Access Protocol Messages and Process Engine |
CN104133717A (zh) * | 2014-08-26 | 2014-11-05 | 中电海康集团有限公司 | 一种用于数据开放系统的服务自动化生成和部署方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109214626A (zh) * | 2017-07-03 | 2019-01-15 | 优甸网络科技(上海)有限公司 | 基于编辑器的流程活页配置机制 |
CN111694726A (zh) * | 2019-03-15 | 2020-09-22 | 南京大学 | 一种基于类型标注的Python程序类型推导方法 |
CN111694726B (zh) * | 2019-03-15 | 2022-04-05 | 南京大学 | 一种基于类型标注的Python程序类型推导方法 |
CN110275697A (zh) * | 2019-06-28 | 2019-09-24 | 普元信息技术股份有限公司 | 分布式环境下基于拓扑结构的业务中台流程差异对比分析系统及方法 |
CN110275697B (zh) * | 2019-06-28 | 2022-11-22 | 普元信息技术股份有限公司 | 分布式环境下基于拓扑结构的业务中台流程差异对比分析系统及方法 |
CN112102102A (zh) * | 2020-09-01 | 2020-12-18 | 紫光云(南京)数字技术有限公司 | 一种基于制造执行系统的工艺路径解决方法 |
CN115935012A (zh) * | 2023-02-21 | 2023-04-07 | 云筑信息科技(成都)有限公司 | 一种基于xml的流程可视化标记语言的业务处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106126416B (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106126416A (zh) | 一种基于流程编排的服务组合路径推导方法 | |
Yuan et al. | A graph-search based approach to BPEL4WS test generation | |
Burattin et al. | A framework for online conformance checking | |
Küster et al. | Detecting and resolving process model differences in the absence of a change log | |
US8504968B2 (en) | Method to determine high level power distribution and interface problems in complex integrated circuits | |
CN104699613B (zh) | 一种航天器测试需求自动生成系统及其方法 | |
CN104516813B (zh) | 网络页面的测试节点的选取方法和装置 | |
CN109936479A (zh) | 基于差分检测的控制平面故障诊断系统及其实现方法 | |
CN104850399B (zh) | 一种构件接口与构件实现映射表的追溯分析方法及系统 | |
Koop et al. | Bridging workflow and data provenance using strong links | |
CN102591641A (zh) | 业务流程验证方法及系统 | |
Huang | An agile approach to logical network analysis in decision support systems | |
SS | An ant colony optimization algorithm based automated generation of software test cases | |
CN100419750C (zh) | 用于将连锁式联接表格转换为树形结构的方法 | |
CN103679355B (zh) | 控制业务流程的方法和装置 | |
CN114218781A (zh) | 系统功能与可靠性、安全性及测试性综合建模分析方法 | |
CN108829903B (zh) | 判定fpga冗余设计的代码与综合后电路一致性的方法和系统 | |
CN106355301A (zh) | 用于确定工作流模板的方法及设备 | |
Kumar et al. | An efficient heuristic for logical optimization of ETL workflows | |
CN117312167A (zh) | 一种面向低代码平台的自动化测试方法及系统 | |
Li et al. | Shape analysis for unstructured sharing | |
Otto et al. | A flow graph based approach for controlled generation of AAS digital twin instances for the verification of compliance check tools | |
Pytel et al. | Enabling UTXO-based backwards and forwards traceabilty | |
JP5026322B2 (ja) | 業務プロセスモデル比較方法、その装置およびプログラム | |
Punn et al. | Testing big data application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181207 |