Introduction
WS-BPEL 2.0
supports custom variable assignment mechanisms (Extensible Assign Operations)
and user-defined activities (Extension Activities). To use these features,
WS-BPEL provides two explicit extension constructs
<extensionAssignOperation> and <extensionActivity>.
In order to
use BPEL extensions, Extensions must be declared in the BPEL process model. It
tells to the BPEL engine which extensions must be available and which are
optional. Extension declaration can be done by adding an <extension …>
element to the BPEL process model as follows.
<bpel:process...>
…
<bpel:extensions>
<bpel:extension
namespace="#extension-namespace#"
mustUnderstand="#yes|no#"/>
<bpel:extension
namespace="#another-extension-namespace#"
mustUnderstand="#yes|no#"/>
</bpel:extensions>
...
</bpel:process>
Extensible
Assign Operations
Extensible
Assign Operation allows including extensible data manipulation operations
defined as extension elements under namespaces different from the WS-BPEL
namespace. If the element contained within the extensionAssignOperation element
is not recognized by the BPEL engine and is not subject to a
mustUnderstand="yes" requirement from an extension declaration then
the extensionAssignOperation operation MUST be ignored.
It is structured as follows.
<bpel:process...>
…
<bpel:sequence>
...
<assign
validate="yes|no"? standard-attributes>
standard-elements
<extensionAssignOperation>
assign-element-of-other-namespace
</extensionAssignOperation>
</assign>
…
</bpel:sequence>
...
</bpel:process>
E4X
expressions can be used in Extensible Assign Operations. Following code snippet
will show you how to define an ExtensionAssignOperation using E4X expressions..
<bpel:assign name="AssignE4X">
<bpel:extensionAssignOperation>
E4X-expressions
</js:snippet>
</bpel:extensionAssignOperation>
</bpel:assign>
The snippet
element declares the given extension namespace and it contains the E4X
expressions.
Extension
Activity
extensionActivity
is a mechanism defined in WS-BPEL 2.0, that allows to define new activities, which
are not defined by WS-BPEL 2.0 specification.
You can define new activity by placing them inside the
<extensionActivity> element.
According to
the Specification <extensionActivity> should have a single element,
which is qualified with a namespace different from WS-BPEL namespace. If the element contained within the
<extensionActivity> element is not recognized by the WS-BPEL processor
and is not subject to a mustUnderstand="yes" requirement from an
extension declaration then the unknown activity MUST be treated as if it were
an <empty> activity that has the standard-attributes and
standard-elements of the unrecognized element; all its other attributes and
child elements are ignored.
(Read
full BPEL specification about ExtensionActivity)
ExtenisionActivity structured as
follows,
<bpel:process...>
…
<bpel:sequence>
...
<extensionActivity>
<anyElementQName standard-attributes>
standard-elements
</anyElementQName>
</extensionActivity>
…
</bpel:sequence>
...
</bpel:process>