李 山曾
安徽中澳科技职业学院信息技术与艺术传媒系,安徽合肥,230041
LI Ceng
Information Technology and Media Arts Department,Anhui ZHONG-AO Institute of Technology,Hefei Anhui,230041,China
Web服务是一种平台无关、松散耦合、自包含的Web应用程序,适合在互联网这种异构、分布的环境中发布[1]。随着业务复杂性的提高,单一的Web服务无法满足业务需求,往往需要调用若干个Web服务形成一个Web服务组合完成某项具体的业务。Web服务组合的正确性是有效利用这些服务的基础,对Web服务组合的分析和验证成为当前的一个研究热点。
Petri网是一种适用于多系统的、基于状态的建模方法,它具有直观的图形表示、形式化的语义定义和丰富的分析技术等优点[2],在工作流建模分析上已经有了比较成熟的应用。由于工作流和Web服务流程存在很多相似之处,可以将工作流技术作为Web服务组合的基础,对 Web服务组合进行建模和分析。
Web服务组合网借鉴工作流网的定义,在Petri网的基础上提出。基于Petri网的Web服务组合可定义如下[3]:
一个Petri网PN=(P,W,F)满足以下两个条件,则被称为Web服务组合网,其中P为库所集合,W为Web服务集合,F为库所到Web服务的弧的集合。
(1)PN有两个特殊的库所:起始库所i和终止库所o,i的前驱库所为空,o的后继库所为空,形式化表示为
(2)如果在PN中加入一个新的服务w,使w连接库所i与o,则w的前驱库所为i,后继库所为o,形式化表示为:·w={i},w·={o}。
Web服务组合模型将单一的Web服务用库所和弧连接在一起,其中,Web服务使用矩形表示,库所使用圆形表示;每个Web服务之前有一个前驱库所,之后有后继库所;Token用黑色圆点表示,存在某个库所之中,当Token所在库所为某个Web服务的前驱库所,表明该Web服务将要执行;Web服务组合模型在执行前Token存在起始库所i中,当模型执行完毕后仅终止库所中存在Token。图1为一个典型的串行结构的Web服务组合网模型。
图1 示例模型
在Web服务组合模型实施之前,利用基于Petri网的分析技术对Web服务组合模型进行验证,可以有效地避免执行时出现异常,从而降低运行风险。
一个Web服务组合模型合理性规定有三个:(1)从模型的初始库所必然可以到达终止库所;(2)当Token存在于终止库所时,整个Web服务模型必然执行完毕,其他所有库所中都不能存在Token;(3)整个模型的所有 Web服务必然都能够得到执行,不能出现无法执行的Web服务。
根据上述Web服务组合模型合理性描述,基于三个合理性规定得出Web服务组合模型的合理性定义如下[3]:
当一个Web服务网PN=(P,W,F)满足下列三个条件时,其建模的过程是合理的,组合模型是正确可实施的。
(1)对于每一个库所i可达的 Web服务w,必然存在一个实施序列,可以从服务w到达终止库所o,形式化表示为:
(2)库所o是从库所i可达的唯一终止库所,且结束时终止库所o存在唯一的Token,形式化表示为:
(3)在PN中不存在无法执行的 Web服务,形式化表示为
根据Web服务组合模型的合理性定义,采用库所向量和Web服务集合来动态表示模型的执行状态。其中Web服务集合中包含所有未被执行的Web服务,库所向量的维数取决于模型中的库所个数,Token所在库所对应向量元素为1,空库所对应的向量元素为0。
基于Web服务的前后库所确定Token转移前后的向量表示,通过反复引入新Web服务来改变库所向量。模型执行的初始状态为Web服务集合W={W1,W2,W3,…}和库所向量P=(1,0,0,…),每引入一个新 Web服务,表明托肯将存在此 Web服务的后续库所,以此改变库所向量,并从Web服务集合中删除此Web服务,如果最终结果W=且P=(0,0,…,1),表明终止库所的唯一性和所有Web服务的活性,该 Web服务组合模型是正确合理的。
以装饰公司客户订单处理Web应用为例,客户订单处理流程为:装饰公司接到客户订单,分配给设计部设计装饰方案;将装饰方案发送给客户确认;若客户认可装修方案后客户付装修定金,否则提出修改要求,再由设计部门进行设计;采购部门根据方案订购装饰材料,同时施工部制定施工方案;根据施工方案组织施工;完工后,客户检验施工效果;若客户认可施工效果,则付尾款,否则,施工部继续完善,再交由客户检验。
根据以上描述确定客户订单处理过程中存在的变迁,并按照图形化的表示方法建立Web服务组合模型。其中,W1:接收订单;W2:方案设计;W3:客户确认设计方案;W4:提出修改要求;W5:客户预付装修定金;W6:采购装饰材料;W7:设计施工方案;W8:装饰施工;W9:检验施工效果;W10:支付装饰尾款。Web服务组合模型的图形化表示如图2。
图2 案例服务组合模型
根据Web服务组合的合理性定义及合理性验证算法,对Web服务组合模型进行验证,其中有10个Web服务,12个库所,初始状态 Web服务集合W={W1,W2,W3,W4,W5,W6,W7,W8,W9,W10},库所向量 P=(1,0,0,0,0,0,0,0,0,0,0,0)。通过反复引入Web服务,具体验证步骤如下:
从结果W和P得出,此Web服务组合模型满足合理性定义,是正确的并可以实施。
运用Petri网的图形化表示方法对Web服务组合进行建模,根据合理性的定义设计模型的验证方法,并通过一个实例说明了建模和验证的步骤。在实际应用中,通过此建模和分析方法同样可以处理比文中描述实例复杂的业务流程。正确合理的Web服务组合模型可以借助基于Petri网的模型应用引擎来具体实施,如 OpenEbXML、Bigbross Bossa、wfmOpen等。
[1]岳昆,王晓玲,周傲英.Web服务核心支撑技术[J].软件学报,2004,15(3):428-441
[2]郝文,王道平.基于Petri网的工作流建模合理性验证算法[J].计算机工程与应用,2008,44(13):228-230
[3]李山曾.基于Petri网的工作流管理系统的设计与开发[J].软件工程师,2011(6):53-56
[4]Van der Aalst W M P.The application of Petri nets to WorkfloW Management[J].The Journal of Circuits,Systems,and Computers,1998,8(1):22-26
[5]袁崇义.Petri网原理[M].北京:电子工业出版社,1998
[6]罗海滨,范玉顺,吴澄.工作流技术综述[J].软件学报,2000,11(7):899-907
LI Ceng
Information Technology and Media Arts Department,Anhui ZHONG-AO Institute of Technology,Hefei Anhui,230041,China