Pattern 15 (Task to Environment - Push)
The ability of a task to initiate the passing of data elements to a resource or service in the operating environment.
The Calculate Mileage task passes the mileage data to the Corporate Logbook database for permanent recording.
The passing of data from a task to an external resource is most likely to be initiated by the task itself during its execution. Depending on the specific requirements of the data passing interaction, it may connect to an existing API or service interface in the operating environment or it may actually invoke the application or service to which it is forwarding the data.
Figure 14 illustrates the various data passing scenarios between tasks and the operating environment.
Figure 14: Data interaction between workflow tasks and the operating environment
There are a wide range of ways in which this pattern can be achieved, however these tend to divide into two categories:
- Explicit integration mechanisms - where the process environment provides specific constructs for passing data to the external environment.
- Implicit integration mechanisms - where the data passing occurs implicitly within the programmatic implementations that make up tasks in the process and is not directly supported by the process environment.
In both cases, the data passing activity is initiated by the task and occurs synchronously with task execution. Although, it is typically task-level data elements that are trafficked, any data items that are accessible to the task (i.e. parameters, scope block, case, folder and global data) may be transferred.
There are no specific context conditions associated with this pattern.
Staffware provides the Automatic Step construct for passing data elements from task instances to external programs. FLOWer enables data to be passed to external applications using the Operation Action construct and to external databases using Mapping Objects. COSA provides a broad number of Tool Agents which facilitate the passing of data to external applications and databases. Similarly iPlanet provides a range of XML and HTTP-based mechanisms that can be incorporated in task implementations for passing data to external applications. Websphere MQ is more limited in its support and delegates the passing of data elements to user-defined program implementations. BPMN supports the pattern via a Message Flow from a Task to the boundary of a Pool representing the environment. XPDL and BPEL are limited to passing data elements to web services.
One difficulty that can arise when sending data to an external application is knowing whether it was successfully delivered. This is particularly a problem when the external application does not provide immediate feedback on delivery status.
The most general solution to this problem is for a subsequent task in the case to request an update on the status of the delivery using a construct which conforms to the Data Interaction - Environment to Task - Pull Oriented pattern (WDP-16) and requires an answer to be provided by the external application. Alternatively, the external application can lodge a notification of the delivery using some form of Event-based Task Trigger (i.e pattern WDP 38) or by passing data back to the process (e.g. using the Data Interaction - Environment to Task - Push-Oriented pattern (WDP-17) ). This is analogous to the messaging notion of asynchronous callback.
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 data passing.
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||+||Directly supported via Automatic Steps and script functions|
|Websphere MQ Workflow||3.4||+/-||Indirectly achievable by including communication facilities in program implementations|
|FLOWer||3.0||+||Supported via the Action Operation and Mapping Object (using Out/Out&Insert type) constructs|
|COSA||4.2||+||Supported through tool agents e.g. ODBC|
|XPDL||1.0||+||Data elements can be passed to other web services|
|BPEL4WS||1.1||+||The invoke construct supports the passing of data elements to other web services on an asynchronous basis|
|BPMN||1.0||+||Captured through a message flow flowing from a Task to the boundry of a Pool representing the Environment|
|Oracle BPEL||10.1.2||+||Directly supported by means inputVariable of <invoke>|
|jBPM||3.1.4||+/-||External data interaction in jBPM is realized at task (and transition) level, rather than at process level. The Data Interaction -- Task to Environment - Push oriented is simplest realized through Actions (i.e. by coding an ActionHandler java class), which are defined on transitions or the entrance or the leave of nodes. Due to the java coding which is needed in order to get the data interaction working, the support for this pattern is considered as partial.|
|OpenWFE||1.7.3||+||OpenWFE supports data communication to the environment by defining separate participants for every external application (e.g. a web-service) to which data can be sent. These participants can then, be invoked (i.e. have work distributed to them) from anywhere in a process.|
Summary of Evaluation