Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

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.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)

...

Ode currently uses the expressionLanguage attribute to determine the language used in assignments instead of using the queryLanguage attribute. WSO2 BPS provides certain (non-standard) extensions to the <assign> activity that do not conform to the specification's requirements for assignment extensions. Some of them are discussed through the following synopsis.

...

 

 

Code Block
languagehtml/xml
<assignvalidate="yes|no"? standard-attributes>
   standard-elements
   (
   <copykeepSrcElementName="yes|no"? ignoreMissingFromData="yes|no"?>
      from-spec
      to-spec
   </copy>
   |
   <extensionAssignOperation>
      assign-element-of-other-namespace
   </extensionAssignOperation>
   )+
</assign>

...

Throws following faults:

...

...

The following types of variants are available for in the <assign> activity.

  • From/To-Spec Variants
  • Variable Variant

 

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:

Code Block
languagehtml/xml
<fromvariable="BPELVariableName"part="NCName"?><queryqueryLanguage="anyURI"?>?
      queryContent
   </query></from>
<frompartnerLink="NCName"endpointReference="myRole|partnerRole"/>
<fromvariable="BPELVariableName"property="QName"/>
<fromexpressionLanguage="anyURI"?>expression</from>
<from><literal>literal value</literal></from>
<fromvariable="BPELVariableName"extension="QName"/><!-- non-standard extension -->

...

The to-spec must be one of the following:

Code Block
languagehtml/xml
<tovariable="BPELVariableName"part="NCName"?><queryqueryLanguage="anyURI"?>?
      queryContent
   </query></to>
<topartnerLink="NCName"/>
<tovariable="BPELVariableName"property="QName"/>
<toexpressionLanguage="anyURI"?>expression</to>
<tovariable="BPELVariableName"extension="QName"/><!-- WSO2 BPS SPECIFIC -->

...

A to-spec must return an lvalue. If a to-spec does not return an lvalue then a bpel:selectionFailure will be thrown. In the context of XPath, an lvalue is a node-list containing a single node from a variable or a partnerLink identified by the to-spec (e.g. the XPath expression concat("foo""bar") is not an lvalue).

Assignment is an atomic operation; that is, either all <copy> s succeed, or no changes are made. In WSO2 BPS each <copy> is atomic

...

Selects value stored in a BPEL variable

Code Block
languagehtml/xml
<to|from variable="BPELVariableName"part="NCName"?

...

><queryqueryLanguage="anyURI"?>?
      queryContent
   </

...

query></to|

...

from>
  • 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.

...

Code Block
languagehtml/xml
<frompartnerLink="NCName"endpointReference="myRole|partnerRole"/>

...


<topartnerLink="NCName"/>
  • partnerLink - name of the partnerLink
  • role - the role or "side" of the partnerLink
    • myRole - the endpoint reference of the process
    • partnerRole - the partner's endpoint reference

For from-specs, the role attribute must be specified, while for the to-spec, the assignment is only possible to the partnerRole, hence there is no need to specify the role. Therefore, . Therefore, specifying the role is not required and the to-spec can only refer to a <partnerLink> of which the declaration specifies the partnerRole attribute. The type of the value referenced by partnerLink-style from/to-specs is always a <sref:service-ref> element.

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.() function.

Code Block
languagehtml/xml
<to|from variable="BPELVariableName"property="QName"/>
  • 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.

Code Block
languagehtml/xml
<to|from expressionLanguage="anyURI"?

...

>expression</from>
  • expressionLanguage - (optional) identifies the expression language.
  • expression - the expression ; whose syntax is determined by the expression language.

The computed value of the expression must be one of the following:

  • 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.

...

Code Block
languagehtml/xml
<from><literal>literal value</literal></from>
  • literal value - value to be assigned

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 exist exists for extensibility purposes; it . 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 was 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) generated generates an error. For example, if when a divide-by-zero is attempted.
  • bpel:uninitializedVariable - The variable referenced in the from-spec has is not been initialized.
  • bpel:mismatchedAssignmentFailure - The nodes selected by the to-spec and from-spec are not compatible. This For example, this could occur if for example an attempt was made to assign a text node to an element variable, or an element variable was assigned to a message variable.
Examples
  • The following assigns a childless element bar in namespace http://example.com to an element-typed variable myFooBarElemVar:

...

Code Block
languagehtml/xml
<assign>
   <copy>
       <from><literalxmlns:foo="http://example.com"

...

><foo:bar/

...

></literal></from><tovariable="myFooBarElemVar"/>
   </

...

copy>
</

...

assign>
  • The following assigns the string "FooBar" to a string-typed variable myStringVar:

...

Code Block
languagehtml/xml
<assign>
   <copy>
      <from>
         <literal><![CDATA[FooBar]]

...

></literal>
      </from>
      <tovariable="myStringVar"/>
   </

...

copy>
</

...

assign>
  • The following assigns the string "" (i.e. the empty string) to a string-typed variable myStringVar:

...

Code Block
languagehtml/xml
<assign> 
   <copy>
      <from>
         <literal/>
      </from>
      <tovariable="myStringVar"/>
   </

...

copy>
</

...

assign>
  • The following illustrates copying one variable (c1) to another (c2) as well as copying a variable part (address part of variable c1) to a variable of compatible element type (c3):

...

Code Block
languagehtml/xml
<assign>
    <copy>
       <fromvariable="c1"/>
       <tovariable="c2"/>

...


    </copy>
    <copy>
       <from>$c1.address</from>
       <tovariable="c3"/>
    </

...

copy>
</

...

assign>
Excerpt
hiddentrue
WS-BPEL 2.0 specification compliance of the WSO2 BPS.