Pattern 32 (Data Transformation - Input)
FLASH animation of Data Transformation - Input and Output patterns
Description
The ability to apply a transformation function to a data element prior to it being passed to a process component. The transformation function has access to the same data elements as the receiving process component.
Example
Prior to passing the transform voltage data element to the Project_demand() function, convert it to standard ISO measures.
Motivation
The ability to specify transformation functions provides a means of handling potential mismatches between data elements and formal parameters to process components in a declarative manner. These functions could be internal to the process or could be externally facilitated.
Overview
In the example shown in Figure 20, the prepare() function intermediates the passing of the data element G between task instances A and B. At the point at which control is passed to B, the results of performing the prepare() transformation function on data element G are made available to the input parameter S.
Figure 20: Data transformation - input
Context
There are no specific context conditions associated with this pattern.
Implementation
Staffware provides the ability for a task to call a function capable of manipulating the data elements passed to the task prior to its commencement through the use of the form initial facility. The function called maybe based on the Staffware script language or external 3GL capabilities and hence can support relatively complex transformation functionality. UML 2.0 ADs support data transformation via the ObjectFlow transformation behaviour. FLOWer provides limited facilities for the transformation of input data elements through the use of mappings and derived elements. Similarly BPMN provide support for the pattern using PropertyMaps but only where the data passing is to an Independent Sub-Process.
Issues
None observed.
Solutions
N/A.
Evaluation Criteria
An offering achieves full support if it has a construct that satisfies the description of the pattern. It rates as partial support if there are any limitations on the type of data elements that can be passed to transformation functions or the range of process components that can receive values from input transformation functions.
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 | +/- | Supported via form initial function for tasks that have forms |
Websphere MQ Workflow | 3.4 | - | Not supported |
FLOWer | 3.0 | +/- | Indirectly supported via mapping and derived elements |
COSA | 4.2 | - | Not supported |
XPDL | 1.0 | - | Not mentioned |
BPEL4WS | 1.1 | - | Not supported |
BPMN | 1.0 | +/- | Partially supported. It occurs when decomposition is realised through Independent Sub-Process. As the Input- and OutputPropertyMaps are in form of Expressions, we assume that transformation function can be specified through them |
UML | 2.0 | + | Supported by the ObjectFlow transformation behaviour which allows transformation functions to be applied to data tokens as they are passed along connecting edges between activities. |
Oracle BPEL | 10.1.2 | - | Directly supported by the attributes of <assign> wizard |
jBPM | 3.1.4 | + | jBPM supports data transformation on input data by allowing for the specification of scripts that can transform data elements at the initiation of a task node (which is specified by the event type "node-enter"). When a task-node contains a single task, the node-enter scripts provide support for the data transformation on input data pattern. (Theoretically, jPDL also supports scripts at the creation, start, assignment and end of a task, but this failed as the scripts we defined for tasks did not execute.) |
OpenWFE | 1.7.3 | + | OpenWFE supports data transformation on input data, as data transformations can be performed at any time between two tasks in a process. |
Enhydra Shark | 2 | + | Enhydra Shark supports this pattern. Transformation are written in JavaScript. A JavaScriptToolAgent which is mapped to the local JavaScript interpreter is then used. |
Summary of Evaluation
+ Rating |
+/- Rating |
---|---|
|
|