Pattern 40 (Data-Based Routing)
Data-based routing provides the ability to alter the control-flow within a case based on the evaluation of data-based expressions. A data-based routing expression is associated with each outgoing arc of an OR-split or XOR-split. It can be composed of any data-values, expressions and functions available in the process environment providing it can be evaluated at the time the split construct with which it is associated completes. Depending on whether the construct is an XOR-split or OR-split, a mechanism is available to select one or several outgoing arcs to which the thread of control should be passed based on the evaluation of the expressions associated with the arcs.
If alert is red then execute the Inform Fire Crew task after the Handle Alert task otherwise run the Identify False Trigger task.
Data-based Routing is a variant of the Exclusive Choice and Multi-Choice patterns (WCP4, WCP6) in the control-flow perspective which requires that the selection mechanism for evaluation of the pattern be based on data-based expressions evaluated using data elements available within the context of the process instance (footnote 14).
This pattern aggregates two control-flow patterns:
- Exclusive Choice - where control flow is passed to precisely one of several subsequent tasks based on the evaluation of a data-based expression associated with each of the outgoing branches.
- Multi-Choice - where, depending on the outcome of a decision or the value of an expression based on data elements, control flow is passed to several subsequent task instances.
Figure 25 illustrates data-based routing expressions as conditions associated with the control-flow branches from one task to another. These expressions can utilize task-level data passed from the completing task as well as any other data elements that are accessible to the task. In the example shown, task C will be triggered once A completes (as the value of data element M is greater than 3.0), task D will not and task B may be triggered depending on the value of data element R that is passed from A.
Figure 25: Data-based routing
There is one context condition associated with this pattern: the mechanism that evaluates the Data-based Routing is able to access any required data elements when determining which of the outgoing branches the thread of control should be passed.
Both the Executive Choice and Multi-Choice variants of this construct are supported by WebSphere MQ, COSA, iPlanet, XPDL, BPEL, BPMN and UML 2.0 ADs. Staffware and FLOWer only support the Exclusive Choice pattern.
Full support for this pattern is demonstrated by any offering which provides a construct which satisfies the description when used in a context satisfying the context assumption. It rates as partial support if only one variant of the pattern is supported.
To achieve a + rating (direct support) or a +/- rating (partial support) the product should satisfy the corresponding evaluation criterion of the pattern. Otherwise a - rating (no support) is assigned.
|Staffware||9||+/-||Only exclusive choice supported|
|Websphere MQ Workflow||3.4||+||Directly supported via transition conditions and start conditions|
|FLOWer||3.0||+/-||Choices can depend on data but only exclusive choice supported|
|COSA||4.2||+||Supported by conditions on input and output arcs. Both exclusive choice and multi-choice supported|
|XPDL||1.0||+||Through transition conditions and transition restrictions. Both exclusive choice and multi-choice supported|
|BPEL4WS||1.1||+||Both exclusive choice and multi-choice supported|
|BPMN||1.0||+||Supported, as Condition Expressions are possible to specify for Sequence Flows|
|UML||2.0||+||Supported via the DecisionNode construct and guard conditions on ActivityEdges.|
|Oracle BPEL||10.1.2||+||Directly supported via links and <switch>|
|jBPM||3.1.4||+/-||jBPM supports the data-based routing pattern through the Decision Node construct. The support is rated as partial as there is no support for the multi-choice variant of the pattern.|
|OpenWFE||1.7.3||+/-||OpenWFE supports the data-based routing pattern, through the <case> and <if>-then constructs. The support is rated as partial as there is no full support for the multi-choice variant of the pattern.|
|Enhydra Shark||2||+||Enhydra Shark supports this pattern. Both exclusive and multi choice are supported.|
Summary of Evaluation