- From: Roberto Lucchi <lucchi@cs.unibo.it>
- Date: Wed, 4 May 2005 12:56:35 +0200 (CEST)
- To: nickolas.kavantzas@oracle.com, <charlton_b@mac.com>, <gary@enigmatec.net>, <tony_fletcher@btopenworld.com>, <steve@pi4tech.com>
- Cc: public-ws-chor@w3.org, Claudio Guidi <cguidi@cs.unibo.it>
Dear All, We are a group of researchers of the Dep. of Computer Science of Bologna University which investigates orchestration and choreography languages (some of us are involved in several workshops and conferences of this topic, e.g. WS-FM'05 http://www.cs.unibo.it/WS-FM05/ or ICSOC'05). We are interested in the formal definition of the WS-CDL semantics. In particular, now we are investigating the semantics of interactions by using the Working Draft of December 17, 2004. We are interested to understand if CDL makes it possible to express, in a request-response interaction, that a certain choreography, say C, have to be performed between the request and the response. We have considered two possible solutions: 1. one exploiting work-units which are used to enable C when a state variable becames available after the request exchange. 2. one obtained (is it correct?) by splitting the request-response interaction (note that this is not a call-back): <roleType name="roleC"> <behavior name="BehaviourC" interface="tns:undefinedCPT"/></roleType> <roleType name="RoleD"> <behavior name="BehaviourD" interface="tns:undefinedDPT"/></roleType> <relationshipType name="relationshipCD"> <role type="roleC" behavior="BehaviourC"/> <role type="roleD" behavior="BehaviourD"/> </relationshipType><channelType name="ChannelCD" action="request-respond"> <role type="roleD"/> <reference><token name="tns:undefinedRefD"/></reference> </channelType> <choreography name="sampleChoreography" root="true"> <relationship type="relationshipAB"/> <variableDefinitions> <variable name="z" informationType="tns:zkType" roleTypes="roleC" silent="true" /> <variable name="k" informationType="tns:zkType" roleTypes="roleD" silent="true" /> <variable name="w" informationType="tns:wqType" roleTypes="roleD" silent="true" /> <variable name="q" informationType="tns:wqType" roleTypes="roleC" silent="true" /> <variable name="CDchan" channelType="tns:ChannelCD"/> </variableDefinitions> <sequence> <interaction name="interactionCD" channelVariable="tns:CDchan" operation="tns:opCD" align="true" > <participate relationshipType="tns:relationshipCD" fromRole="tns:roleC" toRole="tns:roleD"/> <exchange name="requestCD" informationType="tns:zkType" action="request"> <send variable="cdl:getVariable("tns:z", "", "")" /> <receive variable="cdl:getVariable("tns:k", "", "")"/> </exchange> </interaction> <perform> <!-- Choreography C --> </perform> <interaction name="interactionCD" channelVariable="tns:CDchan" operation="tns:opCD" align="true" > <participate relationshipType="tns:relationshipCD" fromRole="tns:roleC" toRole="tns:roleD"/> <exchange name="responseCD" informationType="tns:wqType" action="respond"> <send variable="cdl:getVariable("tns:w", "", "")" /> <receive variable="cdl:getVariable("tns:q", "", "")"/> </exchange> </interaction> </sequence> </choreography> In the former we cannot guarantee that C completes before the response (could be useful such a constraint?), while in the latter it seems to be possible but we have some concerns about the syntax. Could you help us to clarify this issues? Thanks in advance Best regards, Roberto Lucchi
Received on Thursday, 5 May 2005 01:56:10 UTC