Issue and Proposal: Example in 6.2.3

Hi

The example at the end of "6.2.3 Interaction Syntax" shows a means of 
channel passing that is not suitable for supporting advanced type 
checking of a choreography.

This is because the source of the channel cannot be determined or 
traced, and therefore if the channel is passed via multiple endpoints, 
it would not be possible to determine if it was the same channel 
instance, or different channel instances being passed around. At 
present, channel passing in CDL must be more explicit (i.e. the exchange 
variable should reference the channel variable).

Proposal is to remove the channel passing aspects of this example. 
Suitable channel passing examples (I believe) will be provided as part 
of the primer.


Changes required:

Remove the following bullet points from section 6.2.3:

"The variable "consumer-channel" is made available at the "Retailer" 
using the record element"

"The "consumer-channel" is sent as a part of "purchaseOrder" interaction 
from the "Consumer" to the "Retailer" on "retailer-channel" during the 
request. Here the record element makes available the "Consumer-channel" 
at the "Retailer" roleType. If the |align| attribute was set to "true" 
for this interaction, then it also means that the "Consumer" knows that 
the "Retailer" now has the contact information of the "Consumer". In 
another example, the "Consumer" could set its variable "OrderSent" to 
"true" and the "Retailer" would set its variable "OrderReceived" to 
"true" using the |record| element"


 From the actual example, remove the following fragments:

 <channelType name="ConsumerChannel">
    <roleType typeRef="tns:Consumer"/>
    <reference>
      <token name="tns:consumerRef"/>
    </reference>
    <identity>
      <token name="tns:purchaseOrderID"/>
    </identity>
  </channelType>


    <passing channel="ConsumerChannel" action="request" /> - from the RetailerChannel ChannelType definition


Change: (in the request exchange)

        <receive variable="cdl:getVariable('tns:purchaseOrder','','')"
                 recordReference="record-the-channel-info" />

To:

        <receive variable="cdl:getVariable('tns:purchaseOrder','','')" />


Remove:

      <record name="record-the-channel-info" when="after">
        <source variable="cdl:getVariable('tns:purchaseOrder','', 
                                          '/PO/CustomerRef')"/>
        <target variable="cdl:getVariable('tns:consumer-channel','','')"/>
      </record>

Received on Wednesday, 2 August 2006 10:53:46 UTC