d06 bpel v3

32
Business Process Execution Language

Upload: qqq8

Post on 02-Jul-2015

272 views

Category:

Design


0 download

TRANSCRIPT

Page 1: D06 bpel v3

Business Process Execution Language

Page 2: D06 bpel v3

Web Services: BPEL 2

Business Process Execution Language Define business processes as coordinated sets of Web

service interactions Define both abstract and executable processes Enable the creation of compositions of Web services Where it comes from:

Strong roots in traditional flow models Concepts from structured programming languages On top of WSDL and core XML specifications Merges WSFL and XLANG concepts

The OASIS WS BPEL Technical Committee is advancing the BPEL4WS Specification

Page 3: D06 bpel v3

Web Services: BPEL 3

ReceivePurchase

Order

ArrangeLogistics Complete

ProductionScheduling

CompletePrice

Calculation

DecideOn

Shipper

InitiateProductionScheduling

InitiatePrice

Calculation

InvoiceProcessing

Production Scheduling portType

ShippingServicesportType

InvoiceServicesportType

PurchaseOrder

portType

BPEL & WSDL

Page 4: D06 bpel v3

Web Services: BPEL 4

ReceivePurchase

Order

ArrangeLogistics Complete

ProductionScheduling

CompletePrice

Calculation

DecideOn

Shipper

InitiateProductionScheduling

InitiatePrice

Calculation

InvoiceProcessing

Production Scheduling portType

ShippingServicesportType

InvoiceServicesportType

PurchaseOrder

portType

BPEL & WSDL

operation

message

Page 5: D06 bpel v3

Web Services: BPEL 5

ReceivePurchase

Order

ArrangeLogistics Complete

ProductionScheduling

CompletePrice

Calculation

DecideOn

Shipper

InitiateProductionScheduling

InitiatePrice

Calculation

InvoiceProcessing

Production Scheduling portType

ShippingServicesportType

InvoiceServicesportType

PurchaseOrder

portType

BPEL & WSDL

operation

message

<portType name=“schedulingPT” <operation name=“requestProductionScheduling”>

<input message=“pos:POMessage”/></operation><operation name=“sendShippingSchedule”>

<input message=“pos:scheduleMessage”/></operation>

</portType>

Page 6: D06 bpel v3

Web Services: BPEL 6

Structure of a BPEL Process

Web services the process interacts with

Data used by the process Used to support asynchronous

interactions Alternate execution path to deal

with faulty conditions Code to execute when “undoing”

an action What the process actually does

<process ...>

<partners> ... </partners><containers> ... </containers><correlationSets> ...</correlationSets><faultHandlers> ...</faultHandlers><compensationHandlers> ...</compensationHandlers>

(activities)*

</process>

Page 7: D06 bpel v3

Web Services: BPEL 7

BPEL and WSDL Partners

Partner A

WSDL A

Partner B

Process

WSDL

Page 8: D06 bpel v3

Web Services: BPEL 8

Partner A

WSDL A

Partner B

Service Link Type

BPEL and WSDL Partners

Page 9: D06 bpel v3

Web Services: BPEL 9

Partner LinksPartner links are used to represent interactions

between a service and each of the parties with which it interacts

Partner links define the messages and port types used in the interactions in both directions, along with role names

Page 10: D06 bpel v3

Web Services: BPEL 10

A partner is accessed over a WS “channel”, defined by a service link type

A SLT defines two roles and the portTypes that each role needs to support

Partner Definitions and Links

<partner name=“...” serviceLinkType=“...” partnerRole=“...” myRole=“...”/>

<serviceLinkType name=“...”><role name=“...">

<portType name=“...” />*</role><role name=“...”>

<portType name=“...”/>*</role>

</serviceLinkType>

Page 11: D06 bpel v3

Web Services: BPEL 11

“Shipping” partner link

“Invoicing” partner link

“Scheduling” partner link

“Purchasing” partner link

<partnerLink name="scheduling" partnerLinkType="lns:schedulingLT"

partnerRole="schedulingService"/>

<plnk:partnerLinkType name="schedulingLT"> <plnk:role name="schedulingService"> <plnk:portType name="pos:schedulingPT"/> </plnk:role> </plnk:partnerLinkType>

The portType used in the partner link

Partner Links

Page 12: D06 bpel v3

Web Services: BPEL 12

Activities represent units of processing

Flow of data is explicitly modeled through data links

Activities are mapped to application invocations or human actions

Control links define execution flow as a directed acyclic graph

Traditional Flow Models

Page 13: D06 bpel v3

Web Services: BPEL 13

BPEL Data Model

Assignment activities move data around

Activities input / output is kept in global variables

Globally scoped data variables typed as WSDL messages

<container name=“...” message=“...”/>*

Page 14: D06 bpel v3

Web Services: BPEL 14

Invokes an operation on a partner

Receives invocation from a partner

Sends a reply message in partner invocation

Data assignment between containers

<assign><copy>

<from container=“...”/> <to container=“...”/></copy>+

</assign>

BPEL Basic Activities

<invoke partner=“...” portType=“...” operation=“...”inputContainer=“...” outputContainer=“...”/>

<receive partner=“...” portType=“...” operation=“...” container=“...” [createInstance=“...”] />

<reply partner=“...” portType=“...” operation=“...” container=“...”/>

Page 15: D06 bpel v3

Web Services: BPEL 15

BPEL Composition of Web Services

Component A

A’s WSDL

Component B

Service Link Type

B’s WSDL

Process WSDL

Page 16: D06 bpel v3

Web Services: BPEL 16

Detects processing error and switches into fault processing mode

Pull the plug on this instance

Execution stops for a specified amount of time

Do nothing; a convenience element

More Basic Activities

<wait for=“...”? until=“...”? />

<throw faultName=“...” faultContainer=“...”/>

<terminate/>

<empty>

Page 17: D06 bpel v3

Web Services: BPEL 17

<sequence>execute activities sequentially

<flow>execute activities in parallel

<while>iterate execution of activities until condition is violated

<pick>several event activities (receive message, timer event) scheduled for execution in parallel; first one is selected and corresponding code executed

<link ...>defines a control dependency betweena source activity and a target

BPEL Structured Activities

Page 18: D06 bpel v3

Web Services: BPEL 18

FlowSeq Seq

Seq

While

<sequence><receive .../><flow>

<sequence><invoke ... /><while ... >

<assign> ... </assign></while>

</sequence><sequence>

<receive ... /><invoke ... />

</sequence></flow><reply ... />

</sequence>

Nesting Structured Activities: Example

Page 19: D06 bpel v3

Web Services: BPEL 19

Asynchronous Interactions in BPEL

BPEL can model many types of interactions: Simple stateless interactions Stateful, long running, asynchronous interactions

For the latter case, how to ensure that two (or more) messages are referring to the same “session” ?

Page 20: D06 bpel v3

Web Services: BPEL 20

Associating two or more messages with each other in an asynchronous environment

Done by associating contents in a given message with its correlating message

For example, in a purchase order/invoice scenario, the invoice may contain the corresponding purchase order number

<PurchaseOrder> <PurchaseOrderNumber> <PurchaseOrderDate> ........</PurchaseOrder>

Purchase Order:<Invoice>

<InvoiceNumber><InvoiceDate><PurchaseOrderNumber>........

</Invoice>

Invoice:

Message Correlation

common in both messages

Page 21: D06 bpel v3

Web Services: BPEL 21

Correlation Sets What is a correlation set?

A set of business data fields that capture the state of the interaction (“correlating business data”), e.g., a “purchase order number”, a “customer id”, etc.

Each set is initialized once Its values do not change in the course of the

interaction

CSs : the data used to maintain the state of the interaction (a “conversation”)

At the process end of the interaction, CSs allow incoming messages to reach the right process instance

Page 22: D06 bpel v3

Web Services: BPEL 22

A CS is a named set of properties. Properties are defined as WSDL extensibility elements

A property has a simple XSD type and a global name

Defining Correlation Sets

<correlationSet name=“...” properties=“...”/>

<bpws:property name=“...” type=“...” />

Page 23: D06 bpel v3

Web Services: BPEL 23

Properties A property is “mapped” to a field in a WSDL message

type

The property can thus be found in the messages actually exchanged

Typically a property will be mapped to several different message types and carried on many interactions, across operations and portTypes

<bpws:propertyAliaspropertyName=“...”messageType=“...” part=“...”query=“...” />

Page 24: D06 bpel v3

Web Services: BPEL 24

Using Correlation An input or output operation identifies which correlation

sets apply to the messages received or sent

That CS will be used to assure that the message is related to the appropriate stateful interaction

A CS is initialized once, in an interaction where the set appears with the “initiation” attribute set to “yes”. Its value may never be changed afterward

<receive partner=“...” operation=“...” portType=“...”container=“...”>

<correlations><correlation set=“PurchaseOrder” initiation=“yes”/>

</correlations></receive>

Page 25: D06 bpel v3

Web Services: BPEL 25

A customer ID and order number represent a unique purchase order

A vendor ID and invoice number represent a unique invoice

Example: Defining Correlation Sets

<correlationSet name=“PurchaseOrder” properties=“cor:customerID cor:orderNumber”/>

<correlationSet name=“Invoice” properties=“cor:vendorID cor:invoiceNumber”/>

Page 26: D06 bpel v3

Web Services: BPEL 26

Declares correlation between purchase order and invoice

Example: Using Correlation Sets

<invoke partnerLink=“Buyer” portType=“SP:BuyerPT” operation=“AsyncPurchaseResponse”inputVariable=“POResponse”>

<correlations> <correlation set=“PurchaseOrder”

initiate=“no” pattern=“out”> <correlation set=“Invoice”

initiate=“yes” pattern=“out”> </correlations>

</invoke>

Page 27: D06 bpel v3

Web Services: BPEL 27

BPEL Handlers and Scopes

scopeFault Handler

Compensation Handler

A scope is a set of (basic or structured) activities

Each scope can have two types of handlers associated:

Fault handlersMany can be attached,for different fault types

Compensation handlerA single compensation handler per scope

Page 28: D06 bpel v3

Web Services: BPEL 28

EB

D

C

Fault

A

Scope and Fault Example

Page 29: D06 bpel v3

Web Services: BPEL 29

How Handlers Work A fault handler defines alternate execution paths when

a fault occurs within the scope Typical scenario:

1. Fault is thrown (retuned by invoke or explicitly by process)2. Execution of scope is terminated3. Appropriate fault handler located (with usual propagation

semantics)4. Main execution is compensated to “undo” business effects of

unfinished work A compensation handler is used to reverse the work

performed by an already completed scope A compensation handler can only be invoked by the fault

handler or compensation handler of its immediate enclosing scope

Page 30: D06 bpel v3

Web Services: BPEL 30

Business processes are often of long duration, which means that a business process may need to be cancelled after many transactions have been committed during its progress

Consider a situation in which a user cancels a purchase order:

In this situation, it is not possible to lock system resources (ex: database records) for extended periods of time Therefore, the partial work must be undone as best as possible

Submit Purchase

Order

ProcessPurchase

Order

Check Inventory

Order From

Supplier

User Cancels!

Revert back to original state

Partial Work Unavoidable

Page 31: D06 bpel v3

Web Services: BPEL 31

Invoked to perform compensation activities — a “wrapper” for compensation activities:

Specifies a compensating operation on a given portType for a given partner link:

Compensation Handlers

<compensationHandler> <invoke partnerLink=“Seller”

portType=“SP:Purchasing” operation=“CancelPurchase” inputVariable=“getResponse” outputVariable=“getConfirmation”>

<correlations> <correlation set=“PurchaseOrder” pattern=“out”/> </correlations>

</invoke> </compensationHandler>

The CancelPurchase operation invokes a cancellation

The response to the purchase request is used as input

Page 32: D06 bpel v3

Web Services: BPEL 32

The relevant information about a partner service can be set up as part of business process deploymentThis is a more “static” approach

However, it is also possible to select and assign partner services dynamically

BPEL uses endpoint references defined in the WS-Addressing specification for this capabilityhttp://msdn.microsoft.com/ws/2003/03/ws-addressing

Dynamic Service Selection and Invocation

<wsa:EndpointReference xmlns:wsa=“...”><wsa:Address>http://www.someendpoint.com</wsa:Address> <wsa:PortType>PurchaseOrderPortType</wsa:PortType>

</wsa:EndpointReference>

PortType and Address assocation