SOA-based Business Integration with Eclipse BPEL and Apache ODE

4,643 views
4,548 views

Published on

Talk at JAX 09 about WS-BPEL, Apache ODE and Eclipse BPEL

Published in: Technology
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,643
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
0
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

SOA-based Business Integration with Eclipse BPEL and Apache ODE

  1. 1. SOA-basierte Business Integration mit Eclipse BPEL und Apache ODE Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
  2. 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. 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. 4. Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) BPEL Background & Motivation
  5. 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. 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. 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. 8. Web Service Orchestration Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) BPEL!
  9. 9. The Notion of Orchestration: Deja Vu Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Workflow Business Functions
  10. 10. The Notion of Orchestration: Deja Vu Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Orchestration Web Services
  11. 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. 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. 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. 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. 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. 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. 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. 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. 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. 20. Fault and Compensation Handling Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
  21. 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. 22. Modelling Styles: Example Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM)
  23. 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. 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. 25. Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Open Source BPEL Software
  26. 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. 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. 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. 29. Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Demo
  30. 30. Tammo van Lessen (IAAS, Uni Stuttgart) & Simon Moser (IBM) Q&A Thank you for your attention!
  31. 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)

×