Pattern 38 (Event-Based Task Trigger)
The ability for an external event to initiate a task and to pass data elements to it.
Initiate the Emergency Shutdown task immediately after the Power Alarm event occurs and pass the alarm code data element.
This pattern is an extension of the Transient Trigger and Persistent Trigger patterns (WCP-23, WCP-24) which the supports the initiation or resumption of a specific task instance based on an external event. The Event-based Task Trigger pattern extends these patterns by allowing one or more data elements to be passed to the task instance being initiated.
There are three distinct scenarios that may arise in the context of this pattern as illustrated in Figure 23. In all situations, the capability is available to pass data elements at the same time that the trigger is sent to the relevant task. The first alternative (illustrated by the start A() function) is that the task instance to be initiated is the first task in the process. This is equivalent in control-flow terms to starting a new case in which A is the first task instance.
Figure 23: Event-based task trigger
The second alternative (illustrated by the start B() function) is that the external event is triggering the resumption of a task instance that is in the middle of a process. The task instance has already had control-flow passed to it but its execution is suspended pending occurrence of the external event trigger. This situation is shown in Figure 23 above with task instance B already triggered as a result of task instance A completing but halted from further progress until the event from start B() occurs.
The third alternative is that the task instance is isolated from the main control-flow in the process and the only way in which it can be initiated is by receiving an external event stimulus. Figure 23 shows task instance C which can only be triggered when the event stimulus from start C() is received.
There are no specific context conditions associated with this pattern.
This facility generally takes the form of an external interface to the process environment that provides a means for applications to trigger the execution of a specific task instance. All three variants of this pattern are directly supported by Staffware, FLOWer, COSA, BPEL, BPMN and UML 2.0 ADs and in all cases, the passing of data elements as well as process triggering is supported. WebSphere MQ provides indirect support for all three variants but requires event handling to be explicitly coded into activity implementations.
An offering achieves full support if it has a construct that satisfies the description for the pattern. It achieves a partial support rating if programmatic extensions are required to facilitate the trigger handling.
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||+||Events are directly supported. New workflow cases can also be externally invoked|
|Websphere MQ Workflow||3.4||+/-||Activity triggering is supported through various interfaces. Denotation of events needs to be explicitly included in activity implementations using facilities such as the suspend() function|
|FLOWer||3.0||+||Milestones can wait for data element to have (specific) value set. External processes can directly update value of data elements via CHIP library and cause case execution to resume. CHIP library also provides facilities to create new cases and plans|
|COSA||4.2||+||Triggers provide direct support for all three Pattern variants|
|BPEL4WS||1.1||+||Direct event support via event handlers and the receive construct. New process instances can also be invoked externally|
|BPMN||1.0||+||Supported through the Message, Timer, Error and Cancel Event constructs.|
|UML||2.0||+||Supported by the AcceptEventAction construct.|
|Oracle BPEL||10.1.2||+||Directly supported via <receive> and event handlers|
|jBPM||3.1.4||-||jBPM does not support this pattern. The node State can only be used for receiving signals as triggers, without any data attached to the signals.|
|OpenWFE||1.7.3||-||Any support for this pattern was not observed in OpenWFE|
Summary of Evaluation