Websphere Integration Developer Evaluation Results

Evaluation results for Websphere Integration Developer version 6.0 (informally WebSphere BPEL) against the workflow control-flow patterns

Pattern

Rating

Motivation

Sequence + Supported by the <sequence> activity.
Parallel Split + Supported by the <flow> activity.
Synchronization + Supported by the <flow> activity.
Exclusive Choice + Supported by the <switch> activity or links within a <flow> activity.

Simple Merge

+ Supported by the <switch> activity or links within a <flow> activity.
Multi-Choice + Supported by the <switch> activity or links within a <flow> activity.
Structured Synchronizing Merge + Supported by links within the <flow> activity.
Multi-Merge - Not supported. The language is block structured and it is not possible for two threads of execution to run through the same path in a single process instance.
Structured Discriminator - Not supported. There is no dedicated language construct and links cannot be used in conjunction with an OR joinCondition as the join requires the status of all incoming links to be known before evaluation, not just the identification of the first positive link.
Arbitrary Cycles - Not supported. The language is block structured and cannot capture unstructured cycles.
Implicit Termination + Directly supported for the <flow> activity. For other constructs, each branch must be ended with a <terminate> activity.
Multiple Instances without Synchronization + Supported by the <invoke> activity within a <while> loop.
Multiple Instances with a Priori Design-Time Knowledge - Not supported. No direct means of denoting multiple instances are required.
Multiple Instances with a Priori Run-Time Knowledge - Not supported. No direct means of denoting multiple instances are required.
Multiple Instances without a Priori Run-Time Knowledge - Not supported. No direct means of denoting multiple instances are required.
Deferred Choice + Supported by the <pick> activity.
Interleaved Parallel Routing +/- Indirectly achievable via serializable scopes but this limits the activities to those within the same scope.
Milestone - Indirectly achievable by using a <pick> activity within a <while> loop which can only be executed once but solution is overly complex.
Cancel Activity + Supported through fault and compensation handlers.
Cancel Case + Supported by the <terminate> activity.
Structured Loop + While loops are directly supported.
Recursion - Not supported. Recursive composition is possible on an external basis using the <invoke> construct against web services but there is no internal support.
Transient Trigger - Not supported. Messages are durable in form.

Persistent Trigger

+ Supported by the <pick> activity waiting on specific message type.
Cancel Region +/- No means of cancelling arbitrary groups of activities although activities within the same scope can be cancelled.
Cancel Multiple Instance Activity - No support for multiple activity instances.
Complete Multiple Instance Activity - No support for multiple activity instances.
Blocking Discriminator -

Not supported. There is no dedicated language construct and links cannot be used in conjunction with an OR joinCondition as the join requires the status of all incoming links to be known before evaluation, not just the identification of the first positive link.

Cancelling Discriminator - Not supported. As for WCP28.
Structured N-out-of-M Join - Not supported. Similar to the discriminator, there is no dedicated language construct and links cannot be used in conjunction with an OR joinCondition as the join requires the status of all incoming links to be known before evaluation, not just the identification of the first N positive links.
Blocking N-out-of-M Join - Not supported. As for WCP30.
Cancelling N-out-of-M Join - Not supported. As for WCP30.
Generalised AND-Join - Not supported. There is no notion of multiple execution threads through a single path in a process instance.
Static Partial Join for Multiple Instances - No support for multiple activity instances.
Cancelling Partial Join for Multiple Instances - No support for multiple activity instances.
Dynamic Partial Join for Multiple Instances - No support for multiple activity instances.
Acyclic Synchronizing Merge + Supported by links within a <flow> construct.
General Synchronizing Merge - Not supported. Process models are always block structured and OR-joins always operate within a <flow> construct.
Critical Section + Supported by serializable scopes.
Interleaved Routing + Supported by serializable scopes.
Thread Merge +/- The correlation facility for invoked activities provides the basis for coalescing distinct threads of control but programmatic extensions are necessary to keep track of when the merge should occur.
Thread Split +/- Achievable through the use of the <invoke> construct in conjunction with the correlation facility but programmatic extensions are necessary if subsequent thread merges are required.
Explicit Termination - Process instances complete when no activity instances remain to complete.