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

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

  1. Direct workflow support
  2. Transformations can be specified on all data element
  1. Only achievable via programmatic extensions