Introduction and Advanced Concepts of BPEL


Published on

BPEL is the de-facto standard for modeling executable Web services orchestrations. The XML-based language is used for the definition and execution of business processes, as well as scientific workflows using Web services. WSO2 Business Process Server (WSO2 BPS) and Apache Orchestration Director Engine (ODE) are two WS-BPEL-compliant business process executable workflow engines that support the composition of Web services by orchestrating service interactions.
This tutorial will explore advanced concepts in WS-BPEL 2.0 and extensibility in WSO2 BPS, including:

* Fault handling
* Compensation handling
* Selective, multiple, and concurrent event processing
* Message correlation
* Parallel processing
* An introduction to ODE extensions
* Future improvements with the extensions

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Introduction and Advanced Concepts of BPEL

  1. 1. Introduction and AdvancedConcepts of BPEL Denis Weerasiri & Waruna Ranasinghe
  2. 2. Overview• What is BPEL• WSO2 Business Process Server• Introduction to BPEL• HelloWorld Sample• Advanced Concepts of BPEL • Fault Handling • Compensation Handling • Correlation and Async processes• Extending WSO2 BPS
  3. 3. What is BPEL• An OASIS standard executable language for business processes• More or less a service composition language• Enables composition of (business) services into business processes• XML based language
  4. 4. Why Automate Business Processes• Increase Efficiency • No need to worry about the coordination of the process• Improve Responsiveness • Business processes are agile • Improve the process • Adapt to the change of business needs
  5. 5. Business Process wrt BPELBusiness Process is a collection of coordinatedservice invocations and related activities thatproduce a result, either within a single organizationor across several organizations
  6. 6. Why BPEL• Agility • No need to worry about low level programming stuff. • Native support for long running processes• Compose larger business processes out of smaller processes and services• Handle message-related and time-related events• Industry standard language for expressing business processes• Leverage common skill set
  7. 7. Why BPEL• Portability• Managed execution • Monitor the progress of the process • Start, stop, suspend, resume process instance
  8. 8. WSO2 Business Process Server• Executes business processes written using WS- BPEL standard• Powered by Apache ODE• Provide a web-based management console • Deploy processes • Manage and view business processes • Manage and view process instances • Configure QoS and many more…
  9. 9. Why WSO2 BPS• WSO2 Carbon Studio – BPEL Editor • Drag and drop process modeler • Native BPEL support • XPath editor • Deploy processes to WSO2 BPS• Support both BPEL4WS 1.1 and WS-BPEL 2.0• Graphical Management Console to: • Deploy and manage business processes • Manage and monitor process instances • Configure QoS perameters
  10. 10. Why WSO2 BPS• Process dehydration• Process versioning• Follow open standards – avoid vender lock-in• Support XQuery and Xpath, XSLT• Support BPEL Extensions• Features from WSO2 Carbon
  11. 11. Want to implement Business Processes?• What you should already know • XML • XML Namespaces • XML Schema • WSDL • XPath • XSLT and XQuery (optional)
  12. 12. Introduction to BPEL• BPEL Concepts• Activities • Basic Activities • Structured Activities• HelloWorld sample process
  13. 13. BPEL Concepts
  14. 14. Partner Links• Defines the “Contact channels” between external world (clients/partner services)
  15. 15. Partner Links• Associates interfaces (WSDL ports) with roles, using PartnerLinkTypes
  16. 16. PartnerLinkType• Characterizes the conversational relationship between two services• Define the roles played by each of the services in the conversation <plnk:partnerLinkType name="BuyerSellerLink"> <plnk:role name="Buyer" portType="buy:BuyerPortType" /> <plnk:role name="Seller" portType="sell:SellerPortType" /> </plnk:partnerLinkType>
  17. 17. PartnerLynkType Buyer Seller Buyer Seller Invoke Invoke Seller Seller Send response to Buyer’s Process Partner Process Partner Callback Service Service Async Sync
  18. 18. Partner Link• Associates with a partnerLinkType <partnerLinks> <partnerLink name=“BuyerSellerPL” partnerLinkType=“BuyerSellerLink” myRole=“Buyer” partnerRole=“Seller”/> </partnerLinks>• Defines which role should be played by the process itself and the partner service
  19. 19. Variables and Data Manipulation• Variables • Statically typed(via WSDL Messages, XSD elements and XSD types)• Assigning values to variables • When message is received from a partner • Manipulate variables inside <assign> activity • Require knowledge about XPath, XQuery, XSLT
  20. 20. Activities in BPEL• Basic Activities• Structured Activities
  21. 21. Basic Activities• Receive • Compensate• Reply • Catch• Invoke • Throw• Assign • Rethrow• Wait • Exit• Empty
  22. 22. Receive• Act as the entry point to the business process• Receives messages from an external partner• Associated with • PartnerLink with myRole • WSDL operation • Variable for the incoming message• createInstance="yes" to create a new process instance, otherwise the incoming message will be consumed by the (already running) process instance
  23. 23. Reply• Sends the response back to the client• Always relates to a “receive” activity• Associated with • Same PartnerLink for the “receive” • Same operation for the “receive” • Variable for the output message
  24. 24. Invoke• Used to consume partner services• Associated with • PartnerLink with at least a “partnerRole” • WSDL operation of the partner service • Input variable • Output variable, if the operation is request- response
  25. 25. Assign• Used to manipulate variables
  26. 26. Initializing Variables• Variables contain a piece of XML• Manipulated using Xpath• XPath is evaluated on XML• The variable should be initialized before copying values to the internal elements.
  27. 27. What we wantmyProfile = <profile> <name>Waruna</name> </profile>
  28. 28. What we got• String variable “name” – “Waruna”• Variable “myProfile” – “”• “myProfile” variable should be initialized before copying the “name” variable into the “name” element of “myProfile” variable• $myProfile/profile/name
  29. 29. Initialization• myProfile = <profile> <name></name> </profile>• Then copy the “name” into “name” element of the “myProfile” variable.• $myProfile/profile/name
  30. 30. Activities in BPEL• Basic Activities• Structured Activities
  31. 31. Structured Activities• Sequence• Flow• While• RepeatUntil• ForEach• If• Pick• Scope
  32. 32. Sequence• Contained activities will be executed in an ordered manner
  33. 33. Flow• Execute contained activities in parallel
  34. 34. Looping• While, RepeatUntil, ForEach• Provides repeated execution of the contained activity
  35. 35. If• Provides conditional behavior
  36. 36. Pick• Waits for the occurrence of exactly one event from a set of events. • OnMessage • OnAlarm
  37. 37. Scope• Group activities into logical scopes • Variables • Partner Links • Fault Handlers and Compensation Handlers
  38. 38. HelloWorld Sample
  39. 39. HelloWorld Sample
  40. 40. Advanced Concepts• Fault Handling• Compensation• Correlation and Async processes• Extending WSO2 BPS
  41. 41. Fault Handling• Exceptional condition that can alter the normal processing of a business process.• Fault need not result in an immediate process ending.• If a fault is not handled, it will lead to unexpected conditions and outcomes.• Handle faults, so that failures lead to predictable outcomes.
  42. 42. Activities for Handling Faults• Catch• CatchAll• Rethrow• Throw
  43. 43. Catch/CatchAll• BPEL specific runtime faults• SOAP faults • Standard SOAP faults • Application specific SOAP faults• After catching a fault • Try to correct • Throw a new fault • Rethrow the fault • Reply with a fault message
  44. 44. Catch/CatchAll• Handle different types of faults in different ways.• Multiple catch statements to catch different types of faults.• CatchAll activity to handle any type of Fault.
  45. 45. Rethrow• If the current fault handler cannot handle the fault• Propagate the fault to an outer-scoped fault handler• Available only within a fault handler
  46. 46. Throw• Indicates a problem that a business process flow cannot handle• Can be used any where within the process• Can be thrown • Standard BPEL faults • Custom faults• Variable can be associated to send fault information
  47. 47. Fault Handlers Attached to Invoke Activity• Handle faults specific to Invoke activity • SOAP faults
  48. 48. Fault Handlers attached to Scope• Catches faults resulting from activities within a scope.
  49. 49. Global Fault Handler• Last place for a fault to be captured.• Faults propagate from the inner scopes to the outer scopes
  50. 50. Fault Types in Invoke Activity• Faults • BPEL standard faults • SOAP faults• Failures • Connection refused • Service not found
  51. 51. Fault Handling Sample
  52. 52. Compensation• Undoing the steps in business process that have been already completed
  53. 53. Activities for Compensation Handling• compensationHandler – defines the compensation logic per each scope• compensateScope and compensate - used to trigger the compensationHandler.
  54. 54. Compensation Handling Sample
  55. 55. Asynchronous Invocation• What Asynchrony is.• Different asynchronous transport protocols eg – JMS, SMTP, XMPP• Modeling asynchronous behavior in WSDLs eg – by two one-way operations
  56. 56. Asynchronous Invocations in BPELs• Invoke activity to invoke the partner-service• Receive activity to act as the call-back handler• So how these two messages get correlated?
  57. 57. Message Correlation• Building block for stateful conversations in BPELs• Determine to which conversation a message belongs
  58. 58. Message Correlation Sets• correlationSet - defines the element(s) in message to act as a unique-id for each message• correlation - handles the message correlation between each conversation
  59. 59. Correlation sample
  60. 60. Extending WSO2 BPS• BPEL extensions • Enable to define new BPEL activities • peopleActivity for BPEL4People• BPEL event listeners • Enables to listen to events fired by BPEL engine • Gather information for BAM• Message exchange interceptors • Enables to intercept through the message exchanges• XPath extensions
  61. 61. Q&A