Re: a question about interactions

Comments inline

----- Original Message ----- 
From: "Roberto Lucchi" <lucchi@cs.unibo.it>
To: "Gary Brown" <gary@pi4tech.com>
Cc: <public-ws-chor@w3.org>; "Claudio Guidi" <cguidi@cs.unibo.it>
Sent: Friday, May 06, 2005 4:27 PM
Subject: Re: a question about interactions


>
> Dear Gary,
>
> On Fri, 6 May 2005, Gary Brown wrote:
>
>> Hi Roberto,
>>
>> >From my perspective, your second example is the best way to express this
>> scenario, because it clearly defines the order of activities (and
>> dependencies between them).
>>
>> When you say that you have concerns about the syntax, regarding this 
>> second
>> approach, can you be more specific? Is it the fact that the interaction 
>> no
>> longer represents the explicit binding of a request/response pattern?
>
> Yes, my concerns was about what should be used to correlate different
> exchanges on different interactions, to this end in the proposed solution
> we exploit the operation attribute and the interaction name.
> Obviously, the operation must be defined, in the WSDL, as a
> request-response one.
>
> However, I think that the align attributes should be associated at the
> level of single interaction either for request and request-response
> interactions while, by using this solution I can build, for instance, a
> r-r interaction with only the request part aligned.

GB: Depends what the 'align' is referring to - I believe that the align 
properties work at the individual exchange levels, and therefore by setting 
the align attribute on both of the interactions, this would represent the 
same behavior.

GB: However, if the alignment of the complete request/response interaction 
is also required, then in the same manner that the coupling of the two 
interactions can be inferred (based on the association to the WSDL req/resp 
operation), so could the 'alignment' property be inferred across the two 
interactions.

> Moreover, I wonder if <perform> of a choreography, say C, completes when
> C completes or when C is enabled because this fact affects the solution we
> propose.

GB: The perform only completes when the choreography that is being performed 
completes.

>
> In light of this observation, in our opinion, the <interaction> should
> allow to express if a certain choreography have to be performed within a
> request-response operation. We also have proposed a formal language which
> represents a kernel of a chorepgraphy language, a draft of such a proposal
> is available at my home page: http://www.cs.unibo.it/~lucchi/pubbl.html
>

GB: Thanks for the reference, we will have a look with great interest.

> Regards,
> Roberto
>
>
>>
>> Although this may not be obvious in the way the interactions are 
>> described,
>> due to the separation of the request interaction from the response
>> interaction, it can be verified against the interface definition to 
>> ensure
>> that where necessary, a request interaction is always followed by a 
>> response
>> pattern regardless of path taken.
>>
>> Regards
>> Gary
>>
>> ----- Original Message -----
>> From: "Roberto Lucchi" <lucchi@cs.unibo.it>
>> 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>
>> Sent: Wednesday, May 04, 2005 11:56 AM
>> Subject: 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 Friday, 6 May 2005 16:15:32 UTC