CN101267452A - 一种web服务合成方案转换方法及应用服务器 - Google Patents
一种web服务合成方案转换方法及应用服务器 Download PDFInfo
- Publication number
- CN101267452A CN101267452A CNA2008100657272A CN200810065727A CN101267452A CN 101267452 A CN101267452 A CN 101267452A CN A2008100657272 A CNA2008100657272 A CN A2008100657272A CN 200810065727 A CN200810065727 A CN 200810065727A CN 101267452 A CN101267452 A CN 101267452A
- Authority
- CN
- China
- Prior art keywords
- flow process
- synthetic schemes
- node
- group
- bpel
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种WEB服务的合成方案的转化方法,通过获取已有的BPEL合成方案的第一BPEL流程框架;根据所述第一BPEL流程框架生成DAG方式的合成方案;根据所述DAG方式的合成方案得到独立路径组;将所述独立路径组划分结果进行分析处理生成第二BPEL流程框架;将所述第二BPEL流程框架进行流程填充生成可执行流程,同时提供了一种应用服务器可以实现WEB合成方案的转化,通过本方法和应用服务器可以实现根据WS服务调用的并行或嵌套来对方案执行进行优化控制,以提高执行效率。
Description
技术领域
本发明涉及WEB服务,尤指一种WEB服务合成方案转换方法及应用服务器。
背景技术
WEB服务(Web Services,WS)合成分为三种类型:手动合成、半自动合成和自动合成。手动合成主要通过图形或文本编辑界面手工生成WebServices执行流程,并提交流程执行引擎。有的业务合成系统提供了图形化用户接口,用户使用UI(USER INTERFACE,用户界面)从UDDI(UniversalDescription,Discovery,and Integration,统一描述、发现和集成)合适的WebServices来构建执行流程。有的业务合成系统使用了服务容器来聚合UDDI中功能相同的Web Services,并在运行时使用打分机制来选择合适的服务。这些系统的缺点是当UDDI中的服务数达到一定值时,服务的发现和选择就会变得很困难,手动选择也增加了用户的负担。
半自动合成在用户合成过程中提供选择Web Services的语义上的建议,但是用户仍需要在筛选后的服务列表中选择需要合成的Web Services,并把他们连接起来。虽然这些系统解决了一些手动合成的问题,但是还是需要用户在很多服务中手动选择。
自动合成很好的解决了上述问题,它们一般使用人工智能等技术进行自动服务选择和服务流程生成。
BPEL(Business Process Execution Language For Web Services,Web服务的业务流程执行语言)是Web Services业务流程执行语言,它并不执行商业流程中的任何细节,也不涉及商业数据的存储和处理,只是用来控制各子服务的调用以及流程控制。
BPEL可以用以下的结构表示:
<process name=″UserProcess″>
<partners>....</partners>
<variables>....</variables>
<correlationSets>....</correlationSets>
<faultHandlers>....</faultHandlers>
<compensationHandler>....</compensationHandler>
<eventHandlers>....</eventHandlers>
<sequence>....</sequence>
</process>
每个流程以<process>开始,其中定义了流程名和名字空间。<partners>部分定义了流程调用的外部Web Services。<variables>定义了流程中使用的数据,这些数据基于Web Services的输入和输出。其中最主要的标签为<sequence>,定义了流程的执行结构,在该段中可以定义结构化活动(Structure Activities)和基本活动(Primitive Activities),结构化活动中可以嵌套基本活动。结构化活动有:<sequence>(顺序执行);<switch>(分支);<pick>(根据条件选择执行);<flow>(并行执行);<while>(循环)。基本活动主要有:<invoke>(调用外部Web Service);<receive>(接收用户输入);<reply>(把先前receive活动的输出返回给用户);<assign>(赋值操作,用于两个流程间的输入输出的赋值);<throw>(抛出异常);<terminate>(强迫业务流程实例停止执行);<wait>(执行延迟一个固定的时间周期);<empty>(什么都不做);<compensate>(指定作用域的补偿处理)。
在合成方案转化为BPEL方面,现有技术把最后生成的流程表示转换为BPEL,但是最后生成的流程方案都顺序执行每个子服务,不存在并行和分支情况。
还有一种WTOP(Web services TO BPEL,Web服务的合成方案自动向BPEL转换)算法,其基本思路是把合成方案按层次进行划分,一层一层往下遍历,直到执行所有的结点。方法是,找当前图中所有入度为零的结点,如果只有一个这样的结点,则直接输出并删除该结点及相关的边;如果多于一个入度为零的结点,把所有入度为零的结点用flow标签并行输出,并删除结点及相关的边。该算法可以实现从DAG(Directed acyclic graph,有向无环图)向BPEL的自动转换,并且使用了并行流程。但是该算法最大的问题是不支持并行流程的嵌套。
图1所示的是算法的流程。
该算法查找入度为零的结点按照层次遍历,算法输出如图2所示。
可以看到,开始时入度为零的结点只有ws1,则直接输出,然后删除该结点与之相关边;再查找入度为零的结点发现有ws2和ws3,此时输出flow标签,ws2和ws3作为flow的子结点输出;使用这种方法直至所有结点都执行完毕。
WTOP算法结果如图2(a)所示,而实际上该DAG的输出应该按图2(b)所示,即结点ws3ws4ws5ws6和结点ws2并行执行,而结点ws4ws5又是ws3ws4ws5ws6流程中的并行嵌套子流程。根据具体实例很容易看出不支持嵌套所产生的问题。
设ws2的执行时间为1000s,结点ws3ws4ws5ws6执行时间均为300s,结点ws1ws7的执行时间均为100s。并行流程的执行时间按照执行时间最大的那条子路径计算。则按照图2(a)WTOP算法计算合成服务的执行时间为t1+Max(t2,t3)+Max(t4,t5)+t6+t7=100+1000+300+300+100=1800s,如果按照图2(b)方式执行该服务应该为t1+Max(t2,(t3+Max(t4,t5)+t6))+t7=100+1000+100=1200s。看出WTOP算法因不支持嵌套并行流程对执行时间产生的影响。
现有技术中,用BPEL方式描述的合成方案指定了之后就不会更改,由BPEL引擎来按照顺序调用WEB服务,这种情况下,无法按照实际的多个WEB服务调用可以并行或嵌套的情况来对调用进行主动优化。
发明内容
为解决上述问题,本发明的实施例提供了一种将WEB业务合成方案进行转化的方法及应用服务器。
本发明的一个实施例提供了一种WEB服务合成方案转换方法,该方法包括:
获取WEB服务的业务流程执行语言合成方案的第一WEB服务的业务流程执行语言流程框架;
根据所述第一WEB服务的业务流程执行语言流程框架生成有向无环图方式的合成方案;
根据所述有向无环图方式的合成方案得到独立路径组;
将所述独立路径组进行分析处理生成第二WEB服务的业务流程执行语言流程框架;
将所述第二WEB服务的业务流程执行语言流程框架进行流程填充生成可执行流程。
本发明的一个实施例提供了一种WEB服务合成方案转换方法,该方法包括:
合成方案为WEB服务的业务流程执行语言合成方案,
获取WEB服务的业务流程执行语言合成方案的WEB服务的业务流程执行语言流程框架;
根据所述WEB服务的业务流程执行语言流程框架生成有向无环图方式的合成方案。
本发明的一个实施例提供了一种WEB Service合成方案转换方法,其特征在于,所述WEB Service合成方案为有向无环图方式的合成方案,
根据所述有向无环图方式的合成方案获得独立路径组;
将所述独立路径组行分析处理生成WEB服务的业务流程执行语言流程框架;
将所述第二WEB服务的业务流程执行语言流程框架进行流程填充生成可执行流程。
本发明的一个实施例提供了一种应用服务器,该应用服务器包括中央处理器,流程提取单元,用于提取已有的BPEL合成方案的第一BPEL流程框架;
流程处理单元,用于根据所述第一BPEL流程框架生成DAG方式的合成方案;
路径组划分单元,用于将所述DAG方式的合成方案进行路径组划分;
流程生成单元,用于根据所述DAG方式的合成方案进行分析处理生成第二BPEL流程框架;
流程填充单元:将所述第二BPEL流程框架进行流程填充生成可执行流程。
本发明的一个实施例提供了一种应用服务器,该应用服务器包括中央处理器;
流程提取单元,用于提取已有的BPEL合成方案的BPEL流程框架;
流程处理单元,用于根据所述BPEL流程框架生成DAG方式的合成方案。
本发明的一个实施例提供了一种应用服务器,该应用服务器包括中央处理器;
路径组划分单元,用于将所述DAG方式的合成方案进行路径组划分;
流程生成单元,用于根据DAG方式的合成方案生成BPEL流程框架;
流程填充单元,将所述BPEL流程框架进行流程填充生成可执行流程。
通过本发明实施例的方法和应用服务器将现有的BPEL方式描述的合成方案进行DAG方案生成和DAG方案映射后可以根据WS服务调用的并行或嵌套来对方案执行进行优化控制,以提高执行效率,同时解决了复杂合成方案转换为BPEL的问题。
附图说明
图1是WTOP算法的流程图;
图2a是WTOP算法的不支持并行嵌套情况下的输出结果;
图2b是WTOP算法的如果支持并行嵌套情况下的输出结果;
图3是DAG合成方案的图形化表示方式;
图4是本发明第一实施例的流程图;
图5是本发明第二实施例的流程图;
图6是本发明第三实施例的流程图;
图7是本发明第三实施例BPLE合成方案转化为DAG描述的图形化的示意图;
图8是本发明第三实施例中独立路径组的示意图;
图9是本发明第四实施例的系统结构图;
图10是本发明第五实施例的系统结构图;
图11是本发明第六实施例的系统结构图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举较佳实施例,对本发明进一步详细说明。
实施例一
本实施例将结合图4说明将BPEL合成方案转换为DAG合成方案。
步骤41:可以从合成方案存储库中获取BPEL合成方案。
步骤42:将BPEL合成方案进行流程提取获得BPEL流程框架。
通过一定的方式(例如采用XML(eXensible Markup Language可扩展标识语言)解析器,Xpath查询方法等)提取出BPEL脚本中流程相关的信息(也可以采用本领域普通技术人员知道的其他方式获取流程相关的信息),包括:顺序(Sequence)、并行(Flow)以及赋值操作(assign)中的来源(from)和目的(to),将这些信息组合成为BPEL流程框架。同时可以获得除流程框架所需相关信息之外的非流程信息(变量定义、角色定义等)。
例如:一个BPEL流程框架图示如下:
<processxmlns=″http://schemas.xmlsoap.org/ws/2003/03/business-process/″>
<sequence>
<assign>
<from variable=″userRequest″part=″ws1in″/>
<to variable=″ws1in″/>
</assign>
</sequence>
</process>
步骤43:通过流程处理获得DAG形式的合成方案。
DAG形式的合成方案就是按照一种通用的描述模式将多个WebServices及服务的关系描述出来,经过转换后的DAG合成方案可以通过多种方式表示,一般有图形化表示和数据表方式表示。
合成方案的图形化表示如图3所示,将Web Services合成引擎得到的合成方案通过DAG图的形式来表示,结点表示某个Web Services的操作,边表示上一个Web Services的输出和下一个Web Services的输入,并描述各Web Services之间的执行依赖和数据依赖。
DAG合成方案的数据表表示方法一般如下:
将Web Service的每一个操作(operation)都定义为一个DAG的一个结点。如果某个Web Service包含多个operation,就将其定义为不同的结点。(即可以看作多个仅有一个操作的Web Service)
将Web Service的上一个Web Service的输出和下一个Web Services的输入定义为一个DAG的相关结点的一个边。分别表示出结点的前驱节点集(即执行依赖)和数据依赖
图3的图形化表示的DAG合成方案的数据表方式表示如表1所示:
序号 | 节点 | 前驱节点集 | 数据依赖 |
1 | ws1 | Pred<NULL> | Relay<NULL> |
2 | ws2 | Pred<ws1> | Relay<e1> |
3 | ws3 | Pred<ws1> | Relay<e2> |
4 | ws4 | Pred<ws2,ws3> | Relay<e3,e4> |
5 | ws5 | Pred<ws3> | Relay<e5> |
6 | ws6 | Pred<ws4,ws5> | Relay<e6,e7> |
表1:合成方案的数据表方式表示
概念1:一个Web Services合成方案是一个DAG图G=(V,E),向量V和E能唯一标识一个合成方案G,其中:
结点V={Web Services中的操作wsi},wsi=input→output
边E为有序积V×V的一个子集,E={ei,j|ei,j=wsi→wsj},其中的ei,j是结点wsi指向wsj的有向边,表示服务wsi和服务wsj相关。
如图1中,e3,5=ws3→ws5,边e3,5表示ws3的一个输出是ws5的输入。
概念2:结点的前驱结点集:pred(wsi)={wsj|ej,i∈E}
图1中,ws6的前驱结点为{ws4,ws5}。
概念3:执行依赖:wsi必须在pred(wsi)执行完才能执行,即某结点必须等待其所有前驱结点都执行完毕才能执行。
概念4:数据依赖:如果wsi与wsj之间有边ei,j,则wsi与wsj存在数据依赖。表明wsi的一个输出流入wsj的一个输入。具体的流程处理可以采取以下方式:
判断BPEL流程框架中的每一个<assign>元素下的来源(from)属性和目的(to)属性。
对于from属性,如果from是用户输入,将from标记为NULL;如果from不是用户输入且不在DAG描述中则将from加入DAG中,并记录from的parent为NULL;如果from在DAG描述中,则继续判断to属性;
对于to属性,如果不在DAG描述中则加入,并将from属性加入到其parent属性中;如果to属性在DAG中,则将from属性加入到其父节点(parent)属性中。
重复执行对其他from属性和to属性的判断,结束后DAG描述中包含所有的Web Service对应的节点且通过parent关系构建了整个DAG描述。
根据整个DAG描述即可生成DAG形式的合成方案。
实施例二:
本实施例将结合图5说明将BPEL合成方案转换为DAG合成方案。
首先获取DAG合成方案,可以从合成方案存储单元获取;
步骤50:将获取的DAG合成方案进行方案验证,如果验证通过,则进入步骤51,该验证步骤可选。
具体验证方法如下:
验证合成方案表述是否是联通图:如果其中有多于一个独立的结点或者结点集则合成方案验证失败。
验证是否含有环路:如果合成方案含有环路则合成方案验证失败。
验证是否含有入度为零结点:如果所有的结点的入度均不为0,则说明该DAG不完整,合成方案验证失败。
是否含有出度为零结点:如果所有的结点的出度均不为0,则说明该DAG不完整,合成方案验证失败。
步骤51:将验证通过的DAG合成方案进行路径组划分。
在此部分需要先明确几个概念:
概念5:路径相关:如果路径A中的某一结点存在于路径B中,则称A与B路径相关。路径无关:路径A中的所有结点都不在路径B中,则称A与B路径无关。
如图1中的{2}与{3-4-6}路径无关,{3-4-6}和{3-5-6}则路径相关。
概念6:独立路径组:路径集中所有相关路径构成一组。
如图1中路径{3-4-6}和{3-5-6}是相关路径,就构成一组独立路径组{{3-4-6},{3-5-6}}。
概念7:如果存在某条路径P∈路径组G,且结点N是路径P上的点,那么称N为路径组G中的点。形式化表示为:如果N∈P且P∈G,则N∈V(G)。其中V(G)表示路径组G中所有路径上的结点集合。
定理1:任何独立路径组之间都是不相关的。
证明:假设A与B属于两个不同的独立路径组,且A与B相关。则必定路径P1∈A和路径P2∈B,P1与P2相关。根据独立路径组的概念,相关路径构成一组,则P1与P2属于同一独立路径组,则A与B属于同一独立路径组。与假设A与B属于不同独立路径组矛盾。
具体的路径组划分方法为:将DAG合成方案按照深度优先遍历方法得到所有从头结点到尾结点的路径组,本领域的普通技术人员都知道除了本实施例采用的深度优先遍历方法,还有其他方法可以得到所有从头结点到尾结点的路径组。
步骤52:将所有相关路径组进行合并,将所有相关路径划分为一个独立路径组。直到不能合并为止,将最终的得到的独立路径组输出。
步骤53:通过分析处理生成BPEL流程框架,该分析处理具体包括以下步骤:
步骤531:将合并的独立路径组进行分组判断;
如果划分结果只有一个独立路径组,即进行步骤532;如果多于一组,则进行步骤533和步骤534;
步骤532:判断独立路径组为什么方式(共四种),并分别按照相应的方式进行处理,输出相应的顺序信息以及节点。
四种方式处理法
(a)表示所有路径都有相同的头结点和尾结点,就先输出相同的头尾结点,同时删除所有路径中相同的头结点和尾结点,然后对剩下的子路径递归并执行流程生成方法的531步骤;
(b)表示所有路径的头结点相同而尾结点不同,此时先输出相同头结点,同时删除所有路径中相同的头结点,并对剩下的子路径递归并执行流程生成方法的531步骤;
(c)表示所有路径的尾结点相同而头结点不同,方法与前面类似,先输出尾结点并删除,然后再对剩下的路径递归并执行流程生成方法的531步骤;
(d)表示头尾结点都不相同,该情况下不能使用并行或者顺序流程进行转换,结合WTOP算法,在该情况下对结点按层次进行划分;然后取出所有入度为零的头结点并行输出到flow标签描述中,表示所有入度为零的节点所表示的服务并行执行;再对去掉头结点的子路径集合递归并执行流程生成方法的531步骤。
算法在这4种情况下的执行结果如表2所示:
(a) | (b) | (c) | (d) |
独立路径组中路径 | 1-2-41-3-4 | 1-2-41-2-51-3-5 | 1-2-43-4 | 2-4-82-5-83-5-83-6-7 |
执行结果 | <1><递归><4> | <1><递归> | <递归><4> | <flow><2><3></flow><递归> |
表2:四种方式处理法的执行结果
步骤533、步骤534:对于存在的多个独立路径组,针对每个独立路径组输出并行信息,并进行递归回调后针对每个独立路径组执行步骤531。
步骤535:将最终的分类的输出信息(包括顺序信息等)进行结果整合,输出BPEL的流程框架。
步骤54:流程填充
在流程生成阶段生成了BPEL流程框架,包含并行、顺序等信息,需要补充其它信息生成可执行流程:变量定义、参与者定义、操作。
例如:一个BPEL流程框架图示如下:
<process xmlns=″http://schemas.xmlsoap.org/ws/2003/03/business-process/″>
<sequence>
<assign>
<from variable=″userRequest″part=″ws1in″/>
<to variable=″ws1in″/>
</assign>
</sequence>
</process>
则需要将相应的变量填入之后,生成的脚本如下:
<process xmlns=″http://schemas.xmlsoap.org/ws/2003/03/business-process/″>
<variables>
<variable name=″userRequest″messageType=″tns:userRequest″/>
<variable name=″userResponse″messageType=″tns:userResponse″/>
</variables>
<partners>
<partner name=″User″serviceLinkType=″tns:UserSLT″myRole=″UserProvider″/>
<partner name=″ws1″serviceLinkType=″ws1LT″partnerRole=″ws1PR″/>
</partners>
<sequence>
<assign>
<copy>
<from variable=″userRequest″part=″ws1in″/>
<to variable=″ws1in″/>
</copy>
</assign>
<invoke name=″1″partner=″ws1″portType=″ws1PT″operation=″ws1OP″inputVariable=″ws1in″outputVariable=″ws1out″/>
</sequence>
</process>
实施例三:
本实施例用以说明将一个可执行的BPEL的合成方案进行优化,使其可以针对多个WS的并行和嵌套进行优化(通过DAG方案的生成和DAG方案的映射)。
本实施例以一个可执行BPEL合成方案为例说明本系统的执行。
该BPEL合成方案的表述如下:
<?xml version=″1.0″encoding=″UTF-8″?>
<process xmlns=″http://schemas.xmlsoap.org/ws/2003/03/business-process/″>
<variables>
<variable name=″userRequest″messageType=″tns:userRequest″/>
<variable name=″userResponse″messageType=″tns:userResponse″/>
<variable name=″ws1in″messageType=″ws1intype″/>
<variable name=″ws2in″messageType=″ws2intype″/>
<variable name=″ws3in″messageType=″ws3intype″/>
<variable name=″ws4in″messageType=″ws4intype″/>
<variable name=″ws5in″messageType=″ws5intype″/>
<variable name=″ws6in″messageType=″ws6intype″/>
<variable name=″ws7in1″messageType=″ws7in 1type″/>
<variable name=″ws7in2″messageType=″ws7in2type″/>
<variable name=″ws8in1″messageType=″ws8in1type″/>
<variable name=″ws8in2″messageType=″ws8in2type″/>
<variable name=″ws1out″messageType=″ws1outtype″/>
<variable name=″ws2out″messageType=″ws2outtype″/>
<variable name=″ws3out″messageType=″ws3outtype″/>
<variable name=″ws4out″messageType=″ws4outtype″/>
<variable name=″ws5out″messageType=″ws5outtype″/>
<variable name=″ws6out″messageType=″ws6outtype″/>
<variable name=″ws7out″messageType=″ws7outtype″/>
<variable name=″ws8out″messageType=″ws8outtype″/>
</variables>
<partners>
<partner name=″User″serviceLinkType=″tns:UserSLT″myRole=″UserProvider″/>
<partner name=″ws1″serviceLinkType=″ws1LT″partnerRole=″ws1PR″/>
<partner name=″ws2″serviceLinkType=″ws2LT″partnerRole=″ws2PR″/>
<partner name=″ws3″serviceLinkType=″ws3LT″partnerRole=″ws3PR″/>
<partner name=″ws4″serviceLinkType=″ws4LT″partnerRole=″ws4PR″/>
<partner name=″ws5″serviceLinkType=″ws5LT″partnerRole=″ws5PR″/>
<partner name=″ws6″serviceLinkType=″ws6LT″partnerRole=″ws6PR″/>
<partner name=″ws7″serviceLinkType=″ws7LT″partnerRole=″ws7PR″/>
<partner name=″ws8″serviceLinkType=″ws8LT″partnerRole=″ws8PR″/>
</partners>
<sequence>
<assign>
<copy>
<from variable=″userRequest″part=″ws1in″/>
<to variable=″ws1in″/>
</copy>
</assign>
<invoke name=″1″partner=″ws1″portType=″ws1PT″operation=″ws1OP″inputVariable=″ws1in″outputVariable=″ws1out″/>
</sequence>
<sequence>
<assign>
<copy>
<from variable=″ws1out″part=″ws1out″/>
<to variable=″ws2in″/>
</copy>
</assign>
<invoke name=″2″partner=″ws2″portType=″ws2PT″operation=″ws2OP″inputVariable=″ws2in″outputVariable=″ws2out″/>
</sequence>
<sequence>
<assign>
<copy>
<from variable=″ws2out″part=″ws2out″/>
<to variable=″ws3in″/>
</copy>
</assign>
<invoke name=″3″partner=″ws3″portType=″ws3PT″operation=″ws3OP″inputVariable=″ws3in″outputVariable=″ws3out″/>
</sequence>
<sequence>
<assign>
<copy>
<from variable=″ws1out″part=″ws1out″/>
<to variable=″ws4in″/>
</copy>
</assign>
<invoke name=″4″partner=″ws4″portType=″ws4PT″operation=″ws4OP″inputVariable=″ws4in″outputVariable=″ws4out″/>
</sequence>
<sequence>
<assign>
<copy>
<from variable=″ws4out″part=″ws4out″/>
<to variable=″ws5in″/>
</copy>
</assign>
<invoke name=″5″partner=″ws5″portType=″ws5PT″operatior=″ws5OP″inputVariable=″ws5in″outputVariable=″ws5out″/>
</sequence>
<sequence>
<assign>
<copy>
<from variable=″ws4out″part=″ws4out″/>
<to variable=″ws6in″/>
</copy>
</assign>
<invoke name=″6″partner=″ws6″portType=″ws6PT″operation=″ws6OP″inputVariable=″ws6in″outputVa riable=″ws6out″/>
</sequence>
<sequence>
<assign>
<copy>
<from variable=″ws5out″part=″ws5out″/>
<to variable=″ws7in1″/>
</copy>
</assign>
<assign>
<copy>
<from variable=″ws6out″part=″ws6out″/>
<to variable=″ws7in2″/>
</copy>
</assign>
<invoke name=″7″partner=″ws7″portType=″ws7PT″operation=″ws7OP″inputVariable=″ws7in1 ws7in2″outputVariable=″ws7out″/>
</sequence>
<sequence>
<assign>
<copy>
<from variable=″ws3out″part=″ws3out″/>
<to variable=″ws8in1″/>
</copy>
</assign>
<assign>
<copy>
<from variable=″ws7out″part=″ws7out″/>
<to variable=″ws8in2″/>
</copy>
</assign>
<invoke name=″8″partner=″ws8″portType=″ws8PT″operation=″ws8OP″inputVariable=″ws8in1 ws8in2″outputVariable=″ws8out″/>
</sequence>
<sequence>
<assign>
<copy>
<from variable=″ws8out″part=″ws8out″/>
<to variable=″userResponse″part=″ws8out″/>
</copy>
</assign>
<reply name=″reply″partner=″User″portType=″tns:machine-xxPT″operation=″mxx″variable=″userResponse″/>
</sequence>
</process>
步骤60:流程提取
获取该BPEL文件,本实施例中可以从合成方案存储单元中获取该文件,通过XML解析器获得所有<assign>元素。并保留流程相关的元素(Sequence、Flow),此处也可以提取其他非流程信息。提取后的BPEL流程框架为:
表3:提取后的BPEL流程框架
整个输出为:
<process>
<sequence>
<assign>
<from variable=″userRequest″part=″ws1in″/>
<to variable=″ws1in″/>
</assign>
</sequence>
<sequence>
<assign>
<from variable=″ws1out″part=″ws1out″/>
<to variable=″ws2in″/>
</assign>
</sequence>
<sequence>
<assign>
<from variable=″ws2out″part=″ws2out″/>
<to variable=″ws3in″/>
</assign>
</sequence>
<sequence>
<assign>
<from variable=″ws1out″part=″ws1out″/>
<to variable=″ws4in″/>
</assign>
</sequence>
<sequence>
<assign>
<from variable=″ws4out″part=″ws4out″/>
<to variable=″ws5in″/>
</assign>
</sequence>
<sequence>
<assign>
<from variable=″ws4out″part=″ws4out″/>
<to variable=″ws6in″/>
</assign>
</sequence>
<sequence>
<assign>
<from variable=″ws5out″part=″ws5out″/>
<to variable=″ws7in1″/>
</assign>
<assign>
<from variable=″ws6out″part=″ws6out″/>
<to variable=″ws7in2″/>
</assign>
</sequence>
<sequence>
<assign>
<from variable=″ws3out″part=″ws3out″/>
<to variable=″ws8in1″/>
</assign>
<assign>
<from variable=″ws7out″part=″ws7out″/>
<to variable=″ws8in2″/>
</assign>
</sequence>
<sequence>
<assign>
<from variable=″ws8out″part=″ws8out″/>
<to variable=″userResponse″part=″ws8out″/>
</assign>
</sequence>
</process>
步骤61:流程处理
流程处理的一般方法是:
判断BPEL流程框架中的每一个<assign>元素下的from属性和to属性。
对于from属性,如果from是用户输入,将from标记为NULL;如果from不是用户输入且不在DAG描述中则将from加入DAG中,并记录from的parent为NULL;如果from在DAG描述中,则继续判断to属性;
对于to属性,如果不在DAG描述中则加入,并将from属性加入到其parent属性中;如果to属性在DAG中,则将from属性加入到其parent属性中。
重复执行对其他from属性和to属性的判断,结束后DAG描述中包含所有的Web Service对应的节点且通过parent关系构建了整个DAG描述。
根据所生成的DAG描述即可成为一个DAG合成方案。
根据以上方法,本实施例的进行流程处理后获得的DAG合成方案以图形的方式如图7所示。
以数据库表为例表示生成的结果为表4所示:
序号 | 节点 | 前驱节点集 | 数据依赖 |
1 | ws1 | Pred<NULL> | Relay<NULL> |
2 | ws2 | Pred<ws1> | Relay<e12> |
3 | ws3 | Pred<ws2> | Relay<e23> |
4 | ws4 | Pred<ws1> | Relay<e14> |
5 | ws5 | Pred<ws4> | Relay<e45> |
6 | ws6 | Pred<ws4> | Relay<e46> |
7 | ws7 | Pred<ws5,ws6> | Relay<e57,e67> |
8 | ws8 | Pred<ws3,ws7> | Relay<e38,e78> |
表4:实施例合成方案的数据表表示方式
步骤62:合成方案验证
从合成方案存储环境取出该新生成的DAG合成方案按照下面的原则进行判断:
验证合成方案表述是否是联通图:如果其中有多于一个独立的结点或者结点集则合成方案验证失败。
验证是否含有环路:如果合成方案含有环路则合成方案验证失败。
验证是否含有入度为零结点:如果所有的结点的入度均不为0,则说明该DAG不完整,合成方案验证失败。
是否含有出度为零结点:如果所有的结点的出度均不为0,则说明该DAG不完整,合成方案验证失败。
判断结果为该方案符合要求。继续下面的步骤
步骤63:路径组划分
对该DAG合成方案进行路径组划分。得到路径组
Group={{1-2-3-8},{1-4-5-7-8},{1-4-6-7-8}}
步骤64:
合并相关路径组,将所有相关路径划分为一个独立路径组,直到不能合并为止,将最终的得到的独立路径组输出。
合并路径组:将Group={{1-2-3-8},{1-4-5-7-8},{1-4-6-7-8}}进行合并相关路径组得到独立路径组Group={{1-2-3-8},{1-4-5-7-8},{1-4-6-7-8}}。独立路径组的个数为1。
步骤65:流程生成
流程生成方法为:
步骤651:进行分组判断。如果划分结果只有一个独立路径组,即根据独立路径组的方式进行相应处理;如果有多个独立路径组,对于存在的多个独立路径组,针对每个独立路径组输出并行信息,标记后进行分析处理。
本实施例中合并后的独立路径组Group={{1-2-3-8},{1-4-5-7-8},{1-4-6-7-8}},独立路径组的个数为1。则进入步骤652;
步骤652:判断独立路径组为什么方式(共四种),并分别按照相应的方式进行处理,输出相应的顺序信息以及节点。
四种方式处理方法:
(a)表示所有路径都有相同的头结点和尾结点,就先输出相同的头尾结点,同时删除所有路径中相同的头结点和尾结点,然后对剩下的子路径进行分析处理;
(b)表示所有路径的头结点相同而尾结点不同,此时先输出相同头结点,同时删除所有路径中相同的头结点,并对剩下的子路径进行分析处理;
(c)表示所有路径的尾结点相同而头结点不同,方法与前面类似,先输出尾结点并删除,然后再对剩下的路径进行分析处理;
(d)表示头尾结点都不相同,该情况下不能使用并行或者顺序流程进行转换,结合WTOP算法,在该情况下对结点按层次进行划分;然后取出所有入度为零的头结点并行输出到flow标签描述中,表示所有入度为零的节点所表示的服务并行执行;再对去掉头结点的子路径集合进行分析处理。
算法在这4种情况下的执行结果如表5所示:
(a) | (b) | (c) | (d) | |
独立路径组中路径 | 1-2-41-3-4 | 1-2-41-2-51-3-5 | 1-2-43-4 | 2-4-82-5-83-5-83-6-7 |
执行结果 | <1><递归><4> | <1><递归> | <递归><4> | <flow><2><3></flow><递归> |
表5:四种方式处理法的执行结果
本实施例中判断出其为方式a(仅有一个头尾节点),按照方式a进行处理。输出的信息为:
<sequence>
<1>
<递归>
<8>
</sequence>
因为处理后判断还有剩余节点,则执行步骤651,判断剩余节点存在多个独立路径组,则执行步骤653、步骤654
步骤653:首先将剩余子路径的路径组进行标记,输出并行信息,将该多个独立路径组进行递归处理得到相关路径组Group={{2-3},{{4-5-7},{4-6-7}}}回调到步骤651进行分组判断:判断出独立路径组的个数为2。使用并行流程flow进行描述,如图8所示。图8中的两个虚线框中的独立路径组中的路径数分别为Size=1和Size=2,就分为两种不同的情况:独立路径组1中只有一条路径,则直接按序输出;独立路径组2中有多于1条子路径,则对其中所有的子路径递归。结果如表6所示:
独立路径组1 | 独立路径组2 | |
独立路径组的路径 | 2-3 | 4-5-74-6-7 |
执行结果 | <sequence><2><3></sequence> | <sequence><递归></sequence> |
表6:图8的执行结果
再对这两个独立路径流程使用flow标签描述,流程生成结果如表7所示。
<flow><sequence><2><3></sequence><sequence> |
<递归></sequence></flow> |
表7:图8独立路径组并行流程输出
整个输出为:
<sequence>
<ws1/>
<flow>
<sequence>
<ws2/>
<ws3/>
</sequence>
<sequence>
<ws4/>
<flow>
<sequence>
<ws5/>
</sequence>
<sequence>
<ws6/>
</sequence>
</flow>
<ws7/>
</sequence>
</flow>
<ws8/>
</sequence>
步骤655,进行结果整合,整合后生成BPEL流程框架为:
步骤66:流程填充。
将步骤60流程提取中获得其他非流程信息填充到步骤65的BPEL流程框架中,生成可执行的BPEL脚本。
实施例4:本实施例提供了一种应用服务器,下面结合附图9进行详细说明。
本实施例中的应用服务器,包括中央处理器90、流程提取单元91、流程处理单元92、流程验证单元93、路径组划分单元94、流程生成单元95、流程填充单元96、合成方案存储单元97。
中央处理器90用于发出控制信令控制其他各个单元。
流程提取单元91:从合成方案存储器97中获取合成方案,本实施例中所获取的合成方案是BPEL合成方案,本实施例中的流程提取单元91具体可以是XML解析器,通过XML解析器提取出BPEL合成方案中的流程信息,具体的流程信息为顺序、并行以及赋值操作中的来源和目的,通过这些具体信息就可以获得BPEL合成方案的流程框架,同时流程提取单元也可以获取出流程信息之外的其他非流程信息,如变量定义、角色定义等,流程提取单元可以将BPEL合成方案的流程框架存储到合成方案存储单元97中,也可以不存储直接发给流程处理单元92、流程填充单元97进行后续处理;
流程处理单元92:主要用于获得DAG形式的合成方案。流程处理单元92从流程提取单元91或合成方案存储单元97中中获取BPEL的流程框架和非流程信息,具体处理流程为:
流程处理单元92判断BPEL流程框架中的每一个<assign>元素下的from属性和to属性。
对于from属性,如果from是用户输入,将from标记为NULL;如果from不是用户输入且不在DAG描述中则将from加入DAG中,并记录from的parent为NULL;如果from在DAG描述中,则继续判断to属性;
对于to属性,如果不在DAG描述中则加入,并将from属性加入到其parent属性中;如果to属性在DAG中,则将from属性加入到其parent属性中。
重复执行对其他from属性和to属性的判断,结束后DAG描述中包含所有的Web Service对应的节点且通过parent关系构建了整个DAG描述。
根据所生成的DAG描述可以生成一个DAG合成方案,存储于合成方案存储单元97或直接发送给流程验证单元93,或直接发给路径组划分单元94。
流程验证单元93:用于将流程处理单元92产生的DAG方式的合成方案进行验证,如果验证通过则将所述DAG方式的合成方案传送给路径组划分单元,流程验证单元可以从流程处理单元92获得需验证的DAG方式的合成方案,也可以从合成方案存储单元97获得DAG方式的合成方案,流程验证单元93可选,DAG合成方案也可以不经流程验证单元93的验证而直接在流程组划分单元进行后续处理。
具体的验证方法为,
流程验证单元93验证合成方案表述是否是联通图:如果其中有多于一个独立的结点或者结点集则合成方案验证失败。
流程验证单元93验证是否含有环路:如果合成方案含有环路则合成方案验证失败。
流程验证单元93验证是否含有入度为零结点:如果所有的结点的入度均不为0,则说明该DAG不完整,合成方案验证失败。
流程验证单元93是否含有出度为零结点:如果所有的结点的出度均不为0,则说明该DAG不完整,合成方案验证失败。如果验证成功,则将验证通过的DAG合成方案发给路径组划分单元94;
路径组划分单元94:将DAG合成方案进行路径组划分。将DAG合成方案按照深度优先遍历方法得到所有从头结点到尾结点的路径组,本领域的普通技术人员都知道除了本实施例采用的深度优先遍历方法,还有其他方法可以得到所有从头结点到尾结点的路径组。
流程生成单元95:接收路径组划分单元94的划分结果,通过分析处理生成BPLE的流程框架。
流程生成单元95包括路径组合并模块951和框架生成模块952:
其中路径组合并模块951根据路径组划分结果进行路径组合并,将所有的相关路径合并成一个路径组,直到不能合并为止,将最终的得到的独立路径组输出给框架生成模块952;
框架生成模块952收到路径组合并模块951的合并结果,首先进行分组判断。如果划分结果只有一个独立路径组,即根据独立路径组的的方式进行相应处理,输出相应的顺序信息和节点;如果有2个以上独立路径组,对于存在的多个独立路径组,针对每个独立路径组输出并行信息,标记并进行递归回调后再次进行分组判断,根据分组判断的不同结果重复框架生成模块中的分析处理。
将每个独立路径组的顺序信息、节点信息、并行信息进行结果整合,输出BPLE的流程框架。通过框架生成模块的处理,将原有的BPLE的合成方案转化为支持并行流程嵌套BPLE流程框架
流程填充单元96:接收流程生成单元95或合成方案存储器的BPLE的流程框架,接收流程提取单元91或合成方案存储单元97的其他非流程信息,并将该非流程信息填充到BPLE的流程框架,生成可执行的BPLE脚本,该可执行的BPLE脚本在保持原有合成方案数据依赖和执行依赖的基础上支持嵌套的并行流程的生成。
合成方案存储单元97:用于存储BPLE合成方案、DAG合成方案,存储流程提取单元91产生的BPLE的流程框架和其他非流程信息。该存储器在应用服务器上可选,可以独立于应用服务器的形式独立存在。
实施例5:本实施例为一种应用服务器,其可以将BPLE合成方案转化为DAG形式的合成方案。
下面结合附图10进行详细说明。
本实施例中的应用服务器,包括中央处理器100、流程提取单元101、流程处理单元102、合成方案存储单元103。
中央处理器100用于发出控制信令控制其他各个单元。
流程提取单元101:从合成方案存储器103中获取合成方案,本实施例中所获取的合成方案是BPEL合成方案,本实施例中的流程提取单元101具体可以是XML解析器,通过XML解析器提取出BPEL合成方案中的流程信息,具体的流程信息为顺序、并行以及赋值操作中的来源和目的,通过这些具体信息就可以获得BPEL合成方案的流程框架,同时流程提取单元也可以获取出流程信息之外的其他非流程信息,如变量定义、角色定义等,流程提取单元可以将BPEL合成方案的流程框架存储到合成方案存储单元103中,也可以不存储直接发给流程处理单元102进行后续处理;
流程处理单元102:主要用于获得DAG形式的合成方案。流程处理单元102从流程提取单元101或合成方案存储单元103中中获取BPEL的流程框架和非流程信息,具体处理流程为:
判断BPEL流程框架中的每一个<assign>元素下的from属性和to属性。
对于from属性,如果from是用户输入,将from标记为NULL;如果from不是用户输入且不在DAG描述中则将from加入DAG中,并记录from的parent为NULL;如果from在DAG描述中,则继续判断to属性;
对于to属性,如果不在DAG描述中则加入,并将from属性加入到其parent属性中;如果to属性在DAG中,则将from属性加入到其parent属性中。
重复执行对其他from属性和to属性的判断,结束后DAG描述中包含所有的Web Service对应的节点且通过parent关系构建了整个DAG描述。
根据所生成的DAG描述可以得到一个DAG合成方案,存储于合成方案存储单元103。
合成方案存储单元103:用于存储BPLE可执行脚本,存储流程提取单元91产生的BPLE的流程框架、其他非流程信息和DAG合成方案。
实施例6:本实施例提供了一种应用服务器,可以将DAG合成方案转化为可执行的BPLE脚本,下面结合附图11具体说明。
本实施例中的应用服务器包括中央处理器110、流程验证单元111、路径组划分单元112、流程生成单元113、流程填充单元114、合成方案存储单元115。
中央处理器110用于发出控制信令控制其他各个单元。
流程验证单元111:用于从合成方案存储单元115获取DAG方式的合成方案并进行验证,如果验证通过则将所述DAG方式的合成方案传送给路径组划分单元112,流程验证单元111可选,DAG合成方案也可以不经流程验证单元111的验证而直接在流程组划分单元112进行后续处理。
具体的验证方法为:
验证合成方案表述是否是联通图:如果其中有多于一个独立的结点或者结点集则合成方案验证失败。
验证是否含有环路:如果合成方案含有环路则合成方案验证失败。
验证是否含有入度为零结点:如果所有的结点的入度均不为0,则说明该DAG不完整,合成方案验证失败。
是否含有出度为零结点:如果所有的结点的出度均不为0,则说明该DAG不完整,合成方案验证失败。如果验证成功,则将验证通过的DAG合成方案发给路径组划分单元112
路径组划分单元112:将DAG合成方案进行路径组划分。将DAG合成方案按照深度优先遍历方法得到所有从头结点到尾结点的路径组,本领域的普通技术人员都知道除了本实施例采用的深度优先遍历方法,还有其他方法可以得到所有从头结点到尾结点的路径组。
流程生成单元113:接收路径组划分单元112的划分结果,通过分析处理生成BPLE的流程框架。
流程生成单元113包括路径组合并模块1131和框架生成模块1132:
其中路径组合并模块1131根据路径组划分结果进行路径组合并,将所有的相关路径合并成一个路径组,直到不能合并为止,将最终的得到的独立路径组输出给框架生成模块1132;
框架生成模块1132收到路径组合并模块1131的合并结果,首先进行分组判断。如果划分结果只有一个独立路径组,即根据独立路径组的的方式进行相应处理,输出相应的顺序信息和节点;如果有2个以上独立路径组,对于存在的多个独立路径组,针对每个独立路径组输出并行信息,标记并进行递归回调后再次进行分组判断,根据分组判断的不同结果重复框架生成模块中的分析处理。
将每个独立路径组的顺序信息、节点信息、并行信息进行结果整合,输出BPLE的流程框架。通过框架生成模块的处理,将原有的BPLE的合成方案转化位支持并行流程嵌套BPLE流程框架
流程填充单元114:接收流程生成单元113或合成方案存储器的BPLE的流程框架,接收流程提取单元的其他非流程信息,并将该非流程信息填充到BPLE的流程框架,生成可执行的BPLE脚本,该可执行的BPLE脚本在保持原有合成方案数据依赖和执行依赖的基础上支持嵌套的并行流程的生成。
合成方案存储单元115:用于DAG合成方案,存储流程提取单元91产生的BPLE的流程框架和其他非流程信息,流程填充单元114生成的可执行的BPLE的脚本。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (37)
1.一种WEB服务合成方案转换方法,其特征在于,
获取WEB服务的业务流程执行语言合成方案的第一WEB服务的业务流程执行语言流程框架;
根据所述第一WEB服务的业务流程执行语言流程框架生成有向无环图方式的合成方案;
根据所述有向无环图方式的合成方案得到独立路径组;
将所述独立路径组进行分析处理生成第二WEB服务的业务流程执行语言流程框架;
将所述第二WEB服务的业务流程执行语言流程框架进行流程填充生成可执行流程。
2.根据权利要求1所述的方法,其特征在于:根据所述有向无环图方式的合成方案得到独立路径组包括:
将所述有向无环图方式的合成方案进行路径组划分;
将所述路径组划分的结果进行路径组合并得到独立路径组。
3.根据权利要求1所述的方法,其特征在于:所述获取WEB服务的业务流程执行语言合成方案的第一WEB服务的业务流程执行语言流程框架包括:
提取出WEB服务的业务流程执行语言合成方案中的流程信息,将所述流程信息组合成为第一WEB服务的业务流程执行语言流程框架,所述流程信息为顺序、并行以及赋值操作中的来源和目的。
4.如权利要求3所述的方法,其特征在于:所述提取出WEB服务的业务流程执行语言合成方案中的流程信息具体是通过XML解析器提取出WEB服务的业务流程执行语言合成方案中的流程信息。
5.根据权利要求1所述的方法,其特征在于,所述根据所述第一WEB服务的业务流程执行语言流程框架生成有向无环图方式的合成方案包括:
根据所述第一WEB服务的业务流程执行语言流程框架构建有向无环图描述,将所述有向无环图描述生成所述有向无环图方案。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一WEB服务的业务流程执行语言流程框架构建有向无环图描述包括:
判断第一WEB服务的业务流程执行语言流程框架中的每一个元素下的来源属性和目的属性;
如果所述赋值操作中的来源是用户输入,将该来源标记为空;如果所述赋值操作中的来源不是用户输入且不在有向无环图描述中则将该来源加入有向无环图中,并记录该来源的父节点为空;
如果所述赋值操作中的目的不在有向无环图描述中则加入,并将来源属性加入到其父节点属性中;如果目的属性在有向无环图中,则将来源属性加入到其父节点属性中。
7.根据权利要求1所述的方法,其特征在于,所述分析处理包括:
将所述独立路径组进行分组判断;
根据所述独立路径组获得相应的顺序信息及节点;
根据所述顺序信息及节点生成第二WEB服务的业务流程执行语言流程框架。
8.根据权利要求7所述方法,其特征在于,将所述独立路径组进行分组判断具体包括:
如果独立路径组个数为1,则根据所述独立路径组获得相应的顺序信息及节点;
如果合并后的独立路径组个数为2个或2个以上,则输出并行信息,将剩余子路径进行所述分析处理。
9.根据权利要求2所述的方法,其特征在于,所述将所述有向无环图方式的合成方案进行路径组划分为采用深度优先遍历方法得到所有从头节点到尾节点的路径组。
10.根据权利要求7所述的方法,其特征在于,所述根据所述独立路径组获得相应的顺序信息及节点包括:
如果所述独立路径组中只有1条路径,则直接顺序输出相应的顺序信息及节点信息;
如果所述独立路径组中有2条或2条以上路径,则对其中所有的子路径进行递归后进行所述分析处理,输出顺序信息及节点信息。
11.根据权利要求7所述的方法,其特征在于,所述根据所述独立路径组获得相应的顺序信息及节点包括:
如果所有路径中头节点或尾节点相同,则先输出路径中相同的节点,删除所有路径中相同的节点,对剩余的子路径进行判断,如果剩余子路径只有一个独立路径组,则输出顺序信息和节点;否则,针对每个独立路径组输出并行信息并进行分析处理;
如果头结点、尾结点都不相同,则对结点按层次进行划分;然后取出所有入度为零的头结点并行输出到并行标签描述中,表示所有入度为零的节点所表示的服务并行执行;再对去掉头结点的子路径集合判断,如果剩余子路径只有一个独立路径组,则输出顺序信息和节点;否则,针对每个独立路径组输出并行信息并进行分析处理。
12.根据权利要求1所述的方法,其特征在于,该方法还包括:获取已有的WEB服务的业务流程执行语言合成方案的非流程信息,所述流程填充包括,
将所述非流程信息填充到第二WEB服务的业务流程执行语言流程框架中生成可执行流程。
13.根据权利要求1-12所述的方法,其特征在于,所述方法还包括,将所述有向无环图方式的合成方案进行验证,如果验证通过则根据所述有向无环图方式的合成方案得到独立路径组。
14.根据权利要求13所述的方法,其特征在于,所述验证方法为:
如果所述有向无环图方式的合成方案中只有一个独立的结点或者结点集则合成方案验证通过;或
如果有向无环图方式的合成方案不含有环路则合成方案验证通过;或
如果所述有向无环图方式的合成方案的所有的结点的入度均不为0,则有向无环图方案验证通过;或
如果所述有向无环图方式的合成方案有结点的出度为0,则说明该有向无环图方案验证通过。
15.一种WEB服务合成方案转换方法,其特征在于,所述WEB服务合成方案为WEB服务的业务流程执行语言合成方案,
获取WEB服务的业务流程执行语言合成方案的WEB服务的业务流程执行语言流程框架;
根据所述WEB服务的业务流程执行语言流程框架生成有向无环图方式的合成方案。
16.如权利要求15所述的方法,其特征在于,所述根据所述WEB服务的业务流程执行语言流程框架生成有向无环图方式的合成方案包括:
根据所述第一WEB服务的业务流程执行语言流程框架构建有向无环图描述,将所述有向无环图描述结合生成所述有向无环图方案。
17.根据权利要求16所述的方法,其特征在于,所述根据所述WEB服务的业务流程执行语言流程框架构建有向无环图描述包括:
判断WEB服务的业务流程执行语言流程框架中的每一个元素下的来源属性和目的属性;
如果所述赋值操作中的来源属性是用户输入,将该来源标记为空;如果所述赋值操作中的来源不是用户输入且不在有向无环图描述中则将该来源加入有向无环图中,并记录该来源的父节点为空;
如果所述赋值操作中的目的属性不在有向无环图描述中则加入,并将来源属性加入到其父节点属性中;如果目的属性在有向无环图中,则将来源属性加入到其父节点属性中。
18.一种WEB服务合成方案转换方法,其特征在于,所述WEB Service合成方案为有向无环图方式的合成方案,
根据所述有向无环图方式的合成方案获得独立路径组;
将所述独立路径组进行分析处理生成WEB服务的业务流程执行语言流程框架;
将所述第二WEB服务的业务流程执行语言流程框架进行流程填充生成可执行流程。
19.根据权利要求18所述的方法,其特征在于,根据所述有向无环图方式的合成方案获得独立路径组包括:
将所述有向无环图方式的合成方案进行路径组划分;
将所述路径组划分结果进行路径组合并得到独立路径组。
20.根据权利要求18所述的方法,其特征在于,所述分析处理包括:
将所述独立路径组进行分组判断;
根据所述独立路径组获得相应的顺序信息及节点;
根据所述顺序信息及节点生成第二WEB服务的业务流程执行语言流程框架。
21.根据权利要求18所述方法,其特征在于,将所述独立路径组进行分组判断具体包括:
如果独立路径组个数为1,则根据所述独立路径组获得相应的顺序信息及节点;
如果合并后的独立路径组个数为2个或2个以上,则输出并行信息,将剩余子路径进行所述分析处理。
22.根据权利要求18所述的方法,其特征在于,所述将所述有向无环图方式的合成方案进行路径组划分为采用深度优先遍历方法得到所有从头节点到尾节点的路径组。
23.根据权利要求20所述的方法,其特征在于,所述根据所述独立路径组获得相应的顺序信息及节点包括:
如果所述独立路径组中只有1条路径,则直接顺序输出相应的顺序信息及节点信息;
如果所述独立路径组中有2条或2条以上路径,则对其中所有的子路径进行递归,并进行所述分析处理,输出顺序信息及节点信息。
24.根据权利要求20所述的方法,其特征在于,所述根据所述独立路径组获得相应的顺序信息及节点包括:
如果所有路径中头节点或尾节点相同,则先输出路径中相同的节点,删除所有路径中相同的节点,对剩余的子路径进行判断,如果剩余子路径只有一个独立路径组,则输出顺序信息和节点;否则,针对每个独立路径组输出并行信息并进行分析处理;
如果头结点、尾结点都不相同,则对结点按层次进行划分;取出所有入度为零的头结点并行输出到并行标签描述中,表示所有入度为零的节点所表示的服务并行执行;对去掉头结点的子路径集合判断,如果剩余子路径只有一个独立路径组,则输出顺序信息和节点;否则,针对每个独立路径组输出并行信息并进行分析处理。
25.一种应用服务器,包括中央处理器,其特征在于,包括:
流程提取单元,用于提取已有的WEB服务的业务流程执行语言合成方案的第一WEB服务的业务流程执行语言流程框架;
流程处理单元,用于根据所述第一WEB服务的业务流程执行语言流程框架生成有向无环图方式的合成方案;
路径组划分单元,用于将所述有向无环图方式的合成方案进行路径组划分;
流程生成单元,用于根据所述有向无环图方式的合成方案进行分析处理生成第二WEB服务的业务流程执行语言流程框架;
流程填充单元:将所述第二WEB服务的业务流程执行语言流程框架进行流程填充生成可执行流程。
26.根据权利要求25所述的应用服务器,其特征在于,还包括合成方案存储单元,用于存储合成方案,根据流程提取单元或流程生成单元的请求将合成方案发送给流程提取单元或流程生成单元。
27.根据权利要求26所述的应用服务器,其特征在于,所述合成方案存储单元还用于存储流程处理单元或流程填充单元的处理结果。
28.根据权利要求25所述的应用服务器,其特征在于,还包括方案验证单元,用于将所述有向无环图方式的合成方案进行验证,如果验证通过则将所述有向无环图方式的合成方案生成第二WEB服务的业务流程执行语言流程框架。
29.根据权利要求25所述的应用服务器,其特征在于,所述流程生成单元包括路径组合并模块、流程框架生成模块,
所述路径组合并模块用于将所述路径组进行合并得到独立路径组;
流程框架生成模块用于根据所述独立路径组获得相应的顺序信息及节点,并根据所述顺序信息及节点生成第二WEB服务的业务流程执行语言流程框架。
30.根据权利要求25所述的应用服务器,其特征在于,所述流程提取单元还用于提取除第一WEB服务的业务流程执行语言流程框架所需流程信息之外的其他非流程信息,并将所述非流程信息发送流程生成单元进行流程填充。
31.根据权利要求26所述的应用服务器,其特征在于,所述流程提取单元还用于提取除第一WEB服务的业务流程执行语言流程框架所需流程信息之外的其他非流程信息,并将所述非流程信息发送合成方案存储单元保存。
32.一种应用服务器,包括中央处理器,其特征在于,还包括:
流程提取单元,用于提取已有的WEB服务的业务流程执行语言合成方案的WEB服务的业务流程执行语言流程框架;
流程处理单元,用于根据所述WEB服务的业务流程执行语言流程框架生成有向无环图方式的合成方案。
33.根据权利要求32所述的应用服务器,其特征在于,还包括合成方案存储单元,用于存储合成方案,根据流程提取单元或流程生成单元的请求将合成方案发送给流程提取单元或流程生成单元。
34.根据权利要求33所述的应用服务器,其特征在于,所述合成方案存储单元还用于存储流程处理单元或流程填充单元的处理结果。
35.根据权利要求33所述的应用服务器,其特征在于,所述流程提取单元还用于提取WEB服务的业务流程执行语言合成方案的非流程信息,并发送给合成方案存储单元保存。
36.一种应用服务器,包括中央处理器,其特征在于,包括:
路径组划分单元,用于将所述有向无环图方式的合成方案进行路径组划分;
流程生成单元,用于根据有向无环图方式的合成方案生成WEB服务的业务流程执行语言流程框架;
流程填充单元,将所述WEB服务的业务流程执行语言流程框架进行流程填充生成可执行流程。
37.根据权利要求36所述的应用服务器,其特征在于,所述流程生成单元包括路径组合并模块、流程框架生成模块,
所述路径组合并模块用于将所述路径组进行合并得到独立路径组;
流程框架生成模块用于根据所述独立路径组获得相应的顺序信息及节点,并根据所述顺序信息及节点生成第二WEB服务的业务流程执行语言流程框架。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100657272A CN101267452B (zh) | 2008-02-27 | 2008-02-27 | 一种web服务合成方案转换方法及应用服务器 |
PCT/CN2009/070377 WO2009105975A1 (zh) | 2008-02-27 | 2009-02-06 | 一种web服务合成方案转换方法及应用服务器 |
EP09714434A EP2175611A4 (en) | 2008-02-27 | 2009-02-06 | CONVERTING PROCESS AND APPLICATION SERVER WITH COMPONENT-BASED SCHEME FOR A WEB SERVICE |
US12/780,635 US20100223591A1 (en) | 2008-02-27 | 2010-05-14 | Method and application server for converting web service composition logic |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100657272A CN101267452B (zh) | 2008-02-27 | 2008-02-27 | 一种web服务合成方案转换方法及应用服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101267452A true CN101267452A (zh) | 2008-09-17 |
CN101267452B CN101267452B (zh) | 2011-02-16 |
Family
ID=39989586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100657272A Expired - Fee Related CN101267452B (zh) | 2008-02-27 | 2008-02-27 | 一种web服务合成方案转换方法及应用服务器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20100223591A1 (zh) |
EP (1) | EP2175611A4 (zh) |
CN (1) | CN101267452B (zh) |
WO (1) | WO2009105975A1 (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872302A (zh) * | 2010-05-14 | 2010-10-27 | 东南大学 | 一种基于bpel的控制信息流图的建模方法 |
CN101895555A (zh) * | 2010-07-30 | 2010-11-24 | 中国科学院软件研究所 | 一种基于bpel的安全访问业务集成建模方法 |
CN102073505A (zh) * | 2011-01-31 | 2011-05-25 | 北京科技大学 | 面向服务组装的声明式事务集成方法和系统 |
CN102447729A (zh) * | 2010-10-05 | 2012-05-09 | 株式会社日立制作所 | 服务协同系统 |
CN102541875A (zh) * | 2010-12-16 | 2012-07-04 | 北京大学 | 有向无环图的关系型节点数据的存取方法、装置及系统 |
CN103207858A (zh) * | 2012-01-11 | 2013-07-17 | 富士通株式会社 | 用于推荐Web服务组合的装置和方法 |
CN104915251A (zh) * | 2015-06-05 | 2015-09-16 | 北京京东尚科信息技术有限公司 | 任务调度方法及装置 |
CN106469222A (zh) * | 2016-09-23 | 2017-03-01 | 东软集团股份有限公司 | 组合模型的执行方法和装置 |
CN108427550A (zh) * | 2018-02-13 | 2018-08-21 | 深圳太极云软技术股份有限公司 | 一种Web服务生成方法、装置及设备 |
CN109063056A (zh) * | 2018-07-20 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、系统及终端设备 |
CN109302459A (zh) * | 2018-09-12 | 2019-02-01 | 国电南瑞科技股份有限公司 | 面向服务的智能电网调度控制系统的服务编制装置及方法 |
CN109862105A (zh) * | 2019-03-01 | 2019-06-07 | 北京航空航天大学 | 一种多域环境中基于bpel的按需动态高性能服务组合方法 |
CN110727834A (zh) * | 2019-09-30 | 2020-01-24 | 北京百度网讯科技有限公司 | 有向无环图的获取方法、装置、电子设备和存储介质 |
CN113127169A (zh) * | 2021-04-07 | 2021-07-16 | 中山大学 | 数据中心网络中动态工作流的高效链路调度方法 |
CN115935012A (zh) * | 2023-02-21 | 2023-04-07 | 云筑信息科技(成都)有限公司 | 一种基于xml的流程可视化标记语言的业务处理方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2509266A1 (en) * | 2011-04-05 | 2012-10-10 | Alcatel Lucent | Method of pooling resources of a computer network |
CN102664917B (zh) * | 2012-03-26 | 2014-10-08 | 河海大学 | 一种web服务组合在线失效预测的方法 |
US9613112B2 (en) | 2013-03-15 | 2017-04-04 | Miosoft Corporation | Structuring data |
US9665403B2 (en) * | 2013-03-15 | 2017-05-30 | Miosoft Corporation | Executing algorithms in parallel |
CN103500102A (zh) * | 2013-10-16 | 2014-01-08 | 迈普通信技术股份有限公司 | 一种服务调用方法和提供服务调用的装置 |
US9483236B2 (en) * | 2014-04-11 | 2016-11-01 | Fair Isaac Corporation | Efficiently representing complex score models |
CN108427956B (zh) * | 2017-02-14 | 2019-08-06 | 腾讯科技(深圳)有限公司 | 一种对象聚类方法和装置 |
US10635789B1 (en) * | 2017-06-21 | 2020-04-28 | Amazon Technologies, Inc. | Request authorization using recipe-based service coordination |
CN113574517B (zh) * | 2019-03-14 | 2024-09-20 | 李亚东 | 生成分布式系统的规则编译器引擎装置、方法和介质 |
US11429450B2 (en) * | 2019-04-25 | 2022-08-30 | Vmware, Inc. | Aggregated virtualized compute accelerators for assignment of compute kernels |
CN112256444B (zh) * | 2019-07-22 | 2023-08-01 | 腾讯科技(深圳)有限公司 | 基于dag的业务处理方法、装置、服务器及存储介质 |
US12086141B1 (en) | 2021-12-10 | 2024-09-10 | Amazon Technologies, Inc. | Coordination of services using PartiQL queries |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8050935B2 (en) * | 2003-11-03 | 2011-11-01 | Sony Corporation | Dynamic web service composition to service a user request |
US20060106626A1 (en) * | 2004-11-16 | 2006-05-18 | Jun-Jang Jeng | Method and apparatus of model driven business solution monitoring and control |
US20070021995A1 (en) * | 2005-07-20 | 2007-01-25 | Candemir Toklu | Discovering patterns of executions in business processes |
CN1764183A (zh) * | 2005-11-03 | 2006-04-26 | 西安交通大学 | 一种基于计算机网络的QoS驱动的提供组合Web服务的计算机系统 |
CN1828532A (zh) * | 2006-04-17 | 2006-09-06 | 莱瑞世(北京)软件有限公司 | 一种将业务流程图转换为执行语言的方法 |
CN1996356B (zh) * | 2006-12-13 | 2012-05-30 | 华中科技大学 | 一种将xpdl格式的工作流模型转换成bpel格式的方法 |
CN101257452B (zh) * | 2008-04-16 | 2010-12-08 | 中兴通讯股份有限公司 | 一种以太无源光网络接入设备发送下行数据报文的方法 |
-
2008
- 2008-02-27 CN CN2008100657272A patent/CN101267452B/zh not_active Expired - Fee Related
-
2009
- 2009-02-06 EP EP09714434A patent/EP2175611A4/en not_active Withdrawn
- 2009-02-06 WO PCT/CN2009/070377 patent/WO2009105975A1/zh active Application Filing
-
2010
- 2010-05-14 US US12/780,635 patent/US20100223591A1/en not_active Abandoned
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872302A (zh) * | 2010-05-14 | 2010-10-27 | 东南大学 | 一种基于bpel的控制信息流图的建模方法 |
CN101872302B (zh) * | 2010-05-14 | 2013-02-27 | 东南大学 | 一种基于bpel的控制信息流图的建模方法 |
CN101895555B (zh) * | 2010-07-30 | 2012-11-07 | 中国科学院软件研究所 | 一种基于bpel的安全访问业务集成建模方法 |
CN101895555A (zh) * | 2010-07-30 | 2010-11-24 | 中国科学院软件研究所 | 一种基于bpel的安全访问业务集成建模方法 |
CN102447729A (zh) * | 2010-10-05 | 2012-05-09 | 株式会社日立制作所 | 服务协同系统 |
CN102541875A (zh) * | 2010-12-16 | 2012-07-04 | 北京大学 | 有向无环图的关系型节点数据的存取方法、装置及系统 |
CN102541875B (zh) * | 2010-12-16 | 2014-04-16 | 北京大学 | 有向无环图的关系型节点数据的存取方法、装置及系统 |
CN102073505B (zh) * | 2011-01-31 | 2013-09-25 | 北京科技大学 | 面向服务组装的声明式事务集成方法和系统 |
CN102073505A (zh) * | 2011-01-31 | 2011-05-25 | 北京科技大学 | 面向服务组装的声明式事务集成方法和系统 |
CN103207858A (zh) * | 2012-01-11 | 2013-07-17 | 富士通株式会社 | 用于推荐Web服务组合的装置和方法 |
CN103207858B (zh) * | 2012-01-11 | 2016-03-23 | 富士通株式会社 | 用于推荐Web服务组合的装置和方法 |
CN104915251B (zh) * | 2015-06-05 | 2019-11-05 | 北京京东尚科信息技术有限公司 | 任务调度方法及装置 |
CN104915251A (zh) * | 2015-06-05 | 2015-09-16 | 北京京东尚科信息技术有限公司 | 任务调度方法及装置 |
CN106469222A (zh) * | 2016-09-23 | 2017-03-01 | 东软集团股份有限公司 | 组合模型的执行方法和装置 |
CN108427550A (zh) * | 2018-02-13 | 2018-08-21 | 深圳太极云软技术股份有限公司 | 一种Web服务生成方法、装置及设备 |
CN109063056A (zh) * | 2018-07-20 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、系统及终端设备 |
CN109302459A (zh) * | 2018-09-12 | 2019-02-01 | 国电南瑞科技股份有限公司 | 面向服务的智能电网调度控制系统的服务编制装置及方法 |
CN109302459B (zh) * | 2018-09-12 | 2021-04-06 | 国电南瑞科技股份有限公司 | 面向服务的智能电网调度控制系统的服务编制装置及方法 |
CN109862105A (zh) * | 2019-03-01 | 2019-06-07 | 北京航空航天大学 | 一种多域环境中基于bpel的按需动态高性能服务组合方法 |
CN109862105B (zh) * | 2019-03-01 | 2020-10-13 | 北京航空航天大学 | 一种多域环境中基于bpel的按需动态高性能服务组合方法 |
CN110727834A (zh) * | 2019-09-30 | 2020-01-24 | 北京百度网讯科技有限公司 | 有向无环图的获取方法、装置、电子设备和存储介质 |
CN113127169A (zh) * | 2021-04-07 | 2021-07-16 | 中山大学 | 数据中心网络中动态工作流的高效链路调度方法 |
CN113127169B (zh) * | 2021-04-07 | 2023-05-02 | 中山大学 | 数据中心网络中动态工作流的高效链路调度方法 |
CN115935012A (zh) * | 2023-02-21 | 2023-04-07 | 云筑信息科技(成都)有限公司 | 一种基于xml的流程可视化标记语言的业务处理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2175611A1 (en) | 2010-04-14 |
CN101267452B (zh) | 2011-02-16 |
WO2009105975A9 (zh) | 2010-04-01 |
US20100223591A1 (en) | 2010-09-02 |
WO2009105975A1 (zh) | 2009-09-03 |
EP2175611A4 (en) | 2010-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101267452B (zh) | 一种web服务合成方案转换方法及应用服务器 | |
CN111930372B (zh) | 一种通过可拖拽流程图实现的服务编排解决方法及系统 | |
Zhang et al. | Automatic Composition of Semantic Web Services. | |
CN101777004B (zh) | 面向服务环境中基于模板实现bpel子流程复用的方法及系统 | |
CN110888722A (zh) | 任务处理方法、装置、电子设备及计算机可读存储介质 | |
CN109491777A (zh) | 任务执行方法、装置、设备及存储介质 | |
CN102394928A (zh) | 一种分布式环境下的语义web服务系统 | |
CN105303305B (zh) | 一种插件式业务流程家族的协同演化方法 | |
CN111562966B (zh) | 一种人机物融合云计算平台的资源编排方法 | |
CN108090664A (zh) | 一种工作流适配调度方法、装置、设备和存储介质 | |
CN106815027A (zh) | 一种用于电网多维业务复合计算的高弹性计算平台 | |
CN107122232A (zh) | 一种多媒体任务处理装置及方法 | |
CN101668047A (zh) | 组合服务描述语言自动生成方法及装置 | |
CN102413114B (zh) | 一种面向组合的语义web服务发现方法 | |
CN102081675A (zh) | 支持Top K查询的自动服务组合方法及系统 | |
Laguna et al. | Seamless development of software product lines | |
CN116388838A (zh) | 卫星通信网络多场景多用户多业务意图转译方法 | |
CN115935493B (zh) | 一种二维cad图纸转bim模型方法及系统 | |
CN107391221A (zh) | 调度服务器、编译服务器及分布式编译方法 | |
CN103108044A (zh) | 一种基于依赖图约减和QoS保持的Web服务组合方法 | |
Kulkarni et al. | CDEF: Conceptual data extraction framework for heterogeneous data | |
CN116260590A (zh) | 一种跨链场景下的高并发中继事务协调方法及系统 | |
CN112330202B (zh) | 一种基于编排控制流程业务开通的控制意图工单处理方法 | |
CN101763262B (zh) | 一种基于模型驱动的地理信息服务组合设计器生成方法 | |
CN107346470A (zh) | 一种面向交通信息服务的智能规划方法 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110216 Termination date: 20140227 |