基于工作流的Web服务框架的研究
2010-01-29高觐悦沈学玮张功萱
高觐悦,沈学玮,张功萱
(1.苏州市职业大学 计算机工程系,江苏 苏州 215104;2.昆山市科学技术协会,江苏 昆山 215300;3.南京理工大学 计算机科学与技术学院,江苏 南京 210094)
近年来,Web服务技术研究领域存在着两种发展趋势:一种是以学术界为主的研究组织,致力于实现Web服务的语义化及语义Web服务这一概念的提出;另一种是以企业界为主的研究组织,着力利用工作流技术提高Web服务技术的实用性以及可集成性.
这两种基于工作流的Web服务技术虽然在各自方向上独立发展,却不能互相补充和融合.本文利用现有的工具和资源提出了一种新的基于工作流/语义网的Web服务框架SABWS.
1 结合工作流/语义的Web服务应用的结构
结合BPEL4WS工作流和语义技术,提出一种基于工作流和语义的Web服务应用框架,将Web服务和流程的结构化描述同语义描述分离,结构如图1所示.共分为三层结构:Web服务提供层提供了各种服务的定义和调用接口;BPEL4WS(Semantic Auxiliary BPEL Web Service Framework)层则负责了调用Web服务进行结构化描述和运行[3];而SABWS本体层则在BPEL4WS层基础上提供语义描述,并与BPEL4WS层互动.通过SABWS本体,就可以应用当前语义网和语义Web服务领域的相关知识,为BPEL4WS层提供语义化的辅助.
图1 基于工作流和语义的Web服务框架的结构
2 SABWS(语义辅助的工作流Web服务)框架
在基于工作流和语义的Web服务框架的结构基础上,进一步细化提出和设计语义辅助的BPEL工作流Web服务框架SABWS,相对于现有的各种系统框架,SABWS框架具备以下优越性:(1) 用SABWS实现Web服务发现自动化.SABWS的Service Profile使用本体来描述Web服务的性能及其执行效果.在进行Web服务发布或进行语义化扩展时,已经将Service Profile和UDDI中的Web服务描述绑定在一起.在对服务进行匹配时就需要一个基于OWL逻辑推理的Web服务匹配引擎.当Web服务请求者向UDDI发出请求,则UDDI将该请求转换成Service Profile形式,再将其交给匹配引擎.然后匹配引擎利用OWL推理对功能描述进行基于OWL Ontology库和Web服务描述库的灵活匹配,得到一些满足条件的Web服务.当然,这种匹配不是简单的基于关键字方式,而是基于本体关系和语义约束的模糊匹配.(2) 用SABWS实现Web服务执行自动化.SABWS框架由于实现了服务的优化同执行的分离,使得服务的执行在BPEL层即可由BPEL引擎完成,对语义层这一过程是完全透明的.所以在SABWS框架中,服务的执行是完全自动化的.(3) 用SABWS实现Web服务组合优化的自动化.SABWS中对流程的描述分为两部分:底层的BPEL4WS文件描述了流程的结构化流程;而其上语义层的本体文件则抽象并描述了所需要的作为其合作者的成员Web服务的语义信息,包括成员Web服务、前置条件和后置条件的语义化描述.这样,语义层通过与匹配引擎,就可以在优化时实现作为合作者的组成Web服务的动态替换和组合.
3 实例说明
以某单位的实际Web应用项目“××人事人才网”为例.基于此网站的改动异常频繁的特点,非常适合使用SABWS框架.由于这个项目最初是基于J2EE的普通Web应用,利用SABWS框架可调配性的特点,向其逐步加入Web服务元素实现BPEL模块;再使用SABWS应用程序编程接口实现语义模块,对Web服务及流程进行优化,从而利用SABWS框架的特点将对网站正常运行的影响降到了最低.同时,利用Web服务可分布式部署的特性,可以有效地提高网站的性能;而利用Web服务松耦合的特点,可以最大程度地利用现有功能模块实现流程的重组;通过SABWS本体提供的语义信息以及SABWS API提供的推理等语义功能方法和接口,可以实现半自动的流程优化.
3.1 组合J2EE架构
Web服务器采用Tomcat 5.0.28,数据库采用Microsoft 的SQL Server,主流Struts、Hibernate、Spring.三种架构都具有松耦合的特点,将三种架构中的一部分分别剥离出来,组成了一个新的组合架构,其结构图如图2所示.架构的表示层运用Struts技术,业务层主要运用Spring技术,而持久层则采用Hibernate.总之,SABWS框架中所采用的自行开发的Struts+Hibernate+Spring组合J2EE架构具有比较全面的功能和优良的性能.
图2 组台J2EE框架结构图
3.2 实现J2EE系统与BPEL流程的结合
3.2.1 应用Oracle BPEL API进行整合
在原有J2EE架构的控制器上,利用Oracle BPEL流程管理器公布的Java应用程序编程接口调用的方法进行Web服务的整合.首先,J2EE框架的配置文件struts-config.xml中,将原有的业务流程截取并调用Web服务完成[4]:
其次,实现调用Web服务的程序:使用定位器(Locator)类连接到Oracle BPEL流程管理器;通过Java传递XML消息;通过Java API实现双向操作的调用.
3.2.2 应用标准Web服务/SOAP接口和AXIS实现整合
选用Axis作为构建SOAP客户端的工具.在Axis的org.apache.axis.client包中,有SOAP客户端的多个实现.其中org.apache.axis.client.Call是Call接口的Axis的JAXRPC动态调用接口实现类.这个类的用途是Web服务的实际调用.Service是用作一些类的实例对象的工厂类.这些类包括:目标服务端点的动态代理和针对服务端点的远程操作的动态调用的javax.xml.rpc.Call类的实例.
同使用Oracle BPEL API类似,在进行整合时,通过修改配置文件,将操作导向至所定义的SOAP客户端,即可实现向J2EE中加入Web服务元素.
3.3 职位搜索实例
在系统中应用到SABWS框架Web服务实现的一个职位搜索的例子.对于用户来说,并不能从界面上看出任何区别,内部的实现是透明的.但通过对原有系统使用前面介绍的方法编写Web服务客户端,并按如下进行重新配置,即可改为使用BPEL工作流Web服务实现.
当BPEL系统中运行时,即可在Oracle BPEL控制台中看到相应的运行信息,如当前运行服务实例数,最小执行时间,最大执行时间,以及平均执行时间等.在服务执行完毕之后,可以使用SABWS API在控制器中,将执行平均时间写入到ServiceProfile信息中.
4 结 论
结合BPEL4WS工作流技术和语义网技术的SABWS框架,实现了Web服务层、BPEL工作流层和语义层三层结构,实现了服务优化同执行的分离等优点,在服务的匹配、组合和执行等方面都具有广阔的发展前景.
[1] ANDREWS T,CURBERA F,DHOLAKIA H,et al.Business process execution language for web service sversion1.1[EB/ OL].(2005-05-01)[2008-01-07].http://www.128.ibm.com/developerworks/library/specification/wsbpel/.
[2] MARTIN D,BURSTEIN M,HOBBS J,et al.OWL-S: Semantic mark-up for web services[EB/OL].(2004-11-22)[2008-08-23].http://www.w3.org/Submission/OWL-S/.
[3] SISI L,KHALAF R,CURBERA,F.From DAML-S processes to BPEL4WS research issues on data engineering[J].Web Services for E-Commerce and E-Government Applications,2004,3(28):77-84.
[4] CRAIG W,RYAN B.Spring in action [M].U.K:Manning Publications,2005.