Professional Documents
Culture Documents
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/
BPEL4WS sits at the top of the emerging Web Services stack, at the process/collaboration modeling layer
BPEL4WS sits above Web Services Choreography definitions
BPEL4WS
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)
Operations
Messages
Parts
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
message
<portType name=schedulingPT <operation name=requestProductionScheduling> <input message=pos:POMessage/> </operation> Shipping <operation name=sendShippingSchedule> Services <input message=pos:scheduleMessage/> portType </operation> </portType>
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
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
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
12
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>
16
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
URL: http://msdn.microsoft.com/ws/2003/03/ws-addressing
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
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