Upload
tyler-grady
View
226
Download
3
Tags:
Embed Size (px)
Citation preview
Jeff Mischkinsky [email protected]
Nickolas Kavantzas [email protected]
Goran Olsson [email protected]
Web Services Choreography Description Language
W3C Choreography WG
21 Sept 2003
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
Core communication framework bridging heterogeneous computational models
– Loosely-coupled, stateless– Exchange of type checking information
TransportTransport
MessagingMessaging
DescriptionDescription
DiscoveryDiscovery
HTTPHTTP, BEEP,IIOP, JMS, SMTP, BEEP,IIOP, JMS, SMTP
XML,EncodingXML,Encoding
SOAPSOAP
WSDLWSDL
UDDIUDDI
5
Emerging Web Services platform
TransportTransport
MessagingMessaging
DescriptionDescription
DiscoveryDiscovery
HTTPHTTP, BEEP,IIOP, JMS, SMTP, BEEP,IIOP, JMS, SMTP
XML,EncodingXML,Encoding
SOAPSOAP
WSDLWSDL
UDDIUDDI
Integration
Business Process Languages:Business Process Languages:BPEL, XPDL, BPMLBPEL, XPDL, BPML
Business Collaboration Language: Business Collaboration Language: Web ServicesWeb Services Choreography Description LanguageChoreography Description Language
QualityQualityof Serviceof Service
Reliable Reliable MessagingMessaging
SecuritySecurity TransactionTransaction
CoordinationCoordination
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
Model the complementary observable behavior of Web Services participating in a common business transaction
Based on a formal model– pi-calculus variation
WS-CDL Design Goals
8
WS-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
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 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
23
WS-CDL Example cont.
PurchaseOrder
Credit InventorySellerBuyer
PurchaseOrder InvCheckReq InvCheckReq
InvCheckResp
CheckCreditReq CheckCreditReq
CheckCreditRespCheckCreditResp
InvCheckResp
PurchaseOrderAck
PurchaseOrderResp
PurchaseOrderAck
PurchaseOrderResp
Legend
Channels
createOrder
createOrderAck creditCheck
createCheckResp
inventoryCheck
inventoryCheckResp
purchaseOrderResp
1
2
3
4
5
3
Guards
24
WS-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
1
2
3
4
5
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
WS-CDL Example cont.
<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>
38
WS-CDL Example cont.
<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>
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!!!