Business Process Execution Language
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 Specification

Web Services: BPEL                                          2
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
                                   Processing




Web Services: BPEL                                                                   3
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
                                   Processing




Web Services: BPEL                                                                   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
<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
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
BPEL and WSDL Partners


            Partner B                             Partner A




                        WSDL
                                         WSDL A

                               Process




Web Services: BPEL                                            7
BPEL and WSDL Partners

           Partner B
                                                    Partner A




                                           WSDL A


                       Service Link Type




Web Services: BPEL                                              8
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




Web Services: BPEL                                           9
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
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
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 actions

Web Services: BPEL                                 12
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 around

Web Services: BPEL                                                   13
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
BPEL Composition of Web Services

                            Process
                            WSDL




           Component B                        Component A




                         B’s WSDL
                                         A’s WSDL


                     Service Link Type




Web Services: BPEL                                          15
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
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 target
Web Services: BPEL                                            17
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
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
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 messages
Web Services: BPEL                                           20
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 instance

Web Services: BPEL                                                21
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
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 portTypes


Web Services: BPEL                                            23
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 afterward
Web Services: BPEL                                                    24
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
     invoice



Web Services: BPEL                                               25
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
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 scope




Web Services: BPEL                                        27
Scope and Fault Example


                     A
                           Fault

                     B
                               E
                     C

                     D


Web Services: BPEL                 28
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
           scope


Web Services: BPEL                                                        29
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 possible
Web Services: BPEL                                                           30
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 input
Web Services: BPEL                                                     31
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
   http://msdn.microsoft.com/ws/2003/03/ws-addressing
          <wsa:EndpointReference xmlns:wsa=“...”>
             <wsa:Address>http://www.someendpoint.com</wsa:Address>
             <wsa:PortType>PurchaseOrderPortType</wsa:PortType>
          </wsa:EndpointReference>

                     PortType and Address assocation
Web Services: BPEL                                                    32

More Related Content

PPTX
Birds Of The Same Feather   Biz Talk Server And Wcf
PDF
Wendy: a tool to synthesize partners for services
PPTX
Social Media for Crisis Communication - Sneak Peak
DOCX
Definición depsicología evolutiva
PPTX
JS单元测试之路
PPTX
#SUSMROI
PDF
Taiwan soldier researching
PPTX
鸟枪换炮——Objectjs的oop与loader
Birds Of The Same Feather   Biz Talk Server And Wcf
Wendy: a tool to synthesize partners for services
Social Media for Crisis Communication - Sneak Peak
Definición depsicología evolutiva
JS单元测试之路
#SUSMROI
Taiwan soldier researching
鸟枪换炮——Objectjs的oop与loader

Viewers also liked (8)

PPTX
Fundamentals of Data Analytics Outline
PPTX
презентация.фрагмент.луканина
PPT
mypurplemartini.com
DOC
Guia ii medio quimica Propiedades coligativas
PPTX
Fundamentals of Recruitment Analytics Outline
PPTX
Fotosíntesis clase 3 de octubre
PPT
Breast biopsy ppt
PPTX
Crisis Communication Case Study: Ebola in Animals
Fundamentals of Data Analytics Outline
презентация.фрагмент.луканина
mypurplemartini.com
Guia ii medio quimica Propiedades coligativas
Fundamentals of Recruitment Analytics Outline
Fotosíntesis clase 3 de octubre
Breast biopsy ppt
Crisis Communication Case Study: Ebola in Animals
Ad

Similar to D06 bpel v3 (20)

PDF
Composing Business Process with ID-Net
PDF
Bill Stankiewicz Copy Greg Smith Oracle For Web
PDF
How To Identify And Integrate Suppliers For Electronic Trading
PDF
Apache O D E Apache Con E U2008
PDF
Prakash Narayan Killer S O Aapps Using J2 E E
PDF
Consuming SAP Enterprise Services for "Order-To-Cash" at the Hasso Plattner I...
PDF
S-CUBE LP: Runtime Prediction of SLA Violations Based on Service Event Logs
PDF
Service Referrals in BPEL-based Choreographies
PPT
WebXpress Solutions Finance
PPTX
Enterprise Service Bus Part 2
PPSX
Trade plus quick reference - oct 2012
PDF
Web Services Orchestration with BPEL 2.0
PPT
Oracle
PDF
DFD ภาษาอังกฤษ
PPTX
Blue cherry b2c interface
PPTX
BPEL, BPEL vs ESB (Integration)
PDF
Production Support
PDF
Multi-Enterprise Business Applications
Composing Business Process with ID-Net
Bill Stankiewicz Copy Greg Smith Oracle For Web
How To Identify And Integrate Suppliers For Electronic Trading
Apache O D E Apache Con E U2008
Prakash Narayan Killer S O Aapps Using J2 E E
Consuming SAP Enterprise Services for "Order-To-Cash" at the Hasso Plattner I...
S-CUBE LP: Runtime Prediction of SLA Violations Based on Service Event Logs
Service Referrals in BPEL-based Choreographies
WebXpress Solutions Finance
Enterprise Service Bus Part 2
Trade plus quick reference - oct 2012
Web Services Orchestration with BPEL 2.0
Oracle
DFD ภาษาอังกฤษ
Blue cherry b2c interface
BPEL, BPEL vs ESB (Integration)
Production Support
Multi-Enterprise Business Applications
Ad

Recently uploaded (20)

PPTX
UNIT III - GRAPHICS AND AUDIO FOR MOBILE
PPT
416170345656655446879265596558865588.ppt
PPTX
Project_Presentation Bitcoin Price Prediction
PPTX
22CDO02-IMGD-UNIT-I-MOBILE GAME DESIGN PROCESS
PPTX
ACL English Introductionadsfsfadf 20200612.pptx
PDF
Designing Through Complexity - Four Perspectives.pdf
PPT
Introduction to Research Methods - Lecture.ppt
PDF
This presentation is made for a design foundation class at Avantika Universit...
PPTX
WHY UPLOADING IS IMPORTANT TO DOWNLOAD SLIDES.pptx
PDF
Social Media USAGE .............................................................
PPTX
2. Competency Based Interviewing - September'16.pptx
PPTX
22CDH01-V3-UNIT III-UX-UI for Immersive Design
PPT
EthicsNotesSTUDENTCOPYfghhnmncssssx sjsjsj
PDF
trenching-standard-drawings procedure rev
PPTX
ENG4-Q2-W5-PPT (1).pptx nhdedhhehejjedheh
PDF
The Basics of Presentation Design eBook by VerdanaBold
PPTX
Arunesh_Kevin Lynch.pptxynynynyunynynynnynyn
PDF
Wondershare Dr.Fone Toolkit For Pc 13.8.9.87 FULL Crack 2025
PPTX
URBAN FINANCEnhynhynnnytnynnnynynyynynynyn
PPTX
Presentation1.pptxnmnmnmnjhjhkjkjkkjkjjk
UNIT III - GRAPHICS AND AUDIO FOR MOBILE
416170345656655446879265596558865588.ppt
Project_Presentation Bitcoin Price Prediction
22CDO02-IMGD-UNIT-I-MOBILE GAME DESIGN PROCESS
ACL English Introductionadsfsfadf 20200612.pptx
Designing Through Complexity - Four Perspectives.pdf
Introduction to Research Methods - Lecture.ppt
This presentation is made for a design foundation class at Avantika Universit...
WHY UPLOADING IS IMPORTANT TO DOWNLOAD SLIDES.pptx
Social Media USAGE .............................................................
2. Competency Based Interviewing - September'16.pptx
22CDH01-V3-UNIT III-UX-UI for Immersive Design
EthicsNotesSTUDENTCOPYfghhnmncssssx sjsjsj
trenching-standard-drawings procedure rev
ENG4-Q2-W5-PPT (1).pptx nhdedhhehejjedheh
The Basics of Presentation Design eBook by VerdanaBold
Arunesh_Kevin Lynch.pptxynynynyunynynynnynyn
Wondershare Dr.Fone Toolkit For Pc 13.8.9.87 FULL Crack 2025
URBAN FINANCEnhynhynnnytnynnnynynyynynynyn
Presentation1.pptxnmnmnmnjhjhkjkjkkjkjjk

D06 bpel v3

  • 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 Specification Web Services: BPEL 2
  • 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 Processing Web Services: BPEL 3
  • 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 Processing Web Services: BPEL 4
  • 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. 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. BPEL and WSDL Partners Partner B Partner A WSDL WSDL A Process Web Services: BPEL 7
  • 8. BPEL and WSDL Partners Partner B Partner A WSDL A Service Link Type Web Services: BPEL 8
  • 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 names Web Services: BPEL 9
  • 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. 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. 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 actions Web Services: BPEL 12
  • 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 around Web Services: BPEL 13
  • 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. BPEL Composition of Web Services Process WSDL Component B Component A B’s WSDL A’s WSDL Service Link Type Web Services: BPEL 15
  • 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. 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 target Web Services: BPEL 17
  • 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. 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. 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 messages Web Services: BPEL 20
  • 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 instance Web Services: BPEL 21
  • 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. 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 portTypes Web Services: BPEL 23
  • 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 afterward Web Services: BPEL 24
  • 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 invoice Web Services: BPEL 25
  • 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. 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 scope Web Services: BPEL 27
  • 28. Scope and Fault Example A Fault B E C D Web Services: BPEL 28
  • 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 scope Web Services: BPEL 29
  • 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 possible Web Services: BPEL 30
  • 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 input Web Services: BPEL 31
  • 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 http://msdn.microsoft.com/ws/2003/03/ws-addressing <wsa:EndpointReference xmlns:wsa=“...”> <wsa:Address>http://www.someendpoint.com</wsa:Address> <wsa:PortType>PurchaseOrderPortType</wsa:PortType> </wsa:EndpointReference> PortType and Address assocation Web Services: BPEL 32