This article provides a practical example of light-weight workflow orchestration using Spring AOP and AspectJ.
Read: Workflow Orchestration Using Spring AOP and AspectJ
AOP has long been a science of discovering and modularizing cross-cutting concerns which are generally realized in the area of non-functional requirements such as error handling, logging, security, transaction. However, AOP is also an architectural paradigm which allows a radically different approach to addressing functional requirements. Using AOP, functional processes can be broken down into a set of individual activities which, in many cases, are shared across other processes. These activities are realized as a set of independent, stateless POJO's implemented as AOP advisors / interceptors. Each process instance, represented by a stateful token, passes through a dynamic chain of AOP interceptors and is advised by each one. Functional processes are then quickly and easily assembled from such modules using standard AOP configuration.
Some of the key benefits of this architectural approach include:
- Improved understanding of functional requirements
- Full process visibility and externalized control
- Much looser coupling between individual components which allows for quick substitution when requirements change and promotes reusability
- Improved testing, since each module has a well defined input/output contract and could be developed and tested individually
- Simple, scalable performance allowed by no central point of control (i.e., BPM engine)
- Management