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 (http://www.oasis-open.org/). With most of the leading vendors in middleware market being on its TC board, the specification published, on Jan 31st 2007( http://www.oasis-open.org/committees/download.php/22036/wsbpel-specification-draft%20candidate%20CD%20Jan%2025%2007.pdf), 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=http://docs.oasis-open.org/wsbpel/2.0/process/abstract 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 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.
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
Additionally, WS-BPEL introduced a new construct called messageExchange to pair up concurrent
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 level addition:
At a process level, a support to
Also, a support to
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 http://www.oasis-open.org/committees/download.php/22036/wsbpel-specification-draft%20candidate%20CD%20Jan%2025%2007.pdf
2. BPEL4WS 1.1: