Title: XML.gov Working Group
1Introduction to Business Process Execution
Language for Web Services (BPEL4WS)
Joseph M. Chiusano Booz Allen Hamilton
XML.gov Working Group Washington, DC February
18, 2004
2Overview
- Introduction
- Partner Links
- Main BPEL4WS Process Flow Constructs
- Message Correlation
- Process Compensation
- Questions
3Introduction
4BPEL4WS (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
5BPEL4WS 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
Web Services Choreography Definitions
Current Web Services Stack
6The 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 -
7BPEL4WS is capable of modeling complex business
processes, and the dependencies between activities
- The following is a BPEL4WS process for handling a
purchase order
message
Source BPEL4WS Version 1.1 Specification
8Partner Links
9Partner 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
10Main BPEL4WS Process Flow Constructs
11The receive, flow and reply constructs are
the main BPEL4WS constructs used to represent
process flows
- The purchase order example uses all three
constructs
12The 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 - ltreceive partnerLink"purchasing"
- portType"lnspurchaseOrderPT"
- operation"sendPurchaseOrder"
- variable"PO"gt
- lt/receivegt
- The flow construct allows one or more activities
to be performed concurrently
Wait to receive a purchase order on the
Purchasing partner link
Represents the purchase order message
Source SOAP 1.1 Recommendation
13The 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 ltreceivegt - ltreply partnerLink"purchasing"
- portType"lnspurchaseOrderPT"
- operation"sendPurchaseOrder"
- variableInvoice"gt
- lt/replygt
Send invoice on the Purchasing partner link
Represents the invoice message
Source SOAP 1.1 Recommendation
14BPEL4WS is also capable of modeling dependencies
between activities
- There are several dependencies in the purchase
order example
Cannot complete production scheduling until
shipping logistics are arranged
Cannot complete price calculation until shipper
is determined
Source BPEL4WS Version 1.1 Specification
15The 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 - ltinvoke partnerLinkshipping"
- portType"lnsshippingPT"
- operationrequestShipping"
- inputVariable"shippingRequest"gt
- outputVariable"shippingInfo"gt
- ltsource linkName"ship-to-invoice"/gt
- lt/invokegt
- ltinvoke partnerLinkinvoicing"
- portType"lnscomputePricePT"
- operationsendShippingPrice"
- inputVariable"shippingInfo"gt
- lttarget linkName"ship-to-invoice"/gt
- lt/invokegt
This represents the Decide on Shipper activity
This represents the Complete Price Calculation
activity
16Message Correlation
17Message 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
Source SOAP 1.1 Recommendation
18BPEL4WS represents message correlations using
correlation sets
- A correlation set contains a set of properties
shared by all messages in a correlated group - ltinvoke partnerLink"Buyer" portType"SPBuyerPT"
- operation"AsyncPurchaseResponse"
inputVariable"POResponse"gt - ltcorrelationsgt
- ltcorrelation set"PurchaseOrder"
initiate"no" pattern"out"gt - ltcorrelation set"Invoice"
initiate"yes" pattern"out"gt - lt/correlationsgt
- lt/invokegt
- ltcorrelationSet name"PurchaseOrder"
- properties"corcustomerID cororderNumber"/gt
- ltcorrelationSet name"Invoice"
- properties"corvendorID corinvoiceNumber"/gt
19Endpoint References
20BPEL4WS 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 - ltwsaEndpointReference xmlnswsa"..."gt
- ltwsaAddressgthttp//www.someendpoint.comlt/wsa
Addressgt - ltwsaPortTypegtPurchaseOrderPortTypelt/wsaPortTy
pegt - lt/wsaEndpointReferencegt
- URL http//msdn.microsoft.com/ws/2003/03/ws-addre
ssing
The portType associated with the address
21Process Compensation
22Business 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 - 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
User Cancels!
23BPEL4WS 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 - ltcompensationHandlergt
- ltinvoke partnerLink"Seller"
- portType"SPPurchasing"
- operation"CancelPurchase"
- inputVariable"getResponse"
- outputVariable"getConfirmation"gt
- ltcorrelationsgt
- ltcorrelation set"PurchaseOrder"
- pattern"out"/gt
- lt/correlationsgt
- lt/invokegt
- lt/compensationHandlergt
The CancelPurchase operation invokes a
cancellation
The response to the purchase request is used as
input
24Questions?
25Contact Information
- Joseph M. Chiusano
- Booz Allen Hamilton
- McLean, VA
- (703) 902-6923
- chiusano_joseph_at_bah.com