Pattern 38 (Event-Based Task Trigger)

FLASH animation of Event-based Task Trigger (Persistent) pattern

FLASH animation of Event-based Task Trigger (Transient) pattern

Description

The ability for an external event to initiate a task and to pass data elements to it.

Example

Initiate the Emergency Shutdown task immediately after the Power Alarm event occurs and pass the alarm code data element.

Motivation

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.

Overview

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

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.

Context

There are no specific context conditions associated with this pattern.

Implementation

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.

Issues

None identified.

Solutions

N/A.

Evaluation Criteria

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.

Product Evaluation

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.

Product/Language

Version

Score

Motivation

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
XPDL 1.0 - Not mentioned
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
Enhydra Shark 2 - Enhydra Shark does not support event-based task triggers. The receipt of a mail is an example of such trigger. Due to the fact that the MailToolAgent is not available in the evaluated version of the tool (nor are any other but the JavaScriptToolAgent available), any support for this pattern is considered to be missing.

Summary of Evaluation

+ Rating

+/- Rating

  1. Direct workflow support for task instance initiation/suspension on an event trigger
  2. Provision of facilities for external processes to identify the correct task instance to signal
  1. Programmatic extensions