Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

D06 bpel v3


Published on

Published in: Design, Technology
  • Be the first to comment

D06 bpel v3

  1. 1. Business Process Execution Language
  2. 2. Business Process Execution Language  Define business processes as coordinated sets of Web service interactions  Define both abstract and executable processes  Enable the creation of compositions of Web services  Where it comes from:  Strong roots in traditional flow models  Concepts from structured programming languages  On top of WSDL and core XML specifications  Merges WSFL and XLANG concepts  The OASIS WS BPEL Technical Committee is advancing the BPEL4WS SpecificationWeb Services: BPEL 2
  3. 3. BPEL & WSDL Shipping Services portType Invoice Receive Production Services Purchase Scheduling portType portType Order Initiate Decide Initiate Price On Production Calculation Shipper Scheduling Purchase Order portType Arrange Complete Logistics Complete Price Production Calculation Scheduling Invoice ProcessingWeb Services: BPEL 3
  4. 4. BPEL & WSDL Shipping Services portType Invoice Receive Production Services Purchase Scheduling portType portType Order Initiate Decide Initiate Price On Production operation Calculation Shipper Scheduling Purchase Order portType Arrange message Complete Logistics Complete Price Production Calculation Scheduling Invoice ProcessingWeb Services: BPEL 4
  5. 5. BPEL & WSDL Shipping Services portType Invoice Receive Production Services Purchase Scheduling portType portType Order Initiate Decide Initiate Price On Production operation Calculation Shipper Scheduling Purchase Order portType Arrange message Complete Logistics Complete Price Production Calculation Scheduling<portType name=“schedulingPT” <operation name=“requestProductionScheduling”> <input message=“pos:POMessage”/>Invoice </operation> Processing <operation name=“sendShippingSchedule”> <input message=“pos:scheduleMessage”/> </operation></portType>Web Services: BPEL 5
  6. 6. Structure of a BPEL Process <process ...> <partners> ...  Web services the process </partners> interacts with <containers> ...  Data used by the process </containers>  Used to support asynchronous <correlationSets> ... </correlationSets> interactions <faultHandlers> ...  Alternate execution path to deal </faultHandlers> with faulty conditions <compensationHandlers> ...  Code to execute when “undoing” </compensationHandlers> an action  What the process actually does (activities)* </process>Web Services: BPEL 6
  7. 7. BPEL and WSDL Partners Partner B Partner A WSDL WSDL A ProcessWeb Services: BPEL 7
  8. 8. BPEL and WSDL Partners Partner B Partner A WSDL A Service Link TypeWeb Services: BPEL 8
  9. 9. 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 namesWeb Services: BPEL 9
  10. 10. Partner Definitions and Links A partner is accessed over a WS “channel”, defined by a service link type <partner name=“...” serviceLinkType=“...” partnerRole=“...” myRole=“...”/> A SLT defines two roles and the portTypes that each role needs to support <serviceLinkType name=“...”> <role name=“..."> <portType name=“...” />* </role> <role name=“...”> <portType name=“...”/>* </role> </serviceLinkType>Web Services: BPEL 10
  11. 11. Partner Links “Invoicing” “Scheduling” partner link partner link “Purchasing” partner link <partnerLink name="scheduling" partnerLinkType="lns:schedulingLT" partnerRole="schedulingService"/> The portType used in the <plnk:partnerLinkType name="schedulingLT"> “Shipping” partner link <plnk:role name="schedulingService"> link partner <plnk:portType name="pos:schedulingPT"/> </plnk:role> </plnk:partnerLinkType>Web Services: BPEL 11
  12. 12. Traditional Flow Models Control links define Activities represent execution flow as a directed acyclic graph units of processing Flow of data is explicitly modeled Activities are mapped to through data links application invocations or human actionsWeb Services: BPEL 12
  13. 13. BPEL Data Model Activities input / Globally scoped data output is kept in variables typed as WSDL global variables messages Assignment activities move <container name=“...” message=“...”/>* data aroundWeb Services: BPEL 13
  14. 14. BPEL Basic Activities  Invokes an operation on a partner <invoke partner=“...” portType=“...” operation=“...” inputContainer=“...” outputContainer=“...”/>  Receives invocation from a partner <receive partner=“...” portType=“...” operation=“...” container=“...” [createInstance=“...”] />  Sends a reply message in partner invocation <reply partner=“...” portType=“...” operation=“...” container=“...”/>  Data assignment between containers <assign> <copy> <from container=“...”/> <to container=“...”/> </copy>+ </assign>Web Services: BPEL 14
  15. 15. BPEL Composition of Web Services Process WSDL Component B Component A B’s WSDL A’s WSDL Service Link TypeWeb Services: BPEL 15
  16. 16. More Basic Activities  Detects processing error and switches into fault processing mode <throw faultName=“...” faultContainer=“...”/>  Pull the plug on this instance <terminate/>  Execution stops for a specified amount of time <wait for=“...”? until=“...”? />  Do nothing; a convenience element <empty>Web Services: BPEL 16
  17. 17. BPEL Structured Activities <sequence> execute activities sequentially <flow> execute activities in parallel <while> iterate execution of activities until condition is violated <pick> several event activities (receive message, timer event) scheduled for execution in parallel; first one is selected and corresponding code executed <link ...> defines a control dependency between a source activity and a targetWeb Services: BPEL 17
  18. 18. Nesting Structured Activities: Example <sequence> <receive .../> <flow> <sequence> Seq <invoke ... /> <while ... > Flow <assign> ... </assign> Seq Seq </while> </sequence> <sequence> <receive ... /> While <invoke ... /> </sequence> </flow> <reply ... /> </sequence>Web Services: BPEL 18
  19. 19. Asynchronous Interactions in BPEL  BPEL can model many types of interactions:  Simple stateless interactions  Stateful, long running, asynchronous interactions  For the latter case, how to ensure that two (or more) messages are referring to the same “session” ?Web Services: BPEL 19
  20. 20. Message Correlation  Associating two or more messages with each other in an asynchronous environment  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: Invoice: <PurchaseOrder> <Invoice> <PurchaseOrderNumber> <InvoiceNumber> <PurchaseOrderDate> <InvoiceDate> ........ <PurchaseOrderNumber> </PurchaseOrder> ........ </Invoice> common in both messagesWeb Services: BPEL 20
  21. 21. Correlation Sets  What is a correlation set?  A set of business data fields that capture the state of the interaction (“correlating business data”), e.g., a “purchase order number”, a “customer id”, etc.  Each set is initialized once  Its values do not change in the course of the interaction  CSs : the data used to maintain the state of the interaction (a “conversation”)  At the process end of the interaction, CSs allow incoming messages to reach the right process instanceWeb Services: BPEL 21
  22. 22. Defining Correlation Sets A CS is a named set of properties. Properties are defined as WSDL extensibility elements <correlationSet name=“...” properties=“...”/> A property has a simple XSD type and a global name <bpws:property name=“...” type=“...” />Web Services: BPEL 22
  23. 23. Properties A property is “mapped” to a field in a WSDL message type <bpws:propertyAlias propertyName=“...” messageType=“...” part=“...” query=“...” />  The property can thus be found in the messages actually exchanged  Typically a property will be mapped to several different message types and carried on many interactions, across operations and portTypesWeb Services: BPEL 23
  24. 24. Using Correlation  An input or output operation identifies which correlation sets apply to the messages received or sent <receive partner=“...” operation=“...” portType=“...” container=“...”> <correlations> <correlation set=“PurchaseOrder” initiation=“yes”/> </correlations> </receive>  That CS will be used to assure that the message is related to the appropriate stateful interaction  A CS is initialized once, in an interaction where the set appears with the “initiation” attribute set to “yes”. Its value may never be changed afterwardWeb Services: BPEL 24
  25. 25. Example: Defining Correlation Sets A customer ID and order number represent a unique purchase order <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 invoiceWeb Services: BPEL 25
  26. 26. Example: Using Correlation Sets  Declares correlation between purchase order and invoice <invoke partnerLink=“Buyer” portType=“SP:BuyerPT” operation=“AsyncPurchaseResponse” inputVariable=“POResponse”> <correlations> <correlation set=“PurchaseOrder” initiate=“no” pattern=“out”> <correlation set=“Invoice” initiate=“yes” pattern=“out”> </correlations> </invoke>Web Services: BPEL 26
  27. 27. BPEL Handlers and Scopes  A scope is a set of (basic or structured) activities  Each scope can have two scope types of handlers Fault Handler associated:  Fault handlers Many can be attached, for different fault types  Compensation handler Compensation A single compensation Handler handler per scopeWeb Services: BPEL 27
  28. 28. Scope and Fault Example A Fault B E C DWeb Services: BPEL 28
  29. 29. How Handlers Work A fault handler defines alternate execution paths when a fault occurs within the scope  Typical scenario: 1. Fault is thrown (retuned by invoke or explicitly by process) 2. Execution of scope is terminated 3. Appropriate fault handler located (with usual propagation semantics) 4. Main execution is compensated to “undo” business effects of unfinished work A compensation handler is used to reverse the work performed by an already completed scope  A compensation handler can only be invoked by the fault handler or compensation handler of its immediate enclosing scopeWeb Services: BPEL 29
  30. 30. Partial Work Unavoidable 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 Submit Process Order User Check Cancels! Purchase Purchase From Inventory Order Order Supplier 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 possibleWeb Services: BPEL 30
  31. 31. Compensation Handlers  Invoked to perform compensation activities — a “wrapper” for compensation activities: Specifies a compensating operation on a given portType for a given partner link: The CancelPurchase <compensationHandler> operation invokes a <invoke partnerLink=“Seller” cancellation portType=“SP:Purchasing” operation=“CancelPurchase” inputVariable=“getResponse” outputVariable=“getConfirmation”> <correlations> <correlation set=“PurchaseOrder” pattern=“out”/> </correlations> </invoke> The response to the </compensationHandler> purchase request is used as inputWeb Services: BPEL 31
  32. 32. Dynamic Service Selection and Invocation  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  BPEL uses endpoint references defined in the WS- Addressing specification for this capability <wsa:EndpointReference xmlns:wsa=“...”> <wsa:Address></wsa:Address> <wsa:PortType>PurchaseOrderPortType</wsa:PortType> </wsa:EndpointReference> PortType and Address assocationWeb Services: BPEL 32