AO4BPEL is an aspect-oriented extension to WS-BPEL that allows for more modular and dynamically adaptable web service compositions. Aspect-Oriented Programming (AOP) is a paradigm that addresses the issue of modularizing crosscutting concerns in web services compositions such as authorization and authentication, business rules, and persistence. AOP introduces units of modularity called aspects to overcome the inherent problem of code scattering and tangling due to crosscutting concerns in complex systems. Aspects associate sets of join points – well-defined points in the process execution – with additional behaviour defined in an advice.

In AO4BPEL, each activity is a potential join point. A collection of related join points is identified by a pointcut – a query over joint points. That is, a pointcut specifies the crosscutting structure of a concern and advice associate behavioural effect to this structure. The pointcut language of AO4BPEL is XPath. That is, XPath expressions are used to select the activities where the advice code should be executed. Pointcuts can span several processes. An advice in AO4BPEL is a BPEL activity that specifies some crosscutting behavior that should execute at certain join points. Like AspectJ, AO4BPEL supports before, after and around advice. The activity of integrating aspects into base functionality is called weaving. A weaver is a tool that integrates a base program’s execution with aspects. In the case of AO4BPEL, the base program is the BPEL process and the weaver is an aspect-ware orchestration engine. AO4BPEL supports dynamic weaving, i.e., aspects can be deployed or un-deployed at process interpretation time.


AO4BPEL 2.0 is the re-implementation of AO4BPEL 1.0. Like its predecessor, AO4BPEL 2.0 enables modular and dynamically-adaptable Web service composition. It uses AOP techniques to overcome the shortcomings of workflow-oriented Web service composition languages with respect to modularization of crosscutting concerns and support for runtime change. New features include support for BPEL 2.0, Prolog as additional pointcut language and expressive scoping for AO4BPEL aspects.

AO4BPEL 2.0 has been implemented as an extension of the open-source BPEL engine Apache ODE. The AO4BPEL 2.0 code is open source and can be downloaded from Github.