BPEL Business Process Execution Language presented by Cagdas
BPEL (Business Process Execution Language) presented by Cagdas E. Gerede 01/24/06 Web Services and Security Seminar UC-Santa Barbara Adaptation from Nirmal Mukhi’s slides
Business Process Execution Language • enables: – Definition of Business Processes using Web Services – Coordination of a set of Web service interactions – Degree of interoperability at the process level (describe process and use it in different runtime infrastructures) • where it comes from: – Builds on XML and Web Services – Convergence of two workflow languages (WSFL – directed graphs; XLANG – block-structured language)
Orchestration
Versions • v 1. 0 - BPEL 4 WS - August 2002 • v 1. 1 – March 2003 • v 2. 0 – Draft - WSBPEL – OASIS – (some issues discussed): • how to use XPath • whethere should be sub-processes in BPEL • how abstract processes should be used
Simple Example Composite Service - Orchestrated by BPEL
Traditional Flow Models Control links define execution flow as a directed acyclic graph Flow of data is explicitly modeled through data links. Activities represent units of processing. Activities are mapped to application invocations or human actions
Structure of a BPEL 4 WS Process <process. . . > <partners>. . . </partners> <!-- Web services the process interacts with --> <containers>. . . </containers> <!– Data used by the process --> <correlation. Sets>. . . </correlation. Sets> <!– Used to support asynchronous interactions --> <fault. Handlers>. . . </fault. Handlers> <!–Alternate execution path to deal with faulty conditions --> <compensation. Handlers>. . . </compensation. Handlers> <!–Code to execute when “undoing” an action --> (process body) <!– What the process actually does --> </process>
BPEL Basic Activities <invoke partner=“. . . ” port. Type=“. . . ” operation=“. . . ” input. Container=“. . . ” output. Container=“. . . ”/> <!-- process invokes an operation on a partner: --> <receive partner=“. . . ” port. Type=“. . . ” operation=“. . . ” container=“. . . ” [create. Instance=“. . . ”]/> <!-- process receives invocation from a partner: --> <reply partner=“. . . ” port. Type=“. . . ” operation=“. . . ” container=“. . . ”/> <!-- process send reply message in partner invocation: --> <assign> <copy> <from container=“. . . ”/> <to container=“. . . ”/> </copy>+ </assign> <!– Data assignment between containers: -->
BPEL and WSDL Partners Partner B Partner A WSDL A Process Synchronous Communication
BPEL and WSDL. Partners Partner B Partner A WSDL A Asynchronous Communication
Partner Definitions and Links <partner name=“. . . ” service. Link. Type=“. . . ” partner. Role=“. . . ” my. Role=“. . . ”/> <!– A partner is accessed over a WS “channel”, defined by a service link type --> <service. Link. Type name=“. . . "> <role name=“. . . "> <port. Type name=“. . . "/>* </role> <role name=“. . . "> <port. Type name=“. . . ”/>* </role> </service. Link. Type> <!– A SLT defines two roles and the port. Types that each role needs to support -->
More Basic Activities <throw fault. Name=“. . . " fault. Container=“. . . “/> <!-- process detects processing error and switches into fault processing mode --> <terminate/> <!– pull the plug --> <wait for=“. . . ”? until=“. . . ”? /> <!-- process execution stops for a specified amount of time--> <empty> <!– Do nothing; a convenience element -->
BPEL Structured Activities <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 between a source activity and a target -->
Nesting Structured Activities. Example <sequence> <receive. . . /> <flow> <sequence> <invoke. . . /> <while. . . > <assign>. . . </assign> </while> </sequence> <receive. . . /> <invoke. . . > </sequence> </flow> <reply> </sequence> Seq Flow Seq While Seq
BPEL Critique • No notion of independent activities everything in a BPEL is a web service operation, not "an activity", i. e. a unit of work • No human interaction modeling • Interacting activities interacting together twoby-two (multiple BPEL documents for a single process) • BPEL can only represent multi-party collaboration that have a "center" of control. (Ariba/Commerce. One - some B 2 B agent in the middle)
- Questions -
Resources • BPEL 4 WS 1. 0: – http: //www 106. ibm. com/developerworks/webservices/library/ws -bpel/ • BPWS 4 J Java Implementations: – http: //www. alphaworks. ibm. com/tech/bpws 4 j – http: //www. collaxa. com/ • Two introductions to BPEL: – http: //www. ibm. com/developerworks/webservices/li brary/ws-bpelcol 1 – http: //www. ibm. com/developerworks/webservices/li brary/ws-bpelwp/
- Slides: 18