近年来,Web服务的数量在不断增长,同时用户的需求也在增长,而单一的服务有时不能满足用户需求,于是要求Web服务合成,即将已有的Web服务连接与合并起来,生成新的Web服务,同时也为现有的服务集合增加价值。围绕Web 服务组合提出了众多的组合方法。比较典型的有基于工作流的服务组合方法[1];文献[2]将用DAML-S描述的Web服务转换为一组线性逻辑公式,使用线性逻辑定理证明的
方式来进行服务自动组合;文献[3]通过分层任务网络规划来实现服务的自动组合,利用SHOP2规划器进行求解。文献[4]给出了一种半自动的服务组合方法,将Web服务组合问题形式化为一个AND/OR图中的搜索问题,给出了一种搜索算法以用来确定满足服务请求的合成服务。以上方法都能得到满足用户需求的组合计划,但是这些组合计划都是服务组合的数据流模型 ,并没有给出服务组合的控制流结构,比如顺序、并行和循环等。同样的数据流模型,由于控制结构的组合方式不同,组合服务的性能会有差异。文献[5]611-612提出了一种算法来抽取并发关系,获取性能最佳的具有控制流结构的组合方案,但是算法存在很多的缺陷,而且选择性能最佳(耗时南粤论文中心(WWW.NYLW.NET)最低)的方案是通过人工计算得出,不能很好的实现整个流程自动化。?
因此,本文提出一种基于Petri网的服务组合优化方法。首先针对用户需求,用Petri网建立Web服务组合模型;然后利用可达标识图进行分析,提取网中变迁之间以及变迁序列之间的各种并发关系,之后根据相应算法,得到性能最优的组合结构;最后转换为业务过程执行语言(BPEL)抽象模板,便于组合服务的执行,以方便用户使用。?
1 基本概念?
Petri网是一个良好的过程建模工具,一个Petri网图是一个双枝有向多重图,图中节点代表库所和变迁。Petri网有严格的数学基础,可以广泛应用于描述和研究具有并发、异步、分布式、并行、非确定性和随机性质的信息系统。?
一个Web服务的行为基本上是一个偏序的操作集。因此,它可以直接被映射为一个Petri网。操作被映射为变迁,Web服务的一组输入参数被映射为库所,库所与变迁之间的流关系反映了Web服务构架中消息驱动行为的基本特性。?
设描述Web服务的Petri网包括一个输入库所?i(一个没有输入弧的库所)和一个输出库所o?(一个没有输出弧的库所)。一个Petri网的输入库所用来接收信息,而输出库所则用来发送信息。在任何时候,一个Web服务将处于下列状态之一:未实例化 、就绪、执行、阻塞或完成。当一个Web服务处在就绪状态,就意味着在相应输入库所中的托肯使得输入库所的后集(变迁集)可以发生。而完成状态则意味着输出库所的前集已经发生,并且在相应的输出库所中产生了托肯。?
定义1Web服务[6]2873-2873:Web服务是一组操作的集合,一个Web服务?S?定义为五元组?S?=(Id,SName,Desc,URL,Oper),其中,Id为Web服务的唯一标识;SName为web服务的名称;Desc为服务的描述;URL为服务的调用地址;Oper为服务的操作集合。一个操作用?OP?i(I?i,O?i)表示,I?i,O?i分别是操作OP?i?的输入、输出参数集合。?
定义2两个服务操作有数据依赖关系:对于两个操作?OP?i(I?i,O?i)和OP?j(I?j,O?j),如果O?i∩I?j≠?,则称OP?j(I?j,O?j)依赖于OP?i(I?i,O?i),OP?i(I?i,O?i)被OP?j(I?j,O?j)?依赖。?
定义3用户组合服务需求用WS?R?(I?R,O?R)描述, 其中I?R是用户提供的数据集合,O?R?是用户期望得到的数据集合。?
定义4[6]2 874-2 875 服务组合模型是合理的,必须满足以下基本要求:?
(1) 每个模型都存在一个输入库所?i?和一个输出库所?o?;?
(2) 每个变迁、库所都在一条从输入库所?i?到输出库所?o?的路径上;?
(3) 在任何情况下,服务组合总能最终终止,在终止的时候,只有输出库所中有token,而其它库所是没有token存在的;?
(4) 在组合模型中没有死组合的存在,即任何一个变迁都有执行的可能。?
本文只列出密切相关的定义,有些定义是通过扩展得来的,其它Petri网定义见文献[7]。?
?A?+:?的输出矩阵,A?-:?的输入矩阵,A:?的关联矩阵。矩阵A的第i行向量简写为A(i)。一个变迁序列q=T?1 T?2 T?3 …T?k, A(q)=A(1)+?
A(2)+…+A(k)?。 Price?(T?i)表示变迁T?i?发生的费用(这里指耗时), Price(?q)表示发生变迁序列q?的费用。?
变迁之间的顺序关系:??=(P,T;F,M?0)?是一个Petri网系统,??M?1∈R(M?0),T?1,T?2,…,T?n∈T在标识M?1下有顺序关系,当且仅当M?1[T?1>M?2[T?2…M?n[T?n>M′,且?T?i∈T,i∈[2,n]在标识M?1,M?2,…,M??i-1下都没有发生权,仅仅在M?i下可以发生。即如果M?1≥A?-(1) ?and?且M?1+A(1)≥?
A?-(2)?and?…?and?M+A(1)+A(2)+…+A(n-1)≥A?-(n)且?i∈[2,n],M?1+A(1)+…+A(i-1)≥
A?-(i)?and?M?1+A(1)+…+A(i-1)≯A?-(j) ,j∈[i+1,n]。(不大于等于即不能满足每一个分量都大于等于A?-(j)的每一个分量,此时不等价小于),则称为顺序的,记为T?1·T?2·…·T?n。??
变迁之间的并发关系:??=(P,T;F,M?0)?是一个Petri网系统,??M∈R(M?0),T?1,T?2,…,T?n∈T ,在标识M?1下有并发关系,当且仅当(1)M[T?1>且M[T?2>…且M[T?n>;(2)对于每个T?i,M[T?i>M?1,M?1[T?2>…且M?1[T??i-1>且M?1[T??i+1>…且M?1[T?n>。即M≥A?-(1)+A?-(2)+…+A?-(n)且?i∈[1,n]M[T?i>M?1,M?1≥A?-(1)+A?-(2)+…+A?-(n)],则称为可并发的,记为T?1‖T?2‖…‖T?n。??
2Web服务组合模型?
为了考虑费用(消耗时间),本文Web服务组合的Petri网模型在网模型??=(P,T;F,K,W,M?0)上稍作扩展,?=(P,T;F,K,W,M?0,λ),λ=(λ?1,λ?2,…,λ?n)为变迁发生的持续时间,?P?i∈P,K(P?i)=1;M?0(i)=1?,其它库所的标识为0,所有库所容量为1。建立Petri网模型之后,分析Petri网可采用可达树法、不变量分析、约简等方法,其中可达标识图分析法直观简捷,利用生成算法得到可达标识图,然后利用可达标识图进行分析,提取网中变迁之间以及变迁序列之间的各种并发关系,之后根据相应算法,得到性能最优的组合结构;最后转换为业务过程执行语言抽象流程。? (责任编辑:南欧)