Pattern 7 (Composition)

FLASH animation of Composition pattern


This pattern describes features for constructing a consolidated process model from different disjoint modules. Modules may be organized vertically in a hierarchy (in this case Composition will flatten the hierarchy), or horizontally, or orthogonally (where each module represents a domain-specific concern). As such, this pattern may reverse the effects of Modularization.


To consolidate a family of interrelated modules into a single process model. The effect may be increased maintainability and understandability when there are too many or too small modules, e.g. due to subsequent modifications. It is useful when the process depth is too high or when a module contains only one or two nodes. The advantages are situation-dependent (e.g. flattening a model may be useful when presenting it to a business user).


Fig. 3b can be obtained by composing either the vertical modules in Fig. 5, or the horizontal modules "Home Loan" and "Sign Loan" in Fig. 6a.


Decreases modules and their fan-in, but increases model size. Reduces depth and modules overhead when ap- plied to a process hierarchy.


Extracting information from fewer modules or from a single model may be easier than dealing with many small modules [99].


The concept of this pattern has been defined as a refactoring mechanism in [117]. Here the authors recommend to inline process fragments when the induced navigation overhead of a modularization is not justified. A corresponding change pattern is specified in [118]. Composing vertical mod- ules is also defined as a transformation strategy to convert BPEL models to BPMN [78], and adapted to OWL-S in [42]. [63] proposes a method for composing state machines describing the lifecycle of independent objects involved in a business process, into a single UML AD capturing the overall process. This work assumes that the lifecycles to be composed are disjoint and consistent. The concept of composition is also widely supported by business process modeling tools. For instance, ARIS provides the model generator command to construct a flattened model from a subprocess hierarchy, or to compose sequential modules into one model. This concept is also described in detail in [29].