Introduction and Advanced Concepts of BPEL

Post on 22-Nov-2014

4,059 views 0 download

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 extensions

transcript

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