Using the BPEL Service Engine in a Project

BPEL 2.0 Language Constructs

The following table provides a list of WS-BPEL 2.0 language constructs and whether they are implemented by the BPEL Service Engine.

Features 

Description 

<variables> 

For messages or intermediate data.  

Supports:

  • Variables of WSDL message and XML schema

  • messageType

  • type

  • element

Does not support:

  • from-spec

<invoke> 

Invokes operations on web services provided by partners  

Supports:

  • asynchronous one-way invoke

  • synchronous request-reply invoke

  • fault handling

  • correlation

  • virtual assign: fromPart and toPart

Does not support:

  • compensation handler

  • suppressJoinFailure

  • targets/sources

<receive>/<reply> 

Business processes use receive activities and corresponding reply activities to provide web services to partners  

Supports:

  • association between Receive and Reply activities done by using MessageExchange attribute

  • start activity

  • variable

  • correlation

  • indicating fault in Reply

  • virtual assign: fromPart and toPart

Does not support:

  • targets/sources

<assign> 

Supports:

  • <from variable=”ncname” part=”ncname”?/>

  • <from> <expression>general-expr</expression> </from>

  • <from> <literal> ... literal value ... </literal> </from>

  • <to variable=”ncname” part=”ncname”?/>

  • <to queryLanguage=”anyURI”?>query</to>

Does not support:

  • <from partnerLink=”ncname” endpointReference=”myRole|partnerRole”/>

  • <from variable=”ncname” property=”qname”/>

  • <to partnerLink=”ncname”/>

  • <to variable=”ncname” property=”qname”/>

  • <copy keepSrcElementName=”yes|no”?>: keepSrcElementName attribute is not supported.

  • <assign validate=”yes|no”?>: validate is not supported.

  • atomic assign

  • bpel standard faults

  • bpel:doXslTransform

  • bpel:getVariableProperty

  • expressionLanguage is limited to XPath 1.0

Signaling faults: <throw> 

Supports:

  • Throw activity

Does not supports:

  • targets/sources

<faultHandlers> 

Supports:

  • Handling faults at Process and Scope level

  • Handling faults caused by invoke and throw

  • Handling faults with associated data defined using WSDL message types

  • Handling faults generated within fault handlers

  • Default fault handling behavior ¨C rethrowing unhandled faults to an enclosing scope

Does not support, or has limited support:

  • Handling faults at Invoke level

  • Generating and handling standard faults

  • Handling and sending server faults - faults not defined on the WSDL operation

Server faults caused due to invoke can be caught using CatchAll. Faults not handled within the business process are sent to the caller with an XML message. A standardized way of communicating and catching these faults is not supported. 

<wait> 

Supports:

  • Wait activity

Does not support:

  • targets/sources

  • expressionLanguage

<empty> 

Supports:

  • Empty activity

Does not support:

  • targets/sources

<exit> 

Supports:

  • Exit activity

Does not support:

  • targets/sources

<sequence> 

Supports:

  • Sequence activity

Does not support:

  • targets/sources

<if> 

Supports:

  • If activity

Does not support:

  • targets/sources

  • expressionLanguage

<while> 

Supports:

  • While activity

Does not support:

  • targets/sources

  • expressionLanguage

<pick> 

Supports:

  • Pick used as start activity

  • association of onMessage by using messageExchange

  • onMessage variable

  • onMessage correlation

  • onMessage virtual assign: fromPart

  • onAlarm

Does not support:

  • targets/sources

<flow> 

Flow activity provides synchronization and concurrency.  

Supports:

  • concurrency

Does not support:

  • links

  • targets/sources

<sequence> 

Supports:

  • variable

  • fault handler

  • event handler

  • partnerLink

  • correlation

Does not support:

  • compensation handler

  • termination handler

  • targets/sources

<correlationSets>/<correlations> 

Supports:

  • Receive as initiating activity and/or correlating activity

  • correlated Receive within Flow

  • correlated Invoke within Flow

  • correlated Invoke within While

  • Invoke correlation attribute pattern: in, out, out-in

  • correlated Reply within Flow

  • onMessage as initiating activity and/or correlating activity

  • correlated onMessage within Flow

  • recycling correlation at process level

  • In flow, with multiple initiating activities with createInstance ”yes”, all those multiple initiating activities should use only ”join” initiate flag

Does not support:

  • correlations defined on Scope and their usage

  • correlated Receive within While

  • correlated Reply within While

  • correlated onMessage within While

  • request time out

  • duplicating operations

<forEach> 

Supports:

  • ForEach parallel=”no”

  • CompleteCondition

  • countCompletedBranchesOnly=”yes|no”

Does not support:

  • ForEach parallel=”yes”

  • targets/sources

  • Throw standard faults

<repeatUntil> 

Supports:

  • RepeatUntil activity

Does not support:

  • targets/sources

  • expressionLanguage

<eventHandlers> 

Supports:

  • On Process level

  • On Scope level

  • OnEvent

  • OnAlarm

  • OnAlarm with RepeatedEvery

Does not support:

  • Fault handling

  • Throw standard faults