Orchestration, Choreography and Collaboration in Web Services and ebXML Ron Ten-Hove Staff Software Engineer Sun Microsystems | JavaOne 2003 | Session 3176
Goals Examine message sequencing in Web Services and Business Web Services 2 | JavaOne 2003 | Session 3176
Ron Ten-Hove • Staff Engineer, Sun Java™ Web Services Business Integration Product Development ─ Developed EAI Products for Forté Software (now part of Sun Microsystems) ─ EAI Web Services ─ ebXML BPSS ─ WSCI ─ JSR 208 • Et cetera 3 | JavaOne 2003 | Session 3176
The next important area of development of Web Services is so-called Choreography. Many new concepts and specifications are emerging. 4 | JavaOne 2003 | Session 3176
Agenda • Definitions • Abstract Models • Web Services • Business Web Services • Summary 5 | JavaOne 2003 | Session 3176
Service-Oriented Architecture (SOA) • Services, Services Everywhere • Business Processes: ─ Use Services ─ Provide Services • Useful EAI Approach • SOAP + WSDL = Web Services • ebXML Business Web Services 6 | JavaOne 2003 | Session 3176
Some Terminology (WS Flavored) • Collaboration ─ Two or more peers ─ Business-oriented goals • Orchestration ─ Running business processes • Choreography ─ Sequencing “interface” ─ Client/Server 7 | JavaOne 2003 | Session 3176
Definitions (Cont.) Trading Partner’s Service Service Firewall Process Engine Service Service Service 8 | JavaOne 2003 | Session 3176
Definitions (Cont.) Trading Partner’s Service Collaboration Service Firewall Process Engine Service Service Service 9 | JavaOne 2003 | Session 3176
Definitions (Cont.) Trading Partner’s Service Collaboration Service Firewall Process Engine Orchestration Service Service Service 10 | JavaOne 2003 | Session 3176
Definitions (Cont.) Trading Partner’s Service Collaboration Service Firewall Process Engine Orchestration Choreography Service Service Service 11 | JavaOne 2003 | Session 3176
Choreography • Sequencing of Service operations • Direct dependencies • Interface ─ Observable messages • Constrains client using Service 12 | JavaOne 2003 | Session 3176
Orchestration • Process Engine ─ Invokes Services ─ Offers Services ─ Stateful ─ Complex rules: • Sequencing • Concurrent sequences (flows) • Synchronization of flows • Conforms to Choreography for each Service used 13 | JavaOne 2003 | Session 3176
Collaboration • B2B (Peer-to-peer) • Message exchange only • Like paired services, but ─ Uses Internet ─ Trading Partner Agreement ─ Business Semantics • Electronic Data Interchange (EDI) 14 | JavaOne 2003 | Session 3176
Abstract Models • Abstract Models ─ Influence Specifications ─ Model Checking ─ Emphasize certain aspects • π -Calculus • Petri Nets • State Diagrams/Activity Diagrams 15 | JavaOne 2003 | Session 3176
π -Calculus • Model of concurrent computation • Interacting, named agents • Dynamic configuration • “Calculus of Mobile Processes” • Influence on newer process specifications _ _ <C> x y u y A B _ _ <foo> z z z _ u C 16 | JavaOne 2003 | Session 3176
Petri Nets • Model of concurrent, interacting systems • Graph of ─ Places ─ Transitions ─ Directed arcs connecting transitions and places • Models ─ Collaboration ─ Orchestration • Good for modeling, not execution 17 | JavaOne 2003 | Session 3176
Petri Nets 18 | JavaOne 2003 | Session 3176
State Machine • States linked by directed transitions • More detail than Petri net • Simple synchronization primitives • Models ─ Simple orchestration ─ Most choreographies • UML StateChart, Sequential Function Chart, Grafcet, etc. 19 | JavaOne 2003 | Session 3176
State Diagram Place Order Book Shipping Arrange Insurance 20 | JavaOne 2003 | Session 3176
Activity Diagrams • UML variation of State Machine • Roles (“Swim lanes”) • Initiating role • Message exchange between roles • Models ─ Collaboration ─ Orchestration (optionally) 21 | JavaOne 2003 | Session 3176
Activity Diagrams Buyer Seller Accept Send Quote Receipt Request Accept Send Receipt Receipt et cetera... 22 | JavaOne 2003 | Session 3176
Web Services • Technology stack Application • Based on web protocols SOAP • Port 80 as a tunnel HTTP • SOAP 1.1 ─ RPC TCP ─ Message exchange IP • WSDL 1.1 ─ Description of service Datalink ─ Bind service to SOAP Physical 23 | JavaOne 2003 | Session 3176
The Problem With Web Services • Web Services Description Language 1.1 ─ Operations, Operations Everywhere ─ Services modeled as message exchanges ─ Unordered • No Choreography • No Collaboration ─ Paired services pattern • Orchestration: Not applicable 24 | JavaOne 2003 | Session 3176
WSDL Structure Part Part Part Part Message Message ... Operation Port Type Binding ... Port ... Service ... Adapted from: Microsoft MSDN 25 | JavaOne 2003 | Session 3176
WSDL Structure Part Part Part Part Abstract Message Message Endpoint Type ... Operation Port Type Binding ... Port ... Service ... Adapted from: Microsoft MSDN 26 | JavaOne 2003 | Session 3176
WSDL Structure Part Part Part Part Abstract Message Message Endpoint Type ... Operation Port Type Binding ... Concrete Endpoint Port ... Service ... Adapted from: Microsoft MSDN 27 | JavaOne 2003 | Session 3176
WSDL Structure Part Part Part Part Abstract Message Message Endpoint Type ... Operation Port Type Binding ... Concrete Endpoint Port ... Endpoint Instance Service ... Adapted from: Microsoft MSDN 28 | JavaOne 2003 | Session 3176
WSDL Structure Part Part Part Part Abstract Message Message Endpoint Type ... Operation Port Type Binding ... Concrete Endpoint Port ... Endpoint Instance Service ... Adapted from: Microsoft MSDN 29 | JavaOne 2003 | Session 3176
Web Service Choreography • Layered on top of PortType ─ Reuse • Client/Service contract • Ordering of Operation invocations 30 | JavaOne 2003 | Session 3176
Choreography Example Read() Open for ) Update ( n i LogOff() m d A n i g o L Update() Idle Read() L LogOff() o g i n U s e r ( ) Open for Read 31 | JavaOne 2003 | Session 3176
Simple Choreography Isn’t Enough • Pure Client/Service ─ Only one initiator ─ Synchronous Messaging • Single Service Only 32 | JavaOne 2003 | Session 3176
Specifications to the Rescue • WSCL 1.0 ─ Basic choreography language ─ Layered directly atop WSDL 1.1 • WSCI 1.0 ─ Rich choreography language ─ Layered directly atop WSDL 1.1 • BPEL4WS ─ Broad orchestration language ─ Choreography support ─ Layered directly atop WSDL 1.1 33 | JavaOne 2003 | Session 3176
Added Features • Correlation • Transactions • Exceptions • Compensation • Roles • Dynamic Participation 34 | JavaOne 2003 | Session 3176
Correlation • Asynchronous responses ─ How to correlate to request? • ebXML message meta-data ─ Unique message IDs ─ Ref-to message ID • Use message content ─ E.g., purchase order number • Multiple correlation items possible 35 | JavaOne 2003 | Session 3176
Correlation Example Buyer Seller /po/head@no Send Purchase Accept Order PO /inv/ref/po /inv/id/num Accept Send Invoice Invoice /pay/ref/inv Send Ship Payment Goods 36 | JavaOne 2003 | Session 3176
Transactions • Multiple operations complete or fail like a single one • Various models: ─ ACID—Atomic • Locks resources • Costly for long-running operations ─ Nested (Open) • Relaxes isolation requirement • Complex error recovery • In tension with loose coupling 37 | JavaOne 2003 | Session 3176
Exceptions • Choreography distinguishes: ─ “Happy path” ─ Error paths • Technical problems • Fault response from Service – Multiple types • Error paths can ─ Retry ─ Complain ─ Clean up 38 | JavaOne 2003 | Session 3176
Compensation • Undo a committed transaction/operation ─ Needed in open transaction model ─ Distinct from rollback • Explicit compensation handler ─ Sequence of operations to achieve “undo” 39 | JavaOne 2003 | Session 3176
Roles • Assigning role names to port types • Pairing roles ─ E.g., Buyer, Seller ─ Links port types directly 40 | JavaOne 2003 | Session 3176
Dynamic Participation • Selection of target service at run-time • Uses dynamic data ─ Message contents ─ Previous message contents • π -Calculus influence ─ Service address is a channel ─ Port type is channel type 41 | JavaOne 2003 | Session 3176
Business Web Services Trading Partner’s Services Business Services Business Services Interfaces Interfaces Service Firewall Process Engine Service Service Service 42 | JavaOne 2003 | Session 3176
Recommend
More recommend