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
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. 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. 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. Business Process wrt BPEL
Business Process is a collection of coordinated
service invocations and related activities that
produce a result, either within a single organization
or across several organizations
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. Why BPEL
• Portability
• Managed execution
• Monitor the progress of the process
• Start, stop, suspend, resume process instance
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. 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. 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. Want to implement Business Processes?
• What you should already know
• XML
• XML Namespaces
• XML Schema
• WSDL
• XPath
• XSLT and XQuery (optional)
12. Introduction to BPEL
• BPEL Concepts
• Activities
• Basic Activities
• Structured Activities
• HelloWorld sample process
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. PartnerLynkType
Buyer Seller Buyer Seller
Invoke Invoke
Seller Seller
Send
response to
Buyer’s
Process Partner Process Partner
Callback
Service Service
Async Sync
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. 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
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. 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. 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
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.
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. Initialization
• myProfile =
<profile>
<name></name>
</profile>
• Then copy the “name” into “name” element of
the “myProfile” variable.
• $myProfile/profile/name
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.
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. 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. 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. 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. Fault Handlers Attached to Invoke Activity
• Handle faults specific to Invoke activity
• SOAP faults
53. Activities for Compensation Handling
• compensationHandler – defines the compensation
logic per each scope
• compensateScope and compensate - used to
trigger the compensationHandler.
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. 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. Message Correlation
• Building block for stateful conversations in BPELs
• Determine to which conversation a message
belongs
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
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