1、Web服务动态组合方法研究与设计 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 12 个人收集整理 勿做商业用途 本文由198
2、9747贡献 pdf文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机查看。 第28卷 V01.28 第6期 NO.6 计算机工程与设计 Computer Engineering and Design 2007年3月 Mar.2007 Web服务动态组合方法研究与设计 夏海江。2, 邓水光2, 吴朝晖2 (1.温州大学计算机科学与工程学院,浙江温州325027; 2.浙江大学计算机学院中间件技术工程研究中心,浙江杭州310027) 摘要:目前基于工作流的
3、Web服务组合方法大多要求预先定义流程结构,不能适应现代企业业务流程复杂多变的需求。提 出了一种Web服务动态组合方法,将流程中动态部分用黑盒子流程进行封装,在执行时根据预定义规则和用户需求将黑盒 子流程自动组合展开为实际运行流程。对具体服务、抽象服务、黑盒子流程等概念和服务选取规则、服务组合规则进行了定 义,详细描述黑盒子流程展开算法,并设计了一个实现动态服务流程组合的框架结构. 关键词:服务组合;动态流程;业务流程管理;业务规则;工作流 中图法分类号:TP393.09 文献标识码:A 文章编号:1000—7024(2007)06.1334.04 Research and desi
4、gn of web services dynamic composition method XIA Hai-jian91”,DENG Shui-guan92,wU Zhao—hui2 325027,China; (1.College of Computer Science and Engineering,Wenzhou University,Wenzhou 2.Middleware Technology Research Center,College ofComputer Science,Zhejiang Univ
5、ersity,Hangzhou 3 1 0027,China) Abstract:To date,the workflow—based approach for web service composition,which requires a predefined process structure,is not adapted to the need ofcomplicated and inconstant business processes ofmodem enterprises.A method ofdynamic
6、web services compo— method encapsulates the sition is put forward.The dynamic parts of process into black-box which will be automatically expanded to the run actual process according to the predefined rules and the services user.S requirements at time.The
7、 concepts of concrete services,abstract ex— and black-box and are related rules such as services selection rules and services composition rules are def'med,the algorithms panding black—box described in detail,and the framework that implements the dynamic
8、service flow composition is designed. Key words:services composition;dynamic process;BPM;business rules;workflow 0引 言 方式过于刚性,应用范围窄。动态组合方式在设计以抽象服 务代替具体的服务,在执行时根据运行情况再绑定具体服务, 此方式适应了网上服务不断变化或事先无法确定绑定哪个具 体服务的需求。但现有的项目大都要求事先给出流程结构, 实际上许多业务流程不是一成不变的,多变性和不确定性是 现代企业业务流程的特点,流程业务规则逻辑复杂多变,用
9、户 需求各异,不同流程实例执行路径和所要绑定的服务可能是 不同的,在设计时很难给出完整的流程定义,即便能够给出完 整定义,其流程结构往往过于庞大,难以理解和更新,很难适 应业务规则多变的需求.因此Web服务组合需要在运行时确 定流程结构。 针对上述动态流程的需求,本文提出一种基于动态工作 流Web服务组合方法,在流程定义时给出流程框架,对其中可 以事先明确的流程进行定义,而对于难以事先明确流程的子 流程以黑盒方式封装,在运行时根据预定义规则和运行信息 将其展开为实际运行流程。本文设计一个实现动态服务流的 Web服务技术通过基于XML的开放性标准和协议,实现 了分布计算环境中各种异构平
10、台上的应用程序间的信息交互 和远程调用“121.当前越来越多的应用程序以Web服务的方式 出现在网络中,以便被发现和调用,达到业务增值的目的。Web 服务组合技术通过将独立于各个系统中单一功能的Web服务 松耦合集成,以实现具体的业务流程。Web服务组合作为下一 代Web应用的关键技术,引起了许多公司和研究机构的极 大兴趣。 Web服务组合与工作流有许多共同之处,可以以流程中 心将服务组合在一起,将服务组合视为一种特殊的工作流,称 之为服务流01。目前出现了许多基于工作流的Web服务组合 项目,如METEOR-S“】、SELF.SERVl51.Active Bpell6J、FLAME2008
11、1等,服务组合方式可分为静态组合和动态组合方式。静态组 合方式在流程执行前定义了流程结构并绑定具体服务,这种 收稿臼期:2006—02?1 8 E-mail:jsj xhj@wznc.zj.cn 基金项目:浙江省科技厅重大重点科技攻关基金项目Q004C11053)。 作者简介:夏海江(1968一),男,浙江温州人,硕士研究生,讲师,研究方向为Web服务组合、应用中间件技术; 研究方向为工作流、Web服务组合; 吴朝晖,教授,博士生导师,研究方向为网格与软件平台、分布式人工智能等. 邓水光,男,博士研究生 一1334- 万 方数据
12、 框架结构,并对组合规则和算法进行了详细抽述。 在定义黑盒子流程时,Aas、R、C为空.在流程运行时根 据用户需求在Aas中自动填入的实际运行抽象服务集,在R 填入用户的需求规则,并根据Aas在规则库中查询相应业务 规则加入R中. 2.2规则定义 定义 l场景 以一个旅游预定业务的场景来说明动态Web服务流程的 需求。一家旅游公司开展个性化旅游服务业务,业务流程如 图1所示。在取得客户基本信息、信用卡信息后,先调动相应 核查信用卡信息W曲服务,若有效再取得客户需求信息,通过 调用各相关公司或代理提供的Web服务完成相应项目的预 定,最后通过调用信用卡We
13、b服务完成收费.由于客户需要 预定项目各异(如是否需要预定机票、旅馆、旅游项目、餐饮、 车辆、保险等),同时预定项目选取和预定先后次序受政策、行 规、公司业务规则、相互间数据和控制依赖等因素制约(如参 加某项目必须买某项保险,在完成机票预定后才能预定旅馆 等),项目预定功能无法事先设定流程,不同客户需求产生的 流程结构可能是不同的,只有在流程运行根据客户需求才能 确定实际流程。 其中:卜规则类型,A-—规则涉及的服务集,r_规 则表达式. 2.2.1抽象服务选取规则ASSR ASSR规定了黑盒子流程在选取抽象服务必须满足约 束条件。 定义 选择规则CR:表达式A10爿20…
14、o爿行表示至少有一 规则以三元组表示R={T,A,r) 项必须被选中。 定义 选一项。 定义 依赖规则RR:表达式A1}彳2表示如果Al选中,A2 排斥规则ER:表达式AIo彳20…o爿船表示最多只能 必须被选中。 定义 单个规则UR:表达式OA表示必须表中A, 表达式:XA表示A不能选中。 2.2.2抽象服务组合规则ASCR ASCR规定了黑盒子流程展开为实际的流程时抽象服务 之间的结构关系. 定义顺序规则SR:表达式A1一爿2表示A2必须在A1之 后执行,但A2不一定与A1相连。 定义 相连规则AR:表达式41吲2表示A2在A1之后执
15、 数据依赖规则DR:表达式A1 ZA2表示A2的输入 行并且必须相连。 定义 依赖A1输出。A1&A2规则隐含有A1一爿2规则。 2.2.3具体服务选取规则CSSR 图1旅游项目预定业务流程 在流程运行时抽象服务要绑定为具体服务才能执行,一 个抽象服务往往有多个接口功能相同的具体相匹配,CSBR是 选取绑定服务时必须遵守的规则。 定义优先规则PR:表达式4三日其中A为抽象服务,a为 具体服务,表示抽象服务A绑定具体服务时优先考虑a。 定义关联规则CoR:表达式A-a;B=_b其中A,B为抽象 Ca={N,P,Op,F,i,O,C,E} 服务,a,b为具体服务,表示若A选
16、取a,则B必须选取b。 Qos计算公式:目前我们只考虑了费用和时间两项指标, 由于两者度量单位不同,用文献[6]提出的公式来无量纲化. 设候选具体服务集为{a1,a2,…,a11),其费用和时间值分别 为{cl,c2,…,cn}和{tl,t2,…,协},MaxC,MinC为{cl,c2,…,ca)最大 值和最小值. 2基本定义 2.1活动节点定义 定义具体服务描述了业务伙伴提供的web服务接口, 以八元组表示 其中:N——服务名称,P——服务提供者信息,Op—-操作名 称,F——操作的功能描述,l-—输入信息,O——输出信息, C——初始条件,E_执行结
17、果。 定义抽象服务提供了“占位”功能,它描述了所要调用 服务应具备的功能、输入输出信息,以四元组表示 Aa={N,F,I,0} 其中:N——服务名称,F-—功能描述,I——输入信息,◇一 输出信息。 定义 组表示 Ba={N,Aaa,Aas,R,C) 黑盒子流程封装事先无法明确的子流程,以五元 Rc吒辔g黑? ‘气石面j函面 Rci=l j 当MaxC*Mi聆CMaxC--t:Mi 聆 当MaxC=MinC 同理可得R6,则具体服务ai的qos值为Qos(aJ)=p+Rci+(1一 p)*Rti(0≤p≤1),P值
18、为权重系数,由用户需求而定。 定义局部Qos规则LR:表达式Lqos(A)--n(其中A为抽 象服务,0≤玎≤1)来表示权重系数,在选取抽象服务A时,按权 重值n计算具体服务Qos。 定义 全局Qos规则GR:表达式n(O≤”≤1)来表示权重 一1335— 其中:N——黑盒子流程名称;A鼢一子流程中所有候选抽象 服务集;Aas—-实际流程所选的抽象服务集,它是Aaa的子 集;R--规则集;C——选取具体服务集。 万 方数据 系数,在绑定服务时,若无LR,按n作为默认值权重值n计算 具体服务Qos。 定义 费用规则CostR:表达式C似)≤玎其中A为抽
19、象服务, { 初始化:RA=Null,p=0.5 Fori=l to IRl{ Ap∈Aas 表示在绑定抽象服务A时,所选具体服务的费用不能大于n。 If@.T刽PR”and r.r为Apia and Cp=a,addA。into RA and aE Sp) 3黑盒子流程展开算法 在服务流程运行时,先将黑盒子流程根据抽象服务组合 算法展开为抽象子流程,再根据具体服务选取算法选取具体 服务组合运行子流程。 定义子流图G={V,E}:表示子流图G是~有向无环图。 其中V是子流图中的节点集合
20、包括一个开始节点Start、一个 结束节点End以及抽象活动节点;E是有向边集合。 定义 入度函数In(v):其中v是予流图G中节点v,表示 iffri.T=”GR”and r.r为n)p=val(n) } For i=l SI-S; to lAasl{ If(A。gRA){ Fori=l to IRI{ If(ri.T划LR”and r.r为{Lqos(A.)---n)p--val(n)) iffri.T.ffLR”and r.r为C(A.)≤m) select S”which c
21、ost 以v为头的有向边数目:出度函数Out(v):表示以v为尾的有 向边数目。连通函数Reach(vl,v2):表示若从结点v1出发能够 到达结点v2,则Reach(vI,v2)为真,否则为假. 抽象服务组合算法:组合时若两节点间无组合规则约束, 则将它们并发处理,提高流程执行效率。 ALGORITHM:ABSTRACT—SERVICES-COMPOSITION INPUT:Ba={N,Aaa,Aas,RC} 其中:Aas={A1,A2,…,Am)为用选定的抽象服务集,R={r1,r2,…,rm} 为组合规则集。 OUTPUT:G={V,E}或Null { 检查Aas是否符合ASS
22、R规则,若否返回null; 初始化:V={Start,End) Fori=l to is less than m from Si ifnot exist retun select x null;S'=S”;} with max.qos.val according to parameter P from S’ ci=谩}} Fori=l t01RI{ and Ap∈Aas If(ri.T_”CoR”and r.r为A。=a=Aqib Aa
23、s and and~∈ b∈S。and Cp=a)cq=b} Return Ba; ) 4框架结构 为了实现服务流程的动态组合,我们设计了一个实现动 态服务流程的框架结构(如图2所示)。其中流程库存储服务 流程定义文件;规则库存储业务规则,我们把相关领域规则和 and Aj,Ak∈Aas) lRI{ If@.T型SR”and r.r为Aj—Ak Dmwline(Aj,Ak),and 业务规则统称为业务规则;服务库存储业务伙伴注册的Web V add them into E,a
24、dd Aj,Ak to 服务接口描述文件. 则库) 俎&务鹿 If(r1.T=”AR”and r.r为A矿峨q Drawline(Ap,Aq),and Fori=l to and Ap,Aq∈Aas) add them into E,add Ap,Aq to V lRI{ An and Am,An∈Aas If(ri.T=”AR”and r.r为Am—D (Am.An)) Drawline(Am,An),and Fori_1 to and!Reach
25、 add them into E,add Am,An to V 子流程 组合器 add 回 lAas[{ 膛_一噩螽 l器 具体 务 务 If(Ai硭V)Drawline(Start,Ai),Drawline(Ai,End)and them into E,add Ai into V Fori=l to lvl{ add them into E add them into If(in(Ai)=O)drawline(Start,Ai)and If(Out(Ai)=0)draw
26、line(Ai,End)and RetumG) E) 具√1 觚上勰斯弹 K 垆仃一 一用需 一户求 服bI 具体服务选取算法:在将抽象服务绑定为具体服务时,若 无优先规则、关联规则约束,则依照Qos最大值选取。 ALGORITHM:CONCRETE SERVICES SELECTION 图2动态服务流程框架结构 流程设计者通过图形化流程定义工具,参照从规则库和 服务库获取规则和具体服务接口描述进行设计。在定义活动 节点时,如果活动所需调用服务是事先可以明确的固定服务, 则直接设置为具体服务;若
27、活动所需调用服务需动态选择,则 定义为抽象服务,对于事先无法明确流程的子流程,则封装为 黑盒子流程。 INPUT:Ba={N,Aaa,Aas,R,C) 其中:Aas={A。,A2,…,Am)为用选定的抽象服务集;R=札r2,…,rm) 为组合规则集;C={c。,c:,…,C。)为选定具体服务集,ci初始为Null。 s={s。,s:,…,S。)其中S;为A对应的候选具体服务集 OUTPUT:Ba或Null 一1336一 万 方数据 流程执行引擎是系统核心部件,负责动态流程的执行. 在执行时若活动节点为黑盒子流程,由子流程组合器根据组 合规则
28、和流程执行信息组合为执行子流程,并将展开的子流 程返回执行引擎继续执行;若活动节点为抽象服务,由服务 匹配器根据具体服务选取规则从服务库中选取具体服务,并 将取得的具体服务返回执行引擎继续执行;若活动节点为具 体服务,执行引擎通过调用业务伙伴的具体服务完成业务 流程,若调用具体服务时发生异常,交由服务匹配器重新选 取服务。 圆 吲 Michael Stal.Web services:Beyond component—based compu— ting[J].Communications Wetzel ofthe ACM,2002,45(1
29、 0):71—76. Ingrid,Klischewski Ralf.Serviceflow beyond workflow concepts and architectures for supporting inter-organizational service processes[C].Toronto,Canada:Procceeding of 14th In- ternational Conference on Advanced Information Systems En— gineering,2002.500
30、-515. 川 Sivashanmugam K,Miller J,Sheth A,et a1.Framework for seman- tic web process composition,se—mantic web role in enterprise application integration and services and their 5结束语 本文提出一种基于工作流Web服务动态组合方法,用黑 盒子流程封装难以事先定义流程结构的部分,根据用户需求 和预定义规则扩展为实际流程。 当业务规则发生变化时,只需更改相应规则,适应了现代
31、业务流程复杂多变的需求.采用何种策略解决规则冲突是我 们下一步的研究方向。 吲 吲 E-commerce[J].In- temational Joumal ofElectronic Commerce,2004,9(2):71-l 06. Quan serV a z Sheng,Boualem platform Benatallah,Marion Dumas,et a1.Self- a for rapid composition of webservices in peer- to—peer
32、 environment[C].Hong Kong,China:Proceedings of the 28th VLDB Conference,2002.105 1—1054. ActiveBPEL,LLC.Active BPEL engine http://www.activebpel.org. architecture[EB/OL]. 参考文献: [1】 Aphrodite Tsalgatidou,Thomi Pilioura.An overview ofstandards and related technology in
33、web 吲 Ⅲ VEGA Center.Project of FRAME2008【EB/OL].http://vega. ict.ac.cn/en/flame.jsp?id=dir36. Zeng L Z,Benatallah B A,Ngu H H,et a1.QoS-aware middleware on services[J].Distributed and Paral— for web services composition[J].IEEE Transactions
34、 Software lel Databases.2002.12:135.162. Engineering,2004,30(5):3 1 1-327. (上接第1263页) 参考文献: ∞ [I】 周晓锋,刘馨月,张靖波,等.基于可重用组件技术的软件开发方 法[J】.信息技术,2005,(11):139.141. oK一\OKi \(一/旧 Oracleuset DBUtil“yCOmponent [2】Martin Fowler,侯捷,熊节.Refactoring:Improving
35、 existing the design of code重构——改善既有代码的设计【M].北京:中国电 力出版社,2003.53-74. [3】 肖统民.具有数据库更新通知功能的数据库中间件[J].现代计 算机,2005,(1 1):28.30. 【4】 王怀民,王玉峰,丁博.分布对象中间件技术发展-—以COR— BA标准为背景[J】.中国计算机学会通讯,2005,(4):29-40. [5]Abernethy R.COM/DCOM unleashed[M].Hampshire:Macmil— lan Publisher,1 999.
36、图5应对变化,重构的中间件结构 6结束语 通观上述的设计过程,我们不难发现“需求的变化是随时 都可能发生的”。尽管这里的讨论有示意性的味道,但是“应 对变化"是一个不可争议的事实。 软件开发需要优秀的前期设计,因为这是构筑软件系统 的根基,也是未来适应变化的前提;软件开发同样需要不断的 重构,因为只有这样才可以找到改变的平衡点。于是,人们会 发现所谓设计不再是一切动作的前提,而是整个开发过程中 逐渐浮现出来的。1。 当开发者拥有了这两个利器,并且良好的协调使用它们 的时候,设计便会贯穿开发的始终,并且很有可能得到完美 的实现。 [6] Couch J.J
37、ava 2 enterprise edition bible[M].New York:John Wi- ley and Sons,2002. [7]Tom Pender,耿国桐,史立奇,等.UML宝典[M】.北京:电子工业 出版社,2004.292—308. 【8】 Erich Gamma,Richard Helm,Ralph Johnson,等.设计模式[M].北 京:机械工业出版社,2004. 【9] 刘寅航.系统分析之路[M】.北京:电子工业出版社,2005. [10]梅宏.软件中间件技术现状及发展【R】.北京:清华大学出版社, 2005.45—61. [11】齐德昱,胡镜林,张鹏.多数据库中间件的模型研究fJ].计算机 工程与设计,2005,26(10):2602-2605. 【12】林舒萍,罗键.设计模式的应用研究[J】.计算机工程与设计, 2005,26(1 1):2980.2982. 一1337一 万 方数据






