You are on page 1of 25

Introduction to Business Process Execution Language for Web Services (BPEL4WS)

Joseph M. Chiusano Booz | Allen | Hamilton

XML.gov Working Group

Washington, DC February 18, 2004

Overview
Introduction

Partner Links
Main BPEL4WS Process Flow Constructs Message Correlation Process Compensation Questions

Introduction

BPEL4WS (Business Process Execution Language For Web Services) provides a language for the formal specification of business process behavior based exclusively on Web Services
BPEL4WS extends the Web Services interaction model and enables it to support business transactions
It defines a model and grammar for describing the behavior of a business process based on interactions between the process and its partners

The BPEL4WS specification was originally authored by IBM, Microsoft, BEA Systems, SAP, and Siebel Systems
The most current public version is Version 1.1 (May 2003) http://www-106.ibm.com/developerworks/webservices/library/ws-bpel/

The OASIS WS BPEL Technical Committee is advancing the BPEL4WS Specification


Updated version planned for release in February/March 2004

BPEL4WS sits at the top of the emerging Web Services stack, at the process/collaboration modeling layer
BPEL4WS sits above Web Services Choreography definitions

Process/Collaboration Modeling Definitions

BPEL4WS

Web Services Choreography Definitions

WSCI, W3C Web Services Choreography

Current Web Services Stack

WSDL, SOAP, Messaging, Discovery, etc.

The BPEL4WS process model is layered on top of the service model defined by WSDL 1.1
WSDL specifies a hierarchy for describing Web Services characteristics in an abstract form:
Port Type (Interface in 2.0)

Ex: Purchase Order Interface

Operations

Ex: Purchase Order Status Query

Messages

Ex: Submit Purchase Order Number, Receive Status

Parts

Ex: Purchase Order Number, Status

BPEL4WS is capable of modeling complex business processes, and the dependencies between activities
The following is a BPEL4WS process for handling a purchase order:
Invoice Services portType Production Scheduling portType operation

Purchase Order portType

message

<portType name=schedulingPT <operation name=requestProductionScheduling> <input message=pos:POMessage/> </operation> Shipping <operation name=sendShippingSchedule> Services <input message=pos:scheduleMessage/> portType </operation> </portType>

operation Initiate Production Scheduling operation Complete Production Scheduling operation

Source: BPEL4WS Version 1.1 Specification

Partner Links

Partner links are used to represent interactions between a service and each of the parties with which it interacts
Partner links define the messages and port types used in the interactions in both directions, along with role names
Invoicing partner link Scheduling partner link

Purchasing partner link

<partnerLink name="scheduling" partnerLinkType="lns:schedulingLT" partnerRole="schedulingService"/>


<plnk:partnerLinkType name="schedulingLT"> Shipping <plnk:role name="schedulingService"> link partner <plnk:portType name="pos:schedulingPT"/> </plnk:role> </plnk:partnerLinkType>

The portType used in the partner link

Main BPEL4WS Process Flow Constructs

The receive, flow and reply constructs are the main BPEL4WS constructs used to represent process flows
The purchase order example uses all three constructs
Receive construct

Flow construct

Reply construct

10

The receive, flow and reply constructs are the main BPEL4WS constructs used to represent process flows (contd)
The receive construct allows a process to do a blocking wait for a matching message to arrive
<receive partnerLink="purchasing" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="PO"> </receive>
Represents the purchase order message Wait to receive a purchase order on the Purchasing partner link

The flow construct allows one or more activities to be performed concurrently

Source: SOAP 1.1 Recommendation

11

The receive, flow and reply constructs are the main BPEL4WS constructs used to represent process flows (contd)
The reply construct allows a process to send a message in reply to a message that was received through a <receive>
<reply partnerLink="purchasing" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable=Invoice"> </reply>
Represents the invoice message Send invoice on the Purchasing partner link

Source: SOAP 1.1 Recommendation

12

BPEL4WS is also capable of modeling dependencies between activities


There are several dependencies in the purchase order example
Cannot complete price calculation until shipper is determined Cannot complete production scheduling until shipping logistics are arranged

Source: BPEL4WS Version 1.1 Specification

13

The synchronization dependencies between concurrent tasks are expressed by using links to connect them
The following represents the dependency of the price calculation on the shipper selected:
<invoke partnerLink=shipping" portType="lns:shippingPT" operation=requestShipping" inputVariable="shippingRequest"> outputVariable="shippingInfo"> <source linkName="ship-to-invoice"/> </invoke> <invoke partnerLink=invoicing" portType="lns:computePricePT" operation=sendShippingPrice" inputVariable="shippingInfo"> <target linkName="ship-to-invoice"/> </invoke>
This represents the Decide on Shipper activity

The common link The common link name represents a name represents a dependency dependency between the two between the two activities activities This represents the Complete Price Calculation activity

14

Message Correlation

15

Message correlation involves the association of two or more messages with each other in an asynchronous environment
This may be done by associating contents in a given message with its correlating message
For example, in a purchase order/invoice scenario, the invoice may contain the corresponding purchase order number
Purchase Order: <PurchaseOrder> <PurchaseOrderNumber> <PurchaseOrderDate> ........ </PurchaseOrder> Invoice: <Invoice> <InvoiceNumber> <InvoiceDate> <PurchaseOrderNumber> ........ </Invoice>

Purchase order number is common in both messages


Source: SOAP 1.1 Recommendation

16

BPEL4WS represents message correlations using correlation sets


A correlation set contains a set of properties shared by Declares correlated group correlation between purchase <invoke order and invoice partnerLink="Buyer" portType="SP:BuyerPT" all messages in a

operation="AsyncPurchaseResponse" inputVariable="POResponse"> <correlations> <correlation set="PurchaseOrder" initiate="no" pattern="out"> <correlation set="Invoice" initiate="yes" pattern="out"> </correlations> A customer ID </invoke> and order number <correlationSet name="PurchaseOrder" properties="cor:customerID cor:orderNumber"/> <correlationSet name="Invoice" properties="cor:vendorID cor:invoiceNumber"/>
A vendor ID and invoice number represent a unique invoice represent a unique purchase order

17

Endpoint References

18

BPEL4WS uses endpoint references for dynamic selection of service providers and invocation of their operations
The relevant information about a partner service can be set up as part of business process deployment
This is a more static approach

However, it is also possible to select and assign partner services dynamically


BPEL4WS leverages the WS-Addressing specification for this capability
WS-Addressing defines a standard representation for endpoint references that incorporates information from a WSDL description as well as policy information:
<wsa:EndpointReference xmlns:wsa="..."> <wsa:Address>http://www.someendpoint.com</wsa:Address> <wsa:PortType>PurchaseOrderPortType</wsa:PortType> </wsa:EndpointReference>

URL: http://msdn.microsoft.com/ws/2003/03/ws-addressing

The portType associated with the address

19

Process Compensation

20

Business processes are often of long duration, which means that a business process may need to be cancelled after many transactions have been committed during its progress
Consider a situation in which a user cancels a purchase order:
Revert back to original state Sub mit Pur cha se Ord er Pro ces s Pur cha se Ord er

Che ck Inve ntor y

Ord er Fro m Sup plie r

User Cancels!

In this situation, it is not possible to lock system resources (ex: database records) for extended periods of time
Therefore, the partial work must be undone as best as possible

21

BPEL4WS defines compensation handlers that are invoked to perform compensation activities
A compensation handler is essentially a wrapper for compensation activities
Specifies a compensating operation on a given portType for a given partner link:
The <compensationHandler> CancelPurchase <invoke partnerLink="Seller" operation invokes portType="SP:Purchasing" a cancellation operation="CancelPurchase" inputVariable="getResponse" outputVariable="getConfirmation"> The response to the purchase <correlations> request is used <correlation set="PurchaseOrder" as input pattern="out"/> </correlations> </invoke> </compensationHandler>

22

Questions?

23

Contact Information
Joseph M. Chiusano
Booz | Allen | Hamilton McLean, VA (703) 902-6923 chiusano_joseph@bah.com

24

You might also like