ActiveBPEL® Designer User’s Guide

What’s New in WS-BPEL 2.0

The WS-BPEL 2.0 specification includes many changes from version BPEL4WS 1.1, including the following.

Namespace changes

BPEL processes (executable): http://docs.oasis-open.org/wsbpel/2.0/process/executable

BPEL processes (abstract): http://docs.oasis-open.org/wsbpel/2.0/process/abstract

Service-ref elements: http://docs.oasis-open.org/wsbpel/2.0/serviceref

Supporting constructs in WSDL:

Partner Link Types: http://docs.oasis-open.org/wsbpel/2.0/plnktype

Properties and Property Aliases: http://docs.oasis-open.org/wsbpel/2.0/varprop

BPEL4WS 1.1 construct that no longer exist in WS-BPEL 2.0

Partners

Process-level compensation/termination handler (This is supported by ActiveBPEL as an extension)

enableInstanceCompensation attribute

XPath extended functions "getLinkStatus()" and "getVariableData()"

several standard faults removed or changed

NEW CONSTRUCTS

Process Properties and process-level elements

New property: Exit on standard fault

New elements: import (WSDL and XSD), message exchange

Partner Links

Scope-level partner links

Activities

New element for all activities: documentation

New activities: validate, rethrow, compensate scope, repeat until

Renamed activities: Switch is now If. Terminate is now Exit.

Receive, Reply, Invoke onMessage (Pick) and onEvent (Event handler) can copy message parts to and from process variables, eliminating the need to create an assign activity to do the copy.

Scope has termination handler, attribute name change (isolated)

Variables

WS-BPEL defines a data model to represent the BPEL variables and defines rules for mapping the data model to different expression languages.

The WS-BPEL data model is based upon XML infoset. Each BPEL variable is conceptually a separate set of XML documents. In the case of BPEL variables of WSDL message types, each WSDL message part is mapped into a separate XML document of the set.

WS-BPEL data model mapping to XPath 1.0 is simplified. The XPath extended functions "getLinkStatus()" and "getVariableData()" were removed, and propagation of application data is done using XPath variables.

For example, instead of using "getLinkStatus(linkName)" to access the status of a link, you can reference the link directly as an XPath variable by adding the "$" character to the link name, as shown in the following fragment:

<joinCondition>
    $buyToSettle
</joinCondition>

The same idea applies to accessing BPEL variables. Instead of using "getVariableData(varName, partName)," one can reference the variable by using the "$varName" convention. However, in case of variables of WSDL messages, a part is referenced by appending the "." character and the part name to the variable name, as illustrated in the following snippet:

<assign>
   <copy>
     <from variable="value"/>
     <to>$outputVar.value</to>
   </copy>
</assign>

Queries on property aliases also make use of the same concept. In this case, a BPEL predefined variable named "source" must be used to reference the BPEL variable in question, as demonstrated below:

<bpel:propertyAlias propertyName="tns:phoneNumber"
 messageType="tns:outputMessage">
<bpel:query>$source.value</bpel:query>
</bpel:propertyAlias>

Expression and Query Languages

XSL transforms allowed

Correlation

New pattern: join. Renamed pattern: in-out/request/response

Event Handling

WS-BPEL explicitly states that the global event handler is only enabled after the start activity has completed its execution, decreasing any chances for race conditions. An onEvent activity declares its own input variable, meaning each event handler instance works with its own local copy of the input data.

Fault Handling

Fault variable is declared in the catch, not in the enclosing scope.

Termination Handling

A scope termination handler replaces the standard fault, bpws:forcedTermination. A scope can run a termination handler instead of a fault handler.

Standard Faults

See BPEL Standard Faults.