Khanderao on Emerging And Integration Technologies

Thursday, February 22, 2007

What changed in WS-BPEL 2.0 from BPEL4WS 1.0/1.1

WS-BPEL (Web Services Business Process Execution Language) 2.0 is an execution language for Webservices based process orchestration. Currently (as of February 2007) it is in the final round of a public review to get accepted as a standard by Oasis ( With most of the leading vendors in middleware market being on its TC board, the specification published, on Jan 31st 2007(, is most likely to be accepted without any major changes.

WS-BPEL is the next revision of BPEL4WS (originally released on in July, 2002 and released as revision 1.1 in May 2003). Since there is an ample material covering some basic concepts of BPEL, in this article, I would mainly focus on some new features and concepts.

WS-BPEL clarifies the behavior of Abstract Processes. Abstract processes may hide (encapsulate) elements and activities of processes by replacing them by opaque entities or completing omitting those and, thus, becoming non-executionable. Abstract processes are useful to provide a common base with abstractions for further refinement, or identify matching counter process. Oh! This topic requires much more details, which can be covered in future. A New namespace xmlns= added for the better differentiation.

Process flow control activities:

WS-BPEL has following activities to orchestrate a process.

Activities interacting with internal/external entry to provide entry or exit points: receive, reply, invoke, pick

Data Related Activities: assign, validate

Data Related Activities: <assign>,

Process Flow related Activities: sequence, if, while, repeatUntil, forEach, flow, wait, empty, exit

Process Scope: scope, compensate, compensateScope

Fault Related Activities: throw, rethrow

Extension Constructs: extensionActivity

Out of these activities:

New activities: validate, repeatUntil, compensateScope, rethrow and extensionActivity.

Replaced Activities: switch changed to if - else, terminate changed to exit

Enhanced: onAlarm(add periodic),

Changes in: fault variable now declared catch, behavior of links changed.

Dropped: getLinkStatus() and getVariableData(). The functionality served by these functions can be achieved using new notations to access variables.

Data Handling:

Improved way to access message and variables:

WS-BPEL is XML centric. However, its earlier incarnation was not very friendly to Xpath and did not have XSL transforms. WS-BPEL further simplified Xpath mapping with a way to refer variables as “$variableName” in activities like assign, joins, etc. The same notation is used for property aliases too.

Transform: Most importantly, WS-BPEL has a function doXslTransform() to support XSL based transform. While giving a preferential treatment to Xpath, WS-BPEL still made a provision to support other mechanism with an attribute named expressionLanguage.For xpath,



WS-BPEL added an activity to validate a message. Additionally, assign activity has an attribute for validation.

Better mapping and exchange of message data:

BPEL process interacts with Webservices expressed in WSDL. WS-BPEL provides and constructs for easier copying BPEL variables to / from wsdl parts.

Additionally, WS-BPEL introduced a new construct called messageExchange to pair up concurrent and activities

Provision for extensions:

WS-BPEL introduced two constructs specifically for extensions. They are: extensionActivity and extensionAssignActivity. A new activity can be defined using these constructs.


WS-BPEL has improved fault handling with Fault handlers having catch, catchAll, throw and rethrow constructs.

Process Termination:

The and exitOnStandardFault are added.

Process level addition:

At a process level, a support to has been added.

Also, a support to added to import WSDL and XSD within a process.

These are few high level changes. In addition to these changes, a much better clarification as well as some semantic changes is done in the existing constructs.

Topics like concurrent messages, compensation, fault propagation, abstract process etc needs more discussion. May be in a later blog…

1. WS-BPEL2.0
2. BPEL4WS 1.1:

Add to Technorati Favorites

Save This Page on


Post a Comment

<< Home