This page provides information on WSO2 BPS's compliance to the final WS-BPEL 2.0 specification released by OASIS.
Variable Initialization
Variable initialization using in-line spec is fully supported. (WS-BPEL 2.0 Section 8.1: http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html#_Toc164738495)
External Variables
In addition to regular variables that are managed by the engine according to the BPEL specification, Ode adds support for variables whose content is stored externally, yet transparently accessible from the engine.
Activities
Divergences from the WS-BPEL 2.0 specification (http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html) for each standard BPEL activity is described below along with the activities that are compliant.
...
- bpel:invalidVariables
- bpel:selectionFailure
- bpel:subLanguageExecutionFault
- bpel:uninitializedVariable
- bpel:mismatchedAssignmentFailure
- bpel:uninitializedPartnerRole
Introduction to the <assign> Activity
The <assign> activity can be used to copy data from one variable to another, as well as to construct and insert new data using expressions. It can also be used to copy endpoint references to and from partnerLinks.
...
The following types of variants are available in the <assign> activity.
From/To-Spec Variants
The <assign> activity copies a type-compatible value from the source ("from-spec") to the destination ("to-spec"), using <copy> element. The from-spec must be one of the following:
...
Assignment is an atomic operation; that is, either all <copy> s succeed, or no changes are made. In WSO2 BPS each <copy> is atomic
Variable Variant
Selects value stored in a BPEL variable
...
- variable - (required) name of the variable
- part - (optional) if the type of this variable is a WSDL messageType, this attribute may be used to provide the name of a part within that variable. This attribute must not be used when the variable is defined using XML schema types or element.
- <query> element may be used to select a value from the source or target variable or message part. The computed value of the query must be one the following:
- a sigle XML node, for example an attribute or an element
- test(i. e. a text node, CDATA section, string-valued XPath expression, etc..)
PartnerLink Variant
Allows manipulation of the endpoint references associated with partnerLinks.
...
An attempt during process execution to read a partner link before its partnerRole EPR is initialized, results in the bpel:uninitializedPartnerRole standard fault. Partner roles of partner links are read when they are referenced in an <invoke> or the <from> part of a <copy> in an <assign> activity.
Property Variant
Allows data manipulation using properties. The property value generated by the from-spec is generated in the same manner as the value returned by the bpel:getVariableProperty() function.
...
- variable - name of the variable referenced
- property - name of the property to apply to the variable
Expression Variant
In the Expression Variant, an expression language (typically XPath), is used to calculate a value.
...
- a single XML node, for example, an attribute or an element.
- text(i. e. a text node, CDATA section, string-valued XPath expression, etc.)
Literal Variant
The literal variant allows a literal value to be given as the rvalue.
...
The type of the literal value may be optionally indicated inline with the value by using XML Schema's instance type mechanism (xsi:type). The literal content must be either a single element or text. An empty <literal/> element is equivalent to an empty text node.
Empty Variant
Empty variant exists for extensibility purposes. It is not supported by WSO2 BPS.
<from|to/>
Insert Variant (Non-Standard Extension)
Faults
- bpel:invalidVariables - A modified variable does not conform to its schema and the validate flag is set to yes.
- bpel:selectionFailure - The node(s) selected by a from/to-spec is (are) invalid. This includes cases when the to-spec returns a node that is not an lvalue, when multiple nodes are selected, or when no node is selected.
- bpel:subLanguageExecutionFault - Evaluating the expression (in the expression variant), or the query (in the variable variant) generates an error. For example, when a divide-by-zero is attempted.
- bpel:uninitializedVariable - The variable referenced in the from-spec is not initialized.
- bpel:mismatchedAssignmentFailure - The nodes selected by the to-spec and from-spec are not compatible. For example, this could occur if an attempt was made to assign a text node to an element variable, or an element variable was assigned to a message variable.
...