BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

41

Transcript of BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Page 1: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.
Page 2: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

BPEL: Building Standards-Based Business Processes with Web Services

Session id: 40024

Page 3: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Web Services Meet Business Processes

Web Service 1

Web Service 2

Web Service 3

Web Service 4

Web Service 5

Web Service n

Page 4: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Example Problem Space

ClientPO Service

Credit Service

Inventory Service

Purchase Order

Credit

Check

ReserveInventory

Credit

Response

InventoryResponse

InvoiceConsolidate

Results

Page 5: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Business Process Challenges

Coordinate asynchronous communication between services

Correlate message exchanges between parties

Implement parallel processing of activities

. . .

Manipulate/transform data between partner interactions

Support for long running business transactions and activities

Provide consistent exception handling

. . .

Page 6: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Recent History of Business Process Standards

2000/05

XLang(Microsoft)

2001/03

BPML(Intallio et al)

2001/05

WSFL(IBM)

2001/06

BPSS(ebXML)

2002/03

BPEL4WS 1.0 (IBM, Microsoft)

BPEL4WS 1.1(OASIS)

2002/06 2003/01

WS-Choreography(W3C)

2003/04

WSCI(Sun et al)

WSCL(HP)

2002/08

Page 7: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Orchestration vs Choreography

Orchestration– An executable business process describing a

flow from the perspective and under control of a single endpoint (commonly: Workflow)

Choreography– The observable public exchange of messages,

rules of interaction and agreements between two or more business process endpoints

Page 8: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Sample Business Process: Purchase Order

Sample Purchase Order

Purchase Order Request

Purchase Order Acknowledgement

Purchase Order Response

Business

“A”Business

“B”

Page 9: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

From a Choreography Perspective

PO Request

Send PO

Receive PO Ack

Receive PO Response

Receive PO

Send PO Ack

Send PO Response

PO Acknowledgement

PO Response

Choreography – The observable public exchange of messages

Public Process

Business A Business B

Page 10: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

From an Orchestration Perspective

Send PO

Receive PO Ack

Receive PO Response

Transform

Transform

From ERP

To ERP

PO Request

PO Acknowledgement

PO Response

Orchestration – A private executable business process

Private Process

Business A BPEL Workflow

Page 11: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Orchestration and Choreography Together

BusinessB

Business Analyst Tool

BusinessA

Send PO

Receive PO Ack

Receive PO Response

Transform

Transform

Business A BPEL Workflow

PO Request

PO Acknowledgement

PO Response

Generate BPEL Template

Generate BPEL Template

Receive PO

Send PO Ack

Receive PO Response

Transform

Transform

Business B BPEL Workflow

Two BPEL workflow templates reflecting a business agreement

Page 12: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Business Process Execution Language for Web Services

• Version 1.0 released by IBM, Microsoft and BEA in August 2002

• Accompanied by WS-Coordination, WS-Transaction which remain unsubmitted to standards bodies

• Version 1.1 submitted to OASIS April 2003

• XML language for describing business processes based on Web services

• Convergence of XLANG (Microsoft) and WSFL (IBM)

• Unprecendented industry consensus• IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel …

Page 13: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Value Proposition

Portable business processes– Built on top of an interoperable infrastructure of

Web services

Industry wide language for business processes– Common skill set and language for developers

Choice of process engines– Standards lead to competitive offerings

Page 14: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Standards Building Blocks of BPEL

Description

HTTP,IIOP, JMS, SMTP Transport

XMLMessage

SOAP

WSDL

UDDI Discovery

Transactions

CoordinationWS-SecurityWS-ReliabilityQuality ofService

Orchestration - BPEL4WS

BusinessProcesses

Context

Description

Man

agem

ent

Choreography - CDL4WS

Page 15: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

BPEL Depends on WSDL and WSDL Extensions

Service Implementation

Definition

Service Interface Definition

Service

Port

Binding

Port types define Operations

Message

Type

Page 16: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

BPEL Scenario Structure<process> <!– Definition and roles of process participants -->

<partnerLinks> ... </partnerLinks> <!- Data/state used within the process --> <variables> ... </variables> <!- Properties that enable conversations --> <correlationSets> ... </correlationSets> <!- Exception handling --> <faultHandlers> ... </faultHandlers>

<!- Error recovery – undoing actions --> <compensationHandlers> ... </compensationHandlers> <!- Concurrent events with process itself --> <eventHandlers> ... </eventHandlers> <!- Business process flow --> (activities)*</process>

Page 17: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

BPEL Activities

Primitive Activities <invoke> <receive> <assign> <reply> <throw> <terminate> <wait>

Structured Activities <sequence> <switch> <pick> <flow> <link> <while> <scope>

Page 18: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Partners

Declare the Web services and roles used by the process

Tied to WSDL of the process itself and the participating Web services by service link types

CreditService

Partner 2

InventoryService

Partner 3Partner 1(the process)

PurchaseService

Page 19: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Partners in BPEL

<partnerLinks> <partnerLink name=“customer" serviceLinkType=“lns:purchasePLT”

myRole=“purchaseService”/> <partnerLink name=“inventoryChecker” serviceLinkType=“lns:inventoryPLT”

myRole=“inventoryRequestor” partnerRole=“inventoryService”/> <partnerLink name=“creditChecker” serviceLinkType=“lns:creditPLT” myRole=“creditRequestor” partnerRole=“creditService”/></partnerLinks>

<plt:partnerLinkType name=“purchasePLT”> <plt:role name=“purchaseService”> <plt:portType name=“tns:purchasePT”/> </plt:role></plt:partnerLinkType>

Purchase Process WSDL:

BPEL:

<portType name=“purchasePT”> <operation name="sendPurchase"> </operation></portType>

Purchase Process PortType:

Page 20: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Variables

Messages sent and received from partners– Persisted for long running interactions– Defined in WSDL types and messages

CustomerService

Process

<A>

<variable> <activity>

<B>

<activity>

PersistPersist/Retrieve

CustomerService

Persist/Retrieve

Persist/Retrieve

<variable>

Page 21: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Variables in BPEL

<variables> <variable name=“PO” messageType=“lns:POMessage”/> <variable name=“Invoice” messageType=“lns:InvMessage”/> <variable name=“POFault” messageType=“lns:orderFaultType”/></variables>

<message name=“POMessage”> <part name=“customerInfo” type=“sns:customerInfo”/> <part name=“purchaseOrder” type=“sns:purchaseOrder”/></message><message name="InvMessage"> <part name=“IVC” type=“sns:Invoice”/></message><message name=“orderFaultType”> <part name=“problemInfo” type=“xsd:string”/></message>

Purchase Process WSDL:

BPEL:

Page 22: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

How is Data Manipulation Done?

Using <assign> and <copy>, data can be copied and manipulated between variables

<copy> supports XPath queries to sub-select data

<assign> <copy> <from variable="PO" part="customerInfo"/> <to variable=“creditRequest” part="customerInfo"/> </copy></assign>

Page 23: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Simple Activities

Receive– Wait for a partner inbound message– Can be the instantiator of the business process

Reply– Synchronous response to a receive activity– Response to the inbound receive from a partner

Invoke– Issue a request synchronously *or* asynchronously

Pick– Specify an inbound set of messages– Can be the instantiator of the business process– Activity completes when one of the messages arrives

Page 24: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Simple Activities Combined with Structured Activities

Invoke <InventoryService> Invoke <CreditService>

Reply <Invoice>

Receive <PO> <sequence>

<flow>

</sequence>

Page 25: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Sample Activities in BPEL<sequence> <receive partnerLink=“customer” portType=“lns:purchaseOrderPT" operation=“sendPurchaseOrder” variable=“PO” createInstance="yes" /> <flow> <invoke partnerLink=“inventoryChecker” portType=“lns:inventoryPT” operation="checkINV" inputVariable="inventoryRequest" outputVariable="inventoryResponse" />

<invoke partnerLink="creditChecker" portType=“lns:creditPT" operation="checkCRED" inputVariable="creditRequest" outputVariable="creditResponse" /> </flow> ... <reply partnerLink=“customer” portType=“lns:purchaseOrderPT” operation=“sendPurchaseOrder” variable=“invoice"/></sequence>

Page 26: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

<flow> <links> <link name="XtoY"/> <link name="CtoD"/> </links> <sequence name="X"> <source linkName="XtoY"/> <invoke name="A" .../> <invoke name="B" .../> </sequence> <sequence name"Y"> <target linkName="XtoY"/> <receive name="C"/> <source linkName="CtoD"/> </receive> <invoke name="E" .../> </sequence> <invoke partnerLink="D"> <target linkName="CtoD"/> </invoke></flow>

<flow>

</flow>

<Y>

<C>

<E>

<X>

<A>

<B>

<D>

<link CtoD>

Links – Control Flow

<link XtoY>

Page 27: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Correlation

Customer

• SendPurchase

• ProcessPurchaseResponse

PO

Correlation:<PO_CustId = 10><PO_OrdId = 100>

POResponse

Correlations:<PO_CustId = 10><PO_OrdId = 100>

<Inv_VendId = 20><Inv_InvId = 200>

Seller

• AsynchPurchase

• AsynchPurchaseResponse

initiate=yes

initiate=yes pattern=out

initiate=no pattern=out

initiate=yes

initiate=yes

initiate=no

Page 28: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Correlations in BPEL<correlationSets> <correlationSet name="POCorr" properties="cor:custId cor:ordId"/> <correlationSet name="InvoiceCorr" properties="cor:vendId cor:invId"/></correlationSets> ...

<receive partnerLink=“Customer” portType="SP:PurchaseOrderPT"

operation="AsynchPurchase" variable="PO"> <correlations> <correlation set="POCorr" initiate="yes"> </correlations></receive> ...

<invoke partnerLink=“Customer” portType="SP:CustomerPT"

operation=“ProcessPurchaseResponse" inputVariable="POResponse"> <correlations> <correlation set="POCorr" initiate="no" pattern="out">

<correlation set="InvoiceCorr" initiate="yes" pattern="out"> </correlations></invoke> ...

Page 29: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Scopes in BPEL

Provide a shared context for subset of activities

Can contain – fault handlers– event handlers, – compensation handler

variables– correlation sets

Can serialize concurrentaccess to variables

<scopevariableAccessSerializable="yes|no“ ...>

<variables></variables>

<correlationSets>? ... </correlationSets>

<faultHandlers></faultHandlers>

<compensationHandler>? ... </compensationHandler>

<eventHandlers></eventHandlers> (activities)*

</scope>

Page 30: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Long Running Transactions and Compensation

Undo

ReserveInventory

<scope>

</scope>

• ReserveInventory• CancelReserveInv

InventoryService

• CheckCredit• ChargeHoldFee• CancelHoldFee

CreditService

Undo

ChargeHold Fee

Page 31: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Compensation Handlers in BPEL

<scope> <compensationHandler> <invoke partnerLink="Seller" portType="SP:Purchasing" operation="CancelPurchase" inputVariable="getResponse" outputVariable="getConfirmation"> <correlations> <correlation set="PurchaseOrder" pattern="out"/> </correlations> </invoke> </compensationHandler> <invoke partnerLink="Seller" portType="SP:Purchasing" operation="SyncPurchase" inputVariable="sendPO" outputVariable="getResponse"> <correlations> <correlation set="PurchaseOrder" initiate=“yes” pattern="out"/> </correlations> </invoke></scope>

Page 32: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Exception Handling in BPEL

<faultHandlers> catch exception– Based on WSDL port defining fault

<faultHandlers> can perform activities upon invocation

<faultHandlers> <catch faultName="lns:cannotCompleteOrder"

faultVariable="POFault"> <reply partnerLink="customer" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="POFault" faultName="cannotCompleteOrder"/> </catch></faultHandlers>

Page 33: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Just Show Me How to Do it!

PartnerWSDL 1

ProcessWSDL

PartnerWSDL n

. . .

BPEL Scenario

<process> <partners> <variables> <sequence> <flow> </sequence></process>

1. Compile2. Package3. Deploy

ApplicationServer

BPEL Runtime

CompiledBPEL Scenario

Page 34: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Tooling Requirements

IDE – build your Web services WSDL authoring – model your interfaces Schema authoring – model your messages Process modeling – model your orchestration Packaging and deployment Debugging Monitoring Analyzing

Page 35: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

What Happened to Java?

JSR 207 - Process Definition Language for Java

Make business processes natural for Java programmers

MessagingTransactions PoolingNamingSecurity

Application Server

Servlet EJB

Process Definition for Java

Based on JSR 207 Session at JavaOne 2003

Page 36: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

What Happened to J2EE?

JSR 208 – Java Business Integration Make business processes a first class citizen

in J2EE containers

Based on JSR 208 Session at JavaOne 2003

. . .RoutingEngine

TransformEngine

BPELEngine

NormalizedMessage Bus

JSR 208Binding SPIEDI JCA

WebServices

JMS . . .

Binding Framework

JSR 208Machine SPI

Page 37: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Oracle’s Strategy

Oracle Application Server Containers for J2EE 10g– BPEL runtime

Oracle JDeveloper 10g– BPEL design time

Oracle Application Server ProcessConnect 10g– Web service, B2B and EAI integration

Page 38: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Remember BPEL Does Not Solve “World Hunger”

No data transformation No data translation (EDI, binary formats …) No human workflow No trading partner agreements Silent on existing business protocols (ebXML,

RosettaNet …) Silent on non Web service interactions (e.g. java to

java)

. . .

Page 39: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

But Remember: People Are Trying to Solve “World Hunger”

W3C: WS-Choreography Spec: WS-Transaction Spec: WS-Coordination Spec: WS-Composite Application Framework OASIS: WS-Reliability Spec: ReliableMessaging Spec: WS-Addressing OASIS: WS-Security …

Page 40: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.

Parting Thoughts

Business process portability?– Java/J2EE is portable across application servers– BPEL is portable independent of Java

Programming language in XML?– Vendors, big and small, are busy building design

times and modelers…

Is BPEL in 2003/2004 J2EE in 1998? – Much missing but compelling foundation

Page 41: BPEL: Building Standards- Based Business Processes with Web Services Session id: 40024.