introduction and advanced concepts of bpel
DESCRIPTION
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 extensionsTRANSCRIPT
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