Pattern 1 (Sequence)
A task in a process in enabled after the completion of a preceding task in the same process.
Sequential routing, serial routing.
The verify-account task executes after the credit card details have been captured.
The codacil-signature task follows the contract-signature task.
A receipt is printed after the train ticket is issued.
The Sequence pattern serves as the fundamental building block for processes. It is used to construct a series of consecutive tasks which execute in turn one after the other. Two tasks form part of a Sequence if there is a control-flow edge from one of them to the next which has no guards or conditions associated with it.
Figure 1 illustrates the Sequence pattern using CP-nets.
Figure 1: Sequence pattern
There is one context condition associated with this pattern: an instance of the Sequence pattern cannot be started again until it has completed execution of the preceding thread of control (i.e. all places such as p1 in the Sequence must be safe).
The Sequence pattern is widely supported and all of the offerings examined directly implement it.
Although all of the offerings examined implement the Sequence pattern, there are however, subtle variations in the manner in which it is supported. In the main, these differences centre on how individual offerings deal with concurrency within a given process instance and also between distinct process instances. In essence these variations are characterised by whether the offering implements a safe process model or not. In CP-net terms, this corresponds to whether each of the places in the process model such as that in Figure 1 are 1-bounded (i.e. can only contain at most one token for a case) or not.
This issue is handled in a variety of differing ways. BPMN, XPDL and UML 2.0 Activity Diagrams assume the use of a "token-based" approach to managing process instances and distinguishing between them, although no details are given as to how this actually occurs. Further, although individual tokens are assumed to be conserved during execution of a process instance, it is possible for a task, split or join construct to actually add or remove tokens during execution beyond what would reasonably be expected. Staffware simply ignores the issue and where a step receives two threads (or more) of execution at the same time, they are simply coalesced into a single firing of the step (thus resulting in race conditions). COSA adopts a prevention strategy, both by implementing a safe process model and also by disabling the task(s) preceding a currently enabled task and not allowing the preceding task(s) to fire until the subsequent task has completed.
Full support for this pattern is demonstrated by any offering which supports an explicit representation of dependency (e.g. directed arc) between two tasks which specifies the execution sequence.
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||10||+||Directly supported by arcs (drawn as lines from left to right) connecting steps.|
|Websphere MQ||3.4||+||Directly supported by arcs connecting process, program and block activities.|
|FLOWer||3.51||+||Supported through arcs connecting plan elements.|
|COSA||5.1||+||Directly supported by arcs connecting activities.|
|iPlanet||3.0||+||Directly supported by the use of activity routers.|
|SAP Workflow||4.6c||+||Directly supported. In SAP one can connect activities using arcs, thus creating a sequence.|
|FileNet||3.5||+||Directly supported by means of steps connected with unconditional routes.|
|BPEL||1.1||+||Supported by <sequence> or links within the <flow> construct.|
|Websphere Integration Developer||6.0||+||Supported by the <sequence> activity.|
|Oracle BPEL||10.1.2||+||Supported by the <sequence> construct or links within the <flow> construct.|
|BPMN||1.0||+||Directly supported by linking activities with sequence flow arcs.|
|XPDL||2.0||+||Supported by the transition construct.|
|UML ADs||2.0||+||Directly supported by directed arcs between nodes.|
|EPC (implemented by ARIS toolset 6.2)||+||Directly supported, i.e., events can be used to connect functions in a sequence.|
|jBPM||3.1.4||+||jBPM uses a transition between two task nodes for capturing a sequence|
|OpenWFE||1.7.3||+||OpenWFE implements the construct <sequence>|
|Enhydra Shark||2||+||Enhydra Shark implements sequences through transitions between activities. (Shark, Wil)|