论文部分内容阅读
组合Web服务的跨管理域及长时段运行特性,对事务管理提出了新的挑战,仅依赖传统的事务处理机制ACID(原子性、一致性、隔离性、持久性)已不能解决组合服务的事务处理问题。服务组合流程往往由多个自治的服务按照一定的业务逻辑构成。因此,流程随时都可能执行失败。其中,服务的自动恢复和补偿是两个待解决的关键问题:恢复用来确保在某个活动失败发生时,业务流程可靠地、正确地继续执行,从而保证事务的一致性;补偿则用于服务执行失败时消除已成功完成活动所产生的影响,从而保证事务的原子性。
目前WS-BPEL(Web服务业务流程执行语言)已经成为服务编排普遍采用的标准,但其本身的流程恢复机制还难以简单地实现多种恢复活动。另外,其补偿处理机制要求在流程部署前必须将可能的补偿活动硬编码到流程中,不利于复杂多变的业务逻辑实现。
本文提出了一种基于代理(Agent)的服务组合恢复及补偿方法。代理根据流程的“服务契约”,能够实现流程的自动恢复以及动态补偿。代理主要完成两方面功能:一方面当流程执行失败时,代理的恢复模块接收并分析错误消息,恢复流程;另一方面在流程执行补偿时,则由代理的补偿模块根据引擎的运行时状态,提供补偿服务的端口地址以供引擎调用。使用这种代理方法,可以降低流程开发的复杂度,分离业务逻辑和补偿实现,并提高流程的自恢复能力。