a question about interactions

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