【IT168技术文档】1. 简介
如果你需要实现一个流式的流程,特别是嵌入的,并且你想让其易于配置、扩展、管理和维护。你是否需要一个功能齐备的BPM引擎呢:引擎都有自己的抽象负载,它对于你正在寻找的简单流程编排来说似乎过于笨重了;或者有什么轻量级的替代方案可以使用,让我们不必采用一个功能齐备的BPM引擎?本文说明了如何使用面向方面编程(AOP)技术来构建并编排高可配置、可扩展的轻量级嵌入式流程流(process flow)。目前例子是基于Spring AOP和Aspect J的,其他AOP技术也可实现同样的结果。
2. 问题
在我们继续深入讨论之前,首先我们需要更好地理解实际的问题,然后试着把我们对问题的理解与一套可用模式、工具和/或技术进行匹配,看看是否能找到一个合适的。我们的问题就是一个流程(process)本身,那么让我们好好理解一下它吧。什么是流程?流程是经过协调的活动的集合,这些活动致使一组目标得到实现。活动(activity)是指令执行的一个单元,它是一个流程的基本组成部分。每个活动操作一部分共享数据(上下文),以实现流程整体目标的一部分。已被实现的流程目标的各部分代表既成的事实(facts),这些事实被用来协调剩余活动的执行。这实质上把流程重新定义为一个在事实集合上进行操作的规则模式,用来协调定义该流程的那些活动的执行。为了让流程协调活动执行,它必须知道如下属性:
·活动——定义流程的活动
·共享数据/上下文——定义共享数据的机制和活动所完成的事实
·转移规则——基于已注册的事实,定义前一个活动结束之后跟着是哪个活
·执行决策——定义执行转移规则的机制
·初始化数据/上下文(可选)——由该流程操作的共享数据的初始化状态
下图显示了流程的高层结构:
我们现在可以用如下需求集合来形式化一个流程:
·定义把流程装配为一个活动集合的机制
·定义各个活动
·定义共享数据的占位符
·定义在流程范围内的这些活动协调执行的机制
·定义转移规则和执行决策机制,根据由活动注册的事实执行转移规则