Pattern 3 (Scope Data)
Data elements can be defined which are accessible by a subset of the tasks in a case.
The initial tax estimate variable is only used within the Gather Return Data, Examine Similar Claims and Prepare Initial Return tasks in the Prepare Tax Return process.
Where several tasks within a process coordinate their actions around a common data elements or set of data elements, it is useful to be able to define data elements that are bound to that subset of tasks in the overall process.
One of the major justifications for scopes in processes is that they provide a means of binding data elements, error and compensation handlers to sets of related tasks within a case. This allows for more localized forms of recovery action to be undertaken in the event that errors or concurrency issues are detected. Figure 4 illustrates the declaration of data element X which is scoped to tasks A, B and C. It can be freely accessed by these tasks but is not available to tasks D and E.
Figure 4: Scope level data visibility
There are no specific context conditions associated with this pattern.
The definition of scope data elements requires the ability to define the portion of the process to which the data elements are bound. This is potentially difficult in PAIS that are based on a graphical process notation but less difficult for those that utilise a textual definition format such as XML.
A significant distinction between scopes and blocks in a process context is that scopes provide a grouping mechanism within the same address space (or context) as the surrounding case elements. They do not define a new address space and data passing to tasks within the scope does not rely on any specific data passing mechanisms other than normal task-to-task data transfer facilities.
BPEL is the only offering examined that fully supports the notion of scope data elements. It provides support for a scope construct which allows related tasks, variables and exception handlers to be logically grouped together. FLOWer supports "restricted data elements" which can have their values set by nominated tasks although they are more widely readable.
The potential exists for variables named within a scope to have the same name as a variable in the surrounding block in which the scope is defined.
The default handling for this BPEL is that the innermost context in which a variable is defined indicates which variable should be used in any given situation. Variables within a given scope must be unique.
An offering achieves full support if it satisfies the description for the pattern. It achieves a partial support rating if the accessibility of data elements cannot be restricted to the defined scope.
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.
|Websphere MQ Workflow||3.4||-||Not supported|
|FLOWer||3.0||+/-||Restricted data elements allow data update to be limited to defined activities|
|BPEL4WS||1.1||+||Directly supported by scope construct|
|BPMN||1.0||-||Not supported. The Group is a construct introduced purely for visualisation purposes and it does not provide any data handling for the objects it groups together.|
|Oracle BPEL||10.1.2||+||Directly supported by <scope>|
|jBPM||3.1.4||-||jBPM does not support scope data. The Task Node construct can accommodate several Tasks and can potentially be considered as a partial implementation of the scope concept. However, no data elements can be defined for a Task Node.|
|OpenWFE||1.7.3||+/-||OpenWFE supports scope data through the notion of filters. The use of filters for limiting access to fields rates as partial support as the filter overwrites the default privileges for the data element and as such restricts rather than extends the access rights associated with it. As the number of data elements associated with a process instance increases during its execution, the use of filters for restricting data flow becomes complex.|
|Enhydra Shark||2||-||Enhydra Shark does not support scope data.|
Summary of Evaluation