服务参数配置表存储服务实例调用信息,保存服务实例调用所需要的所有参数、操作信息以及认证信息,所有的服务参数配置表均被存储在服务实例库中。服务参数配置表的结构为:PCoFL(ServiceInstanceID,ServiceType, ServiceConfi guration{},SecurityCertification,
IdentityCertification,QoS, ExpireTime)
ServiceInstanceID:服务实例ID,与流程调度控制表中服务实例ID 相同,用于映射流程调度控制表项与服务参数配置表项的对应关系;ServiceType:服务类型,区别不同架构服务标志位,服务架构包括:Web Service、EJB、CORBA、COM/DCOM 等;ServiceConfiguration{}:服务配置信息,采用嵌套表结构,包含服务实例详细配置信息。包括参数类型、名称,参数转换,参数传递约束,服务调用约束条件等;SecurityCertification:安全认证,用于调用服务实例时的安全认证;IdentityCertification:身份认证,用于访问服务实例服务器端的用户身份认证;QoS:服务质量,基于服务响应时间等属性的评价服务优劣的标准;ExpireTime:响应超时阈值,单次服务实例请求响应最大时间。
3.会话管理器
会话管理器是用于处理服务间的通信问题的。会话管理器分为两个部分,一个是加载器,解决服务调用时参数名称、参数类型等格式不匹配问题,将服务参数配置表中的参数信息转化成编译器能够识别的格式,发送给实例调用驱动器。
另一个是消息返回处理器,是会话管理器一个重要的组成部分。采用异步通信机制,能够保证服务相互通信时,时间上可以不相关,即前驱服务应用发送消息时不必关心其后继服务应用的是否在线。根据流程调度多任务表模式,采用发布/订阅(Publish/Subscribe)模型,即当引擎判断可以向某个服务提出请求后,异构服务调用代理向远程服务器发送请求,请求调用相应服务,但无需等待服务器处理请求,只需保证请求到达服务器端后,就可以处理其他任务了。而服务器端返回消息将被保存在一个消息队列中,队列根据服务属性的Post_condition[]项,将消息传给所有后继服务。
4.流程驱动机制
根据多任务表模式,采用任务推动式流程驱动机制,对流程调度库中的流程调度表项循环遍历,判断是否有就绪服务实例满足调用条件。流程的驱动不严格依赖流程的顺序,每个服务只要满足调用条件即可运行,而不必关心流程是否运行到此。当有消息从消息队列中发送到流程调度管理器中,便触发对流程调度管理器中表项的遍历,查看是否有前驱条件均满足并自身状态为就绪的服务表项。将满足条件的服务参数配置信息加载至服务加载器中,等候调用。其特点是当流程中某个服务请求失败,与此服务无关并具备调用条件的后续服务仍然可以运行,不受影响。
5.异构服务调用
根据实际要求提出一种可扩展架构,实现任务流程调度和服务调用功能相分离,该架构的特性是低耦合、可扩展、安全性。针对不同的服务特性开发不同的异构服务调用代理,完成一个可扩展的异构服务调度引擎。
服务调用工具是完成对每个异构服务实例的实时调用,关键在于不同架构服务调用方式的差异以及在调用过程当中参数类型转换,用户认证等。针对异构服务调用机制的特点,采用当前成熟的服务远程调用机制,根据服务参数配置表中配置参数和异构服务实例调用程序模板,智能化地生成异构服务远程调用程序java代码,最后利用标准代码编译器(JDK)将其编译生成一个实例调用实体。
四、结束语
本文从解析器、流程调度控制表、会话管理器、流程驱动机制等几个方面入手,介绍了异构服务调度引擎的实现。
(1)可以实现对异构服务流程的自动组装,屏蔽异构服务之间的差异;(2)采用任务推动式服务流程驱动机制实现了对服务组装流程流向控制;(3)采用多任务表模式,增加调用安全性;(4)实现架构良性,易于扩展。该设计完成了对异构服务调度引擎的基本实现,但如何提高网络服务访问质量、服务安全性、防窃取机制以及如何实现在分布环境下多个工作流引擎间的协同工作等将是以后研究的方向。
参考文献
[1] Richard Hull, Su Jian-wen. Tools for Composite Web Services:A Short Overview[J].SIGMOD Record
[2] D. Berardi, D. Calvanese, G. De Giacomo, R. Hull, and M. Mecella. Automatic composition of web services in Colombo. In Proc. of 13th Itallian Symp. on Advanced Database Systems, June 2005.