SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
SOA-based Business Integration with Eclipse BPEL and Apache ODE
SOA-based Business Integration with Eclipse BPEL and Apache ODE
1.
SOA-basierte Business Integration mit Eclipse BPEL und Apache ODE Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
2.
About us Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) <ul><li>Tammo van Lessen, IAAS, Uni Stuttgart </li></ul><ul><ul><li>Research Associate @ IAAS </li></ul></ul><ul><ul><li>Committer @ Apache Software Foundation </li></ul></ul><ul><ul><li>PMC Member @ Apache ODE </li></ul></ul><ul><li>Simon Moser, IBM Corp. </li></ul><ul><ul><li>Software Architect @ IBM </li></ul></ul><ul><ul><li>Co-lead of the BPEL Designer Project </li></ul></ul><ul><ul><li>Member of the WS-BPEL Technical Committee at OASIS </li></ul></ul>
3.
The Talk Today <ul><li>Motivation & Background </li></ul><ul><li>WS-BPEL </li></ul><ul><ul><li>Concepts </li></ul></ul><ul><ul><li>Extensions </li></ul></ul><ul><li>Open Source BPEL Software </li></ul><ul><ul><li>Eclipse BPEL </li></ul></ul><ul><ul><li>Apache ODE </li></ul></ul><ul><li>Demo </li></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
4.
Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) BPEL Background & Motivation
5.
The Basis: Service Platform Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Messaging Quality of Service Transport Description Transports Interface + Bindings Composite XML Non-XML Security Policy Discovery, Negotiation, Agreement Atomic Orchestration Protocols State Components Reliable Messaging Transactions
6.
The Basis: Web Service Platform Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Messaging Quality of Service Transport Description HTTP, SMTP, XMPP, TCP/IP, FTP, Tuple Spaces,… WSDL Composite SOAP, WS-A JMS, RMI/IIOP WS-Security* WS-Policy* UDDI, WS-A, WS-MEX, WSIL Atomic BPEL WS-C, WS-CDL, BPEL4Chor WSRF Components WSRM WS-AT, WS-BA,…
7.
Why Orchestration? Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) ??? To achieve a business goal, you often need more than one service… Which to use, in which order, how to use them?
8.
Web Service Orchestration Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) BPEL!
9.
The Notion of Orchestration: Deja Vu Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Workflow Business Functions
10.
The Notion of Orchestration: Deja Vu Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Orchestration Web Services
11.
What is BPEL? <ul><li>Business Process Execution Language </li></ul><ul><ul><li>7/02 IBM & MS, 5/03 +BEA+SAP+Siebel, 4/07 OASIS Standard </li></ul></ul><ul><li>High-level programming language </li></ul><ul><li>Recursive Model </li></ul><ul><li>BPEL has native support for </li></ul><ul><ul><li>Long running processes </li></ul></ul><ul><ul><li>Scalability </li></ul></ul><ul><ul><li>Concurrency </li></ul></ul><ul><ul><li>Message and instance correlation </li></ul></ul><ul><ul><li>Fault handling </li></ul></ul><ul><ul><li>Compensation based recovery </li></ul></ul><ul><ul><li>Phoenix behaviour </li></ul></ul><ul><ul><li>Most important: BPEL is standard and supported the most important vendors. </li></ul></ul><ul><li>Defined Execution Semantics </li></ul><ul><li>Abstract Processes (protocols, “views” on internal processes) </li></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
12.
What is BPEL not? <ul><li>“ BPEL is block-structured only and therefore not usable for business users” </li></ul><ul><li>“ BPEL does not support multiple transport protocols” </li></ul><ul><ul><li>Look at WSDL </li></ul></ul><ul><li>“ BPEL interactions are only synchronous” </li></ul><ul><ul><li>Look at WSDL </li></ul></ul><ul><li>“ Look at this ugly XML, business people won’t understand this cumbersome stuff” </li></ul><ul><ul><li>Not meant to be hand-written, use tools! </li></ul></ul><ul><li>BPEL is not a modelling notation </li></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
13.
BPEL’s Foundation <ul><li>Web Services </li></ul><ul><ul><li>WSDL 1.1 – abstract part (concrete part ESB) </li></ul></ul><ul><ul><li>(SOAP) </li></ul></ul><ul><ul><li>(WS-Addressing) </li></ul></ul><ul><li>Flow Control </li></ul><ul><ul><li>Block structured (nested blocks) </li></ul></ul><ul><ul><li>Graph-based flows (using <flow>) </li></ul></ul><ul><li>Data Model </li></ul><ul><ul><li>W3C XML Schema 1.0 </li></ul></ul><ul><ul><li>XML InfoSet </li></ul></ul><ul><ul><li>XPath 1.0 </li></ul></ul><ul><ul><li>XSLT 1.0 </li></ul></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
14.
Variables & Data Manipulation <ul><li>No explicit data flow </li></ul><ul><li>Variables </li></ul><ul><ul><li>Shared variables, statically typed via WSDL messages, XSD elements or XSD types </li></ul></ul><ul><ul><li>“ Global” process variables and “local” scoped variables </li></ul></ul><ul><ul><li>(Strong type system) </li></ul></ul><ul><li>Assigning variable values </li></ul><ul><ul><li>By receiving a message from a partner service </li></ul></ul><ul><ul><li>By invoking a partner service and storing the result into a variable </li></ul></ul><ul><ul><li>Copying (parts) of variables into other variables </li></ul></ul><ul><ul><ul><li><assign> </li></ul></ul></ul><ul><ul><li>Drawbacks: Quite cumbersome, requires often XSLT </li></ul></ul><ul><ul><li>Look at E4X and BPELJ, XPath functions </li></ul></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
15.
Partner Links <ul><li>Partner Links / Partner Link Types </li></ul><ul><ul><li>Partner Links define “contract channels” between partners </li></ul></ul><ul><ul><li>Mutual call-back dependency </li></ul></ul><ul><ul><li>Associates interfaces (pTs) with roles </li></ul></ul><ul><ul><li>Partner Links define which partner takes which role </li></ul></ul><ul><ul><li>Key concept to enable asynchronous messaging! </li></ul></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
16.
Partner Links Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) process partner link partner link type Peer-to-peer conversational partner relationship WSDL port type myRole Provided port type WSDL port type partnerRole Required port type receive Inbound request – service provided by the process invoke Outbound request – service required by the process “ I expect from my partner an implementation of this!”
17.
Properties and Correlation Sets Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) <ul><li>How to identify stateful instances via stateless WS interfaces? </li></ul><ul><li>A process instance is assigned one or more keys </li></ul><ul><ul><li>Business data is used as key, e.g., customerID </li></ul></ul><ul><ul><li>A key can be compound, e.g., (customerID, orderNumber) </li></ul></ul><ul><ul><li>WS-BPEL calls a key a correlation set – it is used to correlate an incoming message with a process instance </li></ul></ul>Process 4 (0123,15) Process 3 (0815,42) Process 2 (4711,37) Process 1 (0815,12) 0815 42 Message 2 customerID orderNumber 4711 37 Message 1
18.
Properties and Correlation Sets Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) process How to identify stateful instances via stateless Web service interfaces? initiate process instance 3 correlation set customerId orderNumber process instance 1 process instance 2 process instance 4 receive Submit purchase order Messages in long-running conversations are correlated to the correct process instance locate purchaseOrder cId = 0815 orderNo = 42 receive Query order status queryOrderStatus custId = 0815 oNo = 42 customerId orderNumber 4 (0815, 49) 3 (0815, 42) 2 (0707, 11) 1 (0311, 33) process instance 3
19.
Fault Handling & Compensation <ul><li>Fault Handling </li></ul><ul><ul><li>Like in Java, enables alternative execution paths </li></ul></ul><ul><ul><li>Can trigger compensation </li></ul></ul><ul><li>Compensation </li></ul><ul><ul><li>ACID Transactions are not applicable when dealing with long running processes </li></ul></ul><ul><ul><li>Compensation-based recovery </li></ul></ul><ul><ul><ul><li>Compensation Handler can reverse the work performed by an already completed scope </li></ul></ul></ul><ul><ul><ul><li>Compensation Handler is “installed” after successful execution of a scope </li></ul></ul></ul><ul><ul><ul><li>Compensation can only be triggered by fault/compensation/termination handler of the enclosing scope </li></ul></ul></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
20.
Fault and Compensation Handling Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
21.
Modelling Styles <ul><li>Block structured modelling </li></ul><ul><ul><li>Nesting of structured activities </li></ul></ul><ul><ul><li>Use of <flow> activity for parallelism </li></ul></ul><ul><li>Graph based modelling </li></ul><ul><ul><li><flow> activity with links </li></ul></ul><ul><ul><li>Transition conditions & join conditions </li></ul></ul><ul><ul><li>Dead-Path-Elimination </li></ul></ul><ul><ul><li>Acyclic graph to ensure sound execution semantics </li></ul></ul><ul><ul><li>Loops can be realized with <while> / <repeatUntil> / <forEach> </li></ul></ul><ul><ul><li>Not supported by Sun & Oracle! </li></ul></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) t 1 t 2 j
22.
Modelling Styles: Example Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
23.
BPEL 2.0 Activities Basic Activities Structured Activities receive reply invoke assign validate throw rethrow exit compensateScope compensate wait empty extensionActivity forEach sequence 2. N. 1. … flow B C A while c repeatUntil c if-elseif-else c1 c2 … 2. N. 1. … pick … A M2 M1 scope
24.
<ul><li>BPEL4People/WS-HT </li></ul><ul><ul><li>Support for Human Tasks </li></ul></ul><ul><ul><li>Standardization Committee at OASIS currently active </li></ul></ul><ul><li>BPEL-SPE </li></ul><ul><ul><li>Support for sub-processes </li></ul></ul><ul><ul><li>Autonomy is key </li></ul></ul><ul><li>BPELJ </li></ul><ul><ul><li>Use Java in BPEL Activities </li></ul></ul><ul><ul><li>Use Java types in BPEL </li></ul></ul><ul><li>BPEL4SWS </li></ul><ul><ul><li>Support for Semantic Web Services (Service Discovery) </li></ul></ul><ul><ul><li>Data Mediation </li></ul></ul><ul><li>BPEL light </li></ul><ul><ul><li>WSDL-less BPEL </li></ul></ul><ul><ul><li>Is about message exchanges </li></ul></ul><ul><li>BPEL JS/E4X </li></ul><ul><ul><li>Use JavaScript/E4X for variable assignments </li></ul></ul>BPEL Extensions
25.
Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Open Source BPEL Software
26.
BPEL Modelling: Eclipse BPEL <ul><li>Support of BPEL4WS 1.1 (in version 0.1) </li></ul><ul><li>Support of WS-BPEL 2.0 … </li></ul><ul><ul><li>… all standard activities are supported </li></ul></ul><ul><ul><li>No full support of extensibility mechanisms yet (incl. extensionActivity) </li></ul></ul><ul><ul><li>Partial support of abstract BPEL </li></ul></ul><ul><li>Graphical & XML modelling mode </li></ul><ul><li>Tightly integrated with Eclipse </li></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
27.
BPEL Execution: Apache ODE <ul><li>BPEL 1.1 and 2.0 supported </li></ul><ul><li>Fast and scalable process engine </li></ul><ul><li>Modular design & embeddable </li></ul><ul><li>3 deployment targets supported </li></ul><ul><ul><li>Web container (Axis2) </li></ul></ul><ul><ul><li>JBI (ServiceMix) </li></ul></ul><ul><ul><li>SCA (Tuscany) </li></ul></ul><ul><li>Implicit Message Correlation </li></ul><ul><ul><li>Via HTTP headers and WS-Addressing </li></ul></ul><ul><li>Supports BPEL extensibility </li></ul><ul><li>Robustness </li></ul><ul><li>Management and Auditing </li></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
28.
Integration Efforts <ul><li>Editor for ODE deployment descriptor is shipped with Eclipse BPEL Designer (as of M4) </li></ul><ul><li>Runtime integration for local ODE server (Web container deployment) </li></ul><ul><li>Planned: Integrated unit testing of BPEL processes using BPELUnit (GSoC’09) </li></ul><ul><li>Planned: Web-based Debugger based on ODE and Oryx (GSoC’09) </li></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
29.
Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Demo
30.
Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Q&A Thank you for your attention!
31.
Further Reading <ul><li>Apache ODE </li></ul><ul><ul><li>http://ode.apache.org </li></ul></ul><ul><ul><li>WS-BPEL 2.0 compliance: http://snurl.com/gd4hd </li></ul></ul><ul><li>Eclipse BPEL </li></ul><ul><ul><li>http://www.eclipse.org/bpel </li></ul></ul><ul><li>Integration ODE/Eclipse </li></ul><ul><ul><li>Tutorial available at http://snurl.com/ejl1j </li></ul></ul><ul><li>Additional BPEL/ODE/Eclipse tutorials </li></ul><ul><ul><li>http://snurl.com/gd3zi </li></ul></ul>Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)