1 / 42

Web Services Choreography Description Language

Web Services Choreography Description Language. W3C Choreography WG 21 Sept 2003. Jeff Mischkinsky jeff.mischkinsky@oracle.com Nickolas Kavantzas nickolas.kavantzas@oracle.com Goran Olsson goran.olsson@oracle.com. Agenda. Goal Web Services Platform

achavez
Download Presentation

Web Services Choreography Description Language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Web Services Choreography Description Language W3C Choreography WG 21 Sept 2003 Jeff Mischkinskyjeff.mischkinsky@oracle.com Nickolas Kavantzas nickolas.kavantzas@oracle.com Goran Olssongoran.olsson@oracle.com

  2. Agenda • Goal • Web Services Platform • Web Services Choreography Description Language

  3. Goal • Specify a declarative language that describes collaborations of Web Services participants by defining their complementary observable behavior

  4. Current Web Services platform Discovery UDDI Description WSDL SOAP Messaging XML,Encoding HTTP, BEEP,IIOP, JMS, SMTP Transport • Core communication framework bridging heterogeneous computational models • Loosely-coupled, stateless • Exchange of type checking information

  5. Emerging Web Services platform Integration Business Collaboration Language: Web Services Choreography Description Language Business Process Languages: BPEL, XPDL, BPML Qualityof Service Reliable Messaging Security Transaction Coordination UDDI Discovery WSDL Description SOAP Messaging XML,Encoding HTTP, BEEP,IIOP, JMS, SMTP Transport

  6. Emerging Web Services platform • Reliable Messaging layer • Guaranteed delivery • Message ordering • Exactly once • Context, Coordination, Transaction layer • Bridge heterogeneous coordination protocols • Business Process Language layer • Implements Web Services based applications • Models non-observable (internal) behavior • BPEL, BPML, XPDL • Define control flows • Manage private data

  7. WS-CDL Design Goals • Model the complementary observable behavior of Web Services participating in a common business transaction • Based on a formal model • pi-calculus variation

  8. WS-CDL Concepts • Web Services participants interact and align their shared information • Synchronized document exchanges • Progress is guarded by commonly definedordering rules • Interactions with common behavioral characteristics are combined to form a behavioral unit • Enables re-usability in different business contexts

  9. WS-CDL Concepts • Information Typing • Identifying & Coupling of WS participants • Information driven collaboration • State • Activities • Reaction • Choreography • Packaging

  10. Information Typing • Document type • Aliases WSDL message type, XSD type, XSD element • Supports future type systems • Token type • Specify name and type of piece of information • Uses WS-CDL Document type of the attribute • Token Locater type • Specify rules for selecting a piece of information • WS-CDL Document type • WSDL message part • XPATH query of document

  11. Static coupling: Roles & Relationships • Role type • Specify the observable behavior, in terms of the operations, a WS participant can perform • One or more WSDL interface type(s) named as behavior type • Relationship type • Specify the mutual commitments, in terms of the Roles, two WS participants are required to provide • Two WSDL interface types

  12. Dynamic coupling: Channel • Identify a contact-point, through which two WS participants interact • A contact-point describes • the service type of a participant, using Token type(s) within a reference marker • the business process type implementing a WS participant, using Token type(s) within an identity marker • Identify a conversation between two or more WS participants • A conversation groups a set of related document exchanges, using Token type(s) within an identity marker

  13. State • Capture information shared between WS participants • Affect the progress of their common business transaction • State definitions • Define Documents • Typed with a documentType • Define Channels • Typed with a channel type • Specify the Role of the WS participant the state resides in

  14. Activities: Interact • Enable WS participants to communicate and align their shared state • Synchronized document exchange between two roles within a relationship • Atomic, request & accept of an operation through a channel • WSDL One way or request-response • Information flow • request direction: fromRole towards toRole • response direction: toRole towards fromRole

  15. Activities: Interact (2) • Align state that resides in one role with state that resides in the other role • The aligned states are made available at the two roles

  16. Activities • Declare • Create and make available new state at a Role • Repeat • Sleep • Inact • Compensate

  17. Reaction • Guard a set of activities • Express interest on the availability of zero, one or more state information • When the state is/become available and a guard condition evaluates to true, the enclosed activities are enabled • In parallel or sequentially • Repeat: marks the re-enablement of a reaction • reaction group: marks the mutual-exclusive enablement of a set of activities

  18. Choreography • Interactions with common behavioral characteristics are combined to form a behavioral unit • Enumerate all the binary relationships interactions act in • Localize the visibility of state • Using state definitions • Prescribe alternative patterns of behavior • Using reactions • Enable Recovery • Backward: handle exceptional conditions • Forward: compensate already completed activities • Recursively combine Choreographies to form new Choreographies

  19. Packaging • Aggregate & Import • Document types, toke types, toke locator types, role types, relationship types, channel types • One or more choreographies • Import XSD, WSDL types

  20. WS-CDL Example • The example is a multi-participant choreography • Illustrates a simple purchase sequence • It involves four participants, Roles • Buyer, Seller, Credit Checking Service, and Inventory Service • Main choreography involves 3 relationships • Buyer-Seller • Seller-Credit Checking Service • Seller-Inventory Service

  21. WS-CDL Example cont. • The Buyer initiates an interact and the Choreography  • With the Seller to align the Purchase Order • The Seller, when the Purchase Order is available, initiates 3 interactions • With the Buyer to acknowledge receipt of the Purchase Order • With the Credit Checking Service to check Buyers credit • With the Inventory Service for product availability

  22. WS-CDL Example cont. • The Seller reaction is guarded by the response interactions from CreditChecking Service and Inventory Service • If both interactions result are positive, the order is processed and the Purchase Order Response is sent • If either interaction indicate a negative result a Purchase Order Reject message is sent to the Buyer

  23. WS-CDL Example cont.

  24. WS-CDL Example cont. 1 2 3 4 5 Buyer interacts with Seller to create a Purchase Order Seller acknowledges the Purchase Order in an interact Seller interacts with Credit Service and Inventory service Credit and Inv. Services interacts with Seller with results Seller interacts with Buyer creating PO Response

  25. WS-CDL Example cont.Some Basic Constructs

  26. WS-CDL Example cont.Documents <documentType name="purchaseOrderDocType" messageType="pons:purchaseOrderMsg"/> <documentType name="purchaseOrderAckDocType“ messageType="pons:purchaseOrderAckMsg"/> <documentType name="purchaseOrderRejectDocType" messageType="pons:purchaseOrderRejectMsg"/> <documentType name="purchaseOrderResponseDocType“ messageType="pons:purchaseOrderResponseMsg"/> <documentType name="creditCheckRequestDocType" messageType="pons:creditCheckRequestMsg"/>

  27. WS-CDL Example cont.Tokens <tokenType name=“warehouseRef" type="xsd:anyUri"/> <tokenType name="purchaseOrderID" type="xsd:int"/> <tokenLocator tokenName="sns:purchaseOrderID" documentType ="purchaseOrderDocType" part="PO" query="/PO/Order"/>

  28. WS-CDL Example cont.roleType <roleType name="Seller"> <behaviorType name="sellerForBuyer" interfaceType="sns:SellerPOPT"/> <behaviorType name="sellerForCredit" interfaceType="sns:SellerCreditPT"/> <behaviorType name="sellerForInventory" interfaceType="sns:SellerInventoryPT"/> </roleType>

  29. WS-CDL Example cont.Relationships <relationshipType name="BuyerSellerBinding"> <role type="Buyer"/> <role type="Seller"/> </relationshipType>

  30. WS-CDL Example cont.Channels <channelType name="purchaseOrderCHT"> <channelDefinitions> <channel type=”purchaseOrderResponseCHT” direction=“respond”> </channelDefinitions> <role type="Seller"/> <reference> <token name="warehouseRef"/> </reference> <identity> <token name="purchaseOrderID"/> </identity> </channelType>

  31. WS-CDL Example cont.State Definitions <stateDefinitions name="purchaseOrderChoreographyState"> <stateType name="purchaseOrderAckDoc" documentType="purchaseOrderAckDocType"/> <stateType name="purchaseOrderDocAtBuyer" documentType="purchaseOrderDocType" roleType="Buyer"/> </stateDefinitions>

  32. WS-CDL Example cont.Interacts <interact name="inventoryCheck" onChannel="inventory-channel" operation="inventoryCredit" initiateChoreography="true"> <participate relationship="SellerInventoryBinding" fromRole="Seller" toRole="Inventory"/> <align state="inventoryRequestDoc" with-state="inventoryRequestDoc"/> </interact>

  33. WS-CDL Example cont.Reactions <react name="creditApprovalInventoryApproval" group="ApproveOrReject“ relationshipType=”BuyerSellerBinding” guard= "cdl:getState(CreditCheckResponseDocAtSeller, \“/Customer/Credit\”)[text() = 'success'] && cdl:getState(InventoryResponseDocAtSeller, \“/Order/Inventory\”)[text()='available']"> <interact name="createOrderResponse“ ……… </interact> </react>

  34. WS-CDL Example cont.Choreography <choreography name="inventoryCheckChoreography"> <relationship type="SellerInventoryBinding"/> <stateDefinitions name=”inventoryCheckChoreographyState”> <stateType name="inventoryCheckRequestDoc“ documentType="inventoryCheckRequestDocType"/> <stateType name= "inventoryCheckResponseDocAtInventory“ documentType="inventoryCheckResponseDocType" roleType="Inventory"/> <stateType name="seller-channel-for-inventory“ channelType="inventoryCheckResponseCHT"/> </stateDefinitions>

  35. WS-CDL Example cont.Choreography <react name="purcaseDocAvailibility“ relationshipType=”SellerInventoryBinding” sequential=“true” guard="purchaseOrderDocAtSeller"> <interact name="inventoryCheck“ onChannel="inventory-channel“ operation="inventoryCredit" initiateChoreography="true"> <participate relationship="SellerInventoryBinding“ fromRole="Seller“toRole="Inventory"/> <align state="inventoryRequestDoc" with-state="inventoryRequestDoc"/> <align state="seller-channel-for-inventory" with-state="seller-channel-for-inventory"/> </interact>   </react>

  36. WS-CDL Example cont.Choreography <recover name="ncname"> <exception name="ncname"> ChoreographyNotation </exception>? <compensation name="ncname"> ChoreographyNotation </compensation>? </recover>? </choreography>

  37. <choreography name="purchaseOrderChoreograpy" root="true"> <choreography name="buyerSellerChoreography”> <interact name="createOrderInteract“/> <interact name="createOrderAckInteract“/> <choreography name="sellerResponseChoreography"> <interact name="createOrderResponse“/> </choreography> <choreography name="sellerRejectChoreography"> <interact name="createOrderReject“/> </choreography> </choreography>   <choreography name=“creditCheckChoreography”> <interact name="creditCheck“/> <interact name="creditCheckResponse“/> </choreography>   <choreography name="inventoryCheckChoreography"> <interact name="inventoryCheck“/>   <interact name="inventoryResponse“/> </choreography> </choreography> WS-CDL Example cont.

  38. <choreography name="purchaseOrderChoreograpy" root="true"> <choreography name="buyerSellerChoreography”> <interact name="createOrderInteract“/>   <interact name="createOrderAckInteract“/> <choreography name="sellerResponseChoreography"> <interact name="createOrderResponse“/> </choreography> <choreography name="sellerRejectChoreography"> <interact name="createOrderReject“/> </choreography> </choreography> <choreography name=“creditCheckChoreography”> <interact name="creditCheck“/> <interact name="creditCheckResponse“/> </choreography> <choreography name="inventoryCheckChoreography"> <interact name="inventoryCheck“/>   <interact name="inventoryResponse“/> </choreography> </choreography> WS-CDL Example cont.

  39. WS-CDL Example cont. <choreography name="creditCheckChoreography"> <relationship type="SellerCreditBinding"/> <stateDefinitions name=”creditCheckChoreographyState”> <stateType name="creditCheckRequestDoc“documentType="creditCheckRequestDocType"/> <stateType name="creditCheckResponseDocAtCredit“documentType="creditCheckResponseDocType“roleType="Credit"/> <stateType name="seller-channel-for-credit“channelType="tns:creditCheckResponseCHT"/> </stateDefinitions>

  40. WS-CDL Example cont. <react name="purcaseDocAvailibility“ relationshipType=”SellerCreditBinding” sequential=“true” guard="purchaseOrderDocAtSeller"> <interact name="creditCheck“onChannel="credit-channel“ operation="checkCredit“ initiateChoreography="true"> <participate relationship="SellerCreditBinding“ fromRole="Seller“toRole="Credit"/> <align state="creditCheckRequestDoc" with-state="creditCheckRequestDoc"/> <align state="seller-channel-for-credit" with-state="seller-channel-for-credit"/> </interact>

  41. WS-CDL Example cont. <interact name="creditCheckResponse“ onChannel="seller-channel-for-credit“ operation="creditResponse"> <participate relationship="SellerCreditBinding“ fromRole="Credit“ toRole="Seller"/> <align state="creditCheckResponseDocAtCredit" with-state=" creditCheckResponseDocAtSeller"/> </interact> </react> </choreography>

  42. WS-CDL Questions??? Comments!!!

More Related