Introduction and Advanced Concepts of BPEL Denis Weerasiri & Waruna Ranasinghe
Nov 22, 2014
Introduction and Advanced
Concepts of BPEL
Denis Weerasiri & Waruna Ranasinghe
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
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
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
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
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
Why BPEL
• Portability
• Managed execution
• Monitor the progress of the process
• Start, stop, suspend, resume process instance
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…
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
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
Want to implement Business Processes?
• What you should already know
• XML
• XML Namespaces
• XML Schema
• WSDL
• XPath
• XSLT and XQuery (optional)
Introduction to BPEL
• BPEL Concepts
• Activities
• Basic Activities
• Structured Activities
• HelloWorld sample process
BPEL Concepts
Partner Links
• Defines the “Contact channels” between
external world (clients/partner services)
Partner Links
• Associates interfaces (WSDL ports) with roles,
using PartnerLinkTypes
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>
PartnerLynkType
Seller Buyer
Process Partner Service
Invoke Seller
Send response to Buyer’s Callback
Seller Buyer
Process Partner Service
Invoke Seller
Async Sync
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
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
Activities in BPEL
• Basic Activities
• Structured Activities
Basic Activities
• Receive
• Reply
• Invoke
• Assign
• Wait
• Empty
• Compensate
• Catch
• Throw
• Rethrow
• Exit
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
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
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
Assign
• Used to manipulate variables
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.
What we want
myProfile =
<profile>
<name>Waruna</name>
</profile>
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
Initialization
• myProfile =
<profile>
<name></name>
</profile>
• Then copy the “name” into “name” element of
the “myProfile” variable.
• $myProfile/profile/name
Activities in BPEL
• Basic Activities
• Structured Activities
Structured Activities
• Sequence
• Flow
• While
• RepeatUntil
• ForEach
• If
• Pick
• Scope
Sequence
• Contained activities will be executed in an
ordered manner
Flow
• Execute contained activities in parallel
Looping
• While, RepeatUntil, ForEach
• Provides repeated execution of the contained
activity
If
• Provides conditional behavior
Pick
• Waits for the occurrence of exactly one event
from a set of events.
• OnMessage
• OnAlarm
Scope
• Group activities into logical scopes
• Variables
• Partner Links
• Fault Handlers and Compensation Handlers
HelloWorld Sample
HelloWorld Sample
Advanced Concepts
• Fault Handling
• Compensation
• Correlation and Async processes
• Extending WSO2 BPS
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.
Activities for Handling Faults
• Catch
• CatchAll
• Rethrow
• Throw
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
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.
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
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
Fault Handlers Attached to Invoke Activity
• Handle faults specific to Invoke activity
• SOAP faults
Fault Handlers attached to Scope
• Catches faults resulting from activities within a
scope.
Global Fault Handler
• Last place for a fault to be captured.
• Faults propagate from the inner scopes to the
outer scopes
Fault Types in Invoke Activity
• Faults
• BPEL standard faults
• SOAP faults
• Failures
• Connection refused
• Service not found
Fault Handling Sample
Compensation
• Undoing the steps in business process that have
been already completed
Activities for Compensation Handling
• compensationHandler – defines the compensation
logic per each scope
• compensateScope and compensate - used to
trigger the compensationHandler.
Compensation Handling Sample
Asynchronous Invocation
• What Asynchrony is.
• Different asynchronous transport protocols
eg – JMS, SMTP, XMPP
• Modeling asynchronous behavior in WSDLs
eg – by two one-way operations
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?
Message Correlation
• Building block for stateful conversations in BPELs
• Determine to which conversation a message
belongs
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
Correlation sample
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
Q & A