技术开发 频道

使用Spring AOP和AspectJ编排工作流

  6.结论

  该方法说明了怎样使用两层AOP来装配、编排并控制流程流(process flow)。第一层是用Spring AOP实现的,将流程装配为拦截过滤器链,其中每个过滤器都被注入了相应活动。第二层是用AspectJ实现的,提供流程的编排及流控制。通过拦截过滤器链来代理我们的流程,将使我们能够定义和维护流程的流向。而代理机制无需像BPM这样单独的引擎的,也提供了执行环境。我们通过使用已有技术(Spring AOP)提供的控制和执行机制做到了这一点。

  该方法是轻量级、嵌入式的。它使用已有Spring基础架构并建立在流程是已编排的活动集合的前提之上。每个活动是一个POJO而且完全不知道任何管理它的底层架构/控制器组件。这有几个优点。除了典型的松耦合架构优点外,随着像OSGi这样的技术不断的普及和采纳,保持活动和活动调用控制分离,把活动实现为一个OSGi服务也成为可能,这使得每个活动都成为独立的单元(部署、更新、卸载等等……)。易于测试是另一个优点。因为活动是POJO,它们可以在使用它们的应用之外作为POJO来测试。他们有定义良好的输入/输出契约(它需要的数据以及它预期产生的数据)。你可以单独测试每个活动。

  分离控制逻辑(拦截过滤器)和业务逻辑(POJO活动)将使你能够给流程事实规则接插更加成熟的规则门面(facade),同样,测试转移逻辑也应该不影响由下面活动实现的业务逻辑。

  活动是独立的基本组成部分,可以被在一些其它流程中重复使用。例如“贷记审核”活动可以很容易被重用,将其装配在某些其它需要贷记审核的流程上。

  7.参考资料及资源

  从这里可以下载本文的例程代码

  Spring Framework - http://www.springframework.org

  Spring AOP - http://static.springframework.org/spring/docs/2.5.x/reference/aop-api.html

  AspectJ - http://www.eclipse.org/aspectj/

  AOP联盟 - http://aopalliance.sourceforge.net/

  OSGi联盟 - http://www.osgi.org

  8.关于作者

  Oleg Zhurakousky是一个IT专家,目前是SpringSource的高级顾问,拥有14年以上跨多领域的软件工程经验,包括:软件架构及设计、咨询、业务分析和应用开发。九十年代初他开始其职业生涯,从事COBOL & CICS方面的工作。自1999年以来他已将精力集中在专业Java和Java EE开发上。2004年以后,Oleg着重使用了几个开源技术和平台(特别是Spring),同时在数个跨行业的项目中工作,比如:通信、银行、法律实施、美国国防部及其它行业。

0
相关文章