Pattern 16 (Environment to Task - Pull)
The ability of a task to request data elements from resources or services in the operational environment.
The Determine Cost task must request cattle price data from the Cattle Market System before it can proceed.
Tasks require the means to proactively seek the latest information from known data sources in the operating environment during their execution. This may involve accessing the data from a known repository or invoking an external service in order to gain access to the required data elements.
Similar to Data Interaction - Task to Environment - Push-Oriented pattern (WDP-15), distinct PAIS support this pattern in a variety of ways however these approaches divide into two categories:
- Explicit integration mechanisms - where the PAIS provides specific constructs for accessing data in the external environment.
- Implicit integration mechanisms - where access to external data occurs at the level of the programmatic implementations that make up tasks in the offering and is not directly supported by the PAIS. Interaction with external data sources typically utilises interprocess communication (IPC) facilities provided by the operating system facilities such as message queues or remote procedure calls, or enterprise application integration (EAI) mechanisms such as DCOM (footnote 8), CORBA (footnote 9) or JMS (footnote 10).
There are no specific context conditions associated with this pattern.
Staffware provides two distinct constructs that support this objective. Automatic Steps allow external systems to be called (e.g. databases or enterprise applications) and specific data items to be requested. Scripts allow external programs to be called either directly at system level or via system interfaces such as DDE (footnote 11) to access required data elements. FLOWer utilises Mapping Objects to extract data elements from external databases. COSA has a number of Tool Agent facilities for requesting data from external applications. Similarly, iPlanet provides a range of XML and HTTP-based integration functions that can be included in task implementations for requesting external data. BPMN supports the pattern via a pair of Message Flows, one from a Task to the boundary of a Pool representing the environment and the other in the reverse direction thus depicting a synchronous data request. XPDL and BPEL provide facilities for the synchronous request of data from other web services. In contrast, Websphere MQ does not provide any facilities for external integration and requires the underlying programs that implement workflow tasks to provide these capabilities where they are required.
One difficulty with this style of interaction is that it can block progress of the requesting case if the external application has a long delivery time for the required information or is temporarily unavailable.
The only potential solution to this problem is for the requesting case not to wait for the requested data (or continue execution after a nominated timeout) and to implement some form of asynchronous notification of the required information (possibly along the lines of Pattern 17). The disadvantage of this approach is that it complicates the overall interaction by requiring the external application to return the required information via an alternate path and necessitating the workflow to provide notification facilities.
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 mapping construct using In type|
|COSA||4.2||+||Supported through tool agents e.g. ODBC|
|XPDL||1.0||+||Data can be synchronously requested from other web services|
|BPEL4WS||1.1||+||The invoke construct also supports the request of data elements from other web services on a synchronous basis|
|BPMN||1.0||+||Captured through a message flow flowing from a Task to the boundary of a Pool representing the Environment, followed by a message flow from the Pool (representing the Environment) back to the task|
|Oracle BPEL||10.1.2||+||Direct support via <invoke> and <receive>|
|jBPM||3.1.4||+/-||External data interaction in jBPM is realized at task (and transition) level. Data Interaction -- Environment to Task -- Pull oriented is implemented through Nodes which can stop and await the receipt of the data they are pulling from the external source. 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 requests from the environment by defining separate participants for every external application (e.g. a web-service) from which data is required. These participants can then, be invoked (i.e. have work distributed to them) from anywhere in a process.|
|Enhydra Shark||2||+/-||Enhydra Shark supports this pattern partially. See the comment for pattern 15.|
Summary of Evaluation