摘要:
1.本文的创新点
本文提出了一种基于状态切面的组合服务运行时监控方法,主要包括以下两个创新点:
1)本文提出了一种基于状态切面的模板,其中历史切入点(History-based pointcut)包含pattern和range两部分,限定在组合服务执行的某个range内指定的pattern不能违背;通知(Advice)表达当指定的行为约束违背时,相应的故障处理措施。
2)本文提出了一种状态切面实现机制。通过对组合服务执行引擎进行面向切面的扩展并使用有穷状态机跟踪记录执行历史,检查行为约束是否违背并实施相应的故障处理动作,以提高组合服务执行的可靠性。同时使用优化机制降低监控对组合服务执行性能的影响。
2.实现方法
上述技术的主要实现方法如下:
- 一种针对WS-BPEL的状态切面扩展
WS-BPEL是OASIS标准化组织所批准的一种组合服务编制语言,定义了参与服务之间的控制流和数据流,但不足在于不支持关注点分离,缺乏对流程运行时监控的模块化关注机制,增加了流程开发的复杂度,并且导致流程难以维护。
本文对现有基于XPath的切入点进行扩展,定义了基于历史的切入点以声明式的指定各种监控需求。基于历史的切入点语言包括捕获事件之间时序关系的pattern操作符和表达监控范围的range操作符。目前pattern主要由表达事件之间抽象时序关系的qualitative pattern 和与具体时间相关的quantitative pattern构成,range包括before、after、global和around四种。同时为了严格刻画切入点语义并在运行时自动实施监控,论文给出了面向切面编程所支持的基于过滤语义(Filtering-based)的自动机描述。
- 状态切面的实现机制
为了实现有状态切面,在运行时对WS-BPEL流程进行监控和管理,本文提出了基于面向切面编程技术的pattern监控和advice实施机制。主要包含状态切面开发部署工具和运行时的切面扩展模块两部分。运行时切面扩展模块允许监控流程执行期间产生的事件序列,以及通知代码的动态编织。该扩展本身使用AspectJ实现为一个切面,并与WS-BPEL引擎代码进行编织。为了检查指定的行为约束是否违背,使用树结构表达自动机之间的嵌套层次关系,同时为了降低对流程执行性能的影响,根据不同range操作符的特征进行了优化,减少与指定行为约束无关的事件序列的产生。
3.结论及未来待解决的问题
论文提出一种面向切面的框架以支持对组合服务的运行时监控。通过使用状态切面模板表达复杂的监控需求,监控逻辑与业务逻辑分离,降低了业务流程开发的复杂度。当指定的行为约束违背时,可及时进行故障处理,提高了组合服务执行的可靠性。
目前监控需求由组合服务开发者使用状态切面模板进行人工指定,本文后续研究的一个重要问题是如何从更加高层的规范如:WS-Policy,WS-Agreement自动生成状态切面模板,并进行部署实施。此外,在后续的研究工作中,我们将进一步考虑支持更加复杂的故障处理措施,以提高组合服务执行的可靠性。
4.实用价值或应用前景
本文所提出的面向切面的监控框架已在自主开发的业务流程执行引擎ONCE-BPEL上进行了原型实现,并在国家科技支撑计划“现代服务业共性服务集成化技术研究”中进行了示范应用,表明该框架可对组合服务进行运行时监控并保障其执行的可靠性。