Title: Web Services Choreography Description Language
1Web Services Choreography Description Language
W3C Choreography WG 21 Sept 2003
Jeff Mischkinsky jeff.mischkinsky_at_oracle.com Nick
olas Kavantzas nickolas.kavantzas_at_oracle.com Goran
Olsson goran.olsson_at_oracle.com
2Agenda
- Goal
- Web Services Platform
- Web Services Choreography Description Language
3Goal
- Specify a declarative language that describes
collaborations of Web Services participants by
defining their complementary observable behavior
4Current Web Services platform
- Core communication framework bridging
heterogeneous computational models - Loosely-coupled, stateless
- Exchange of type checking information
5Emerging Web Services platform
6Emerging 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
7WS-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
8WS-CDL Concepts
- Web Services participants interact and align
their shared information - Synchronized document exchanges
- Progress is guarded by commonly defined ordering
rules - Interactions with common behavioral
characteristics are combined to form a behavioral
unit - Enables re-usability in different business
contexts
9WS-CDL Concepts
- Information Typing
- Identifying Coupling of WS participants
- Information driven collaboration
- State
- Activities
- Reaction
- Choreography
- Packaging
10Information 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
11Static 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
12Dynamic 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
13State
- 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
14Activities 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
15Activities 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
16Activities
- Declare
- Create and make available new state at a Role
- Repeat
- Sleep
- Inact
- Compensate
17Reaction
- 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
18Choreography
- 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
19Packaging
- Aggregate Import
- Document types, toke types, toke locator types,
role types, relationship types, channel types - One or more choreographies
- Import XSD, WSDL types
20WS-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
21WS-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
22WS-CDL Example cont.
- The Seller reaction is guarded by the response
interactions from Credit Checking 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
23WS-CDL Example cont.
24WS-CDL Example cont.
- 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
25WS-CDL Example cont.Some Basic Constructs
26WS-CDL Example cont.Documents
- ltdocumentType name"purchaseOrderDocType"
- messageType"ponspurchaseOrderMsg"/gt
- ltdocumentType name"purchaseOrderAckDocType
- messageType"ponspurchaseOrderAckMsg"/
gt - ltdocumentType name"purchaseOrderRejectDocType"
- messageType"ponspurchaseOrderRejectMs
g"/gt - ltdocumentType name"purchaseOrderResponseDocType
- messageType"ponspurchaseOrderResponse
Msg"/gt - ltdocumentType name"creditCheckRequestDocType"
- messageType"ponscreditCheckRequestMsg
"/gt
27WS-CDL Example cont.Tokens
- lttokenType namewarehouseRef" type"xsdanyUri"/gt
- lttokenType name"purchaseOrderID"
type"xsdint"/gt - lttokenLocator tokenName"snspurchaseOrderID"
- documentType "purchaseOrderDocType"
- part"PO"
- query"/PO/Order"/gt
28WS-CDL Example cont.roleType
- ltroleType name"Seller"gt
- ltbehaviorType name"sellerForBuyer"
- interfaceType"snsSellerPOP
T"/gt - ltbehaviorType name"sellerForCredit"
- interfaceType"snsSellerCre
ditPT"/gt - ltbehaviorType name"sellerForInventory"
- interfaceType"snsSellerInv
entoryPT"/gt - lt/roleTypegt
29WS-CDL Example cont.Relationships
- ltrelationshipType name"BuyerSellerBinding"gt
- ltrole type"Buyer"/gt
- ltrole type"Seller"/gt
- lt/relationshipTypegt
30WS-CDL Example cont.Channels
- ltchannelType name"purchaseOrderCHT"gt
- ltchannelDefinitionsgt
- ltchannel typepurchaseOrderResponseCHT
- directionrespondgt
- lt/channelDefinitionsgt
- ltrole type"Seller"/gt
-
- ltreferencegt
- lttoken name"warehouseRef"/gt
- lt/referencegt
- ltidentitygt
- lttoken name"purchaseOrderID"/gt
- lt/identitygt
- lt/channelTypegt
31WS-CDL Example cont.State Definitions
- ltstateDefinitions name"purchaseOrderChoreography
State"gt -
- ltstateType name"purchaseOrderAckDoc"
- documentType"purchaseOrderAckDocType"/gt
- ltstateType name"purchaseOrderDocAtBuyer"
- documentType"purchaseOrderDocType"
- roleType"Buyer"/gt
- lt/stateDefinitionsgt
32WS-CDL Example cont.Interacts
- ltinteract name"inventoryCheck"
- onChannel"inventory-channel"
- operation"inventoryCredit"
- initiateChoreography"true"gt
- ltparticipate
- relationship"SellerInventoryBindin
g" - fromRole"Seller"
- toRole"Inventory"/gt
- ltalign state"inventoryRequestDoc"
- with-state"inventoryRequestDoc"/
gt - lt/interactgt
33WS-CDL Example cont.Reactions
- ltreact name"creditApprovalInventoryApproval"
- group"ApproveOrReject
- relationshipTypeBuyerSellerBinding
- guard
- "cdlgetState(CreditCheckResponseDocAtSeller,
- \/Customer/Credit\)text() 'success'
- cdlgetState(InventoryResponseDocAtSeller,
- \/Order/Inventory\)text()'available'"gt
- ltinteract name"createOrderResponse
-
- lt/interactgt
- lt/reactgt
34WS-CDL Example cont.Choreography
- ltchoreography name"inventoryCheckChoreography"gt
- ltrelationship type"SellerInventoryBinding"/gt
- ltstateDefinitions
- nameinventoryCheckChoreographyStategt
- ltstateType name"inventoryCheckRequestDoc
- documentType"inventoryCheckRequestDocType"
/gt - ltstateType name
- "inventoryCheckResponseDocAtInventory
- documentType"inventoryCheckResponseDocType
" - roleType"Inventory"/gt
- ltstateType name"seller-channel-for-inventory
- channelType"inventoryCheckResponseCHT"/gt
- lt/stateDefinitionsgt
- Â
35WS-CDL Example cont.Choreography
- ltreact name"purcaseDocAvailibility
- relationshipTypeSellerInventoryBinding
- sequentialtrue
- guard"purchaseOrderDocAtSeller"gt
- ltinteract name"inventoryCheck
- onChannel"inventory-channel
- operation"inventoryCredit"
- initiateChoreography"true"gt
- ltparticipate
- relationship"SellerInventoryBind
ing - fromRole"Seller
toRole"Inventory"/gt - ltalign state"inventoryRequestDoc"
- with-state"inventoryRequestDoc"/
gt - ltalign state"seller-channel-for-inventor
y" - with-state"seller-channel-for-inventor
y"/gt - lt/interactgt
- Â lt/reactgt
-
36WS-CDL Example cont.Choreography
- ltrecover name"ncname"gt
- ltexception name"ncname"gt
- ChoreographyNotation
- lt/exceptiongt?
- ltcompensation name"ncname"gt
- ChoreographyNotation
- lt/compensationgt?
- lt/recovergt?
- lt/choreographygt
37WS-CDL Example cont.
- ltchoreography name"purchaseOrderChoreograpy"
root"true"gt - Â ltchoreography name"buyerSellerChoreograp
hygt - ltinteract name"createOrderInteract/gt
- ltinteract name"createOrderAckInteract/gt
- ltchoreography name"sellerResponseChoreogra
phy"gt - ltinteract name"createOrderResponse/gt
- lt/choreographygt
- ltchoreography name"sellerRejectChor
eography"gt - ltinteract name"createOrderReject/gt
- lt/choreographygt
- lt/choreographygt
- Â ltchoreography namecreditCheckChoreograp
hygt - ltinteract name"creditCheck/gt
- ltinteract name"creditCheckResponse
/gt - lt/choreographygt
- Â ltchoreography name"inventoryCheckChoreog
raphy"gt - ltinteract name"inventoryCheck/gt
 - ltinteract name"inventoryResponse
/gt - lt/choreographygt
38WS-CDL Example cont.
- ltchoreography name"purchaseOrderChoreograpy"
root"true"gt - Â ltchoreography name"buyerSellerChoreography
gt - ltinteract name"createOrderInteract/gt
 - ltinteract name"createOrderAckInteract/gt
- ltchoreography name"sellerResponseChoreogra
phy"gt - ltinteract name"createOrderResponse/gt
- lt/choreographygt
-
- ltchoreography
name"sellerRejectChoreography"gt - ltinteract name"createOrderReject/gt
- lt/choreographygt
- lt/choreographygt
- Â ltchoreography namecreditCheckChoreogra
phygt - ltinteract name"creditCheck/gt
- ltinteract name"creditCheckResponse/gt
- lt/choreographygt
- Â ltchoreography name"inventoryCheckChore
ography"gt - ltinteract name"inventoryCheck/
gt Â
39WS-CDL Example cont.
- ltchoreography name"creditCheckChoreography"gt
- ltrelationship type"SellerCreditBinding"/gt
- ltstateDefinitions namecreditCheckChoreographySt
ategt - ltstateType name"creditCheckRequestDoc
documentType"creditCheckRequestDocType"/gt - ltstateType name"creditCheckResponseDocAtCred
it documentType"creditCheckResponseDocType
roleType"Credit"/gt - ltstateType name"seller-channel-for-credit
channelType"tnscreditCheckResponseCHT"/gt - lt/stateDefinitionsgt
40WS-CDL Example cont.
-
- ltreact name"purcaseDocAvailibility
- relationshipTypeSellerCreditBinding
- sequentialtrue guard"purchaseOrderDocAt
Seller"gt - Â
- ltinteract name"creditCheck
onChannel"credit-channel - operation"checkCredit
- initiateChoreography"true"gt
- ltparticipate relationship"SellerCre
ditBinding - fromRole"Seller
toRole"Credit"/gt - ltalign state"creditCheckRequestDoc"
- with-state"creditCheckReques
tDoc"/gt - ltalign state"seller-channel-for-cre
dit" - with-state"seller-channel-fo
r-credit"/gt - lt/interactgt
- Â
-
41WS-CDL Example cont.
- ltinteract name"creditCheckResponse
- onChannel"seller-channel-for-credit
- operation"creditResponse"gt
- ltparticipate relationship"SellerCreditBinding
- fromRole"Credit
toRole"Seller"/gt - ltalign state"creditCheckResponseDocAtCredit"
- with-state" creditCheckResponseDocAtSel
ler"/gt - lt/interactgt
- lt/reactgt
- lt/choreographygt
42WS-CDL