This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 3588 - channel passing example
Summary: channel passing example
Status: RESOLVED WONTFIX
Alias: None
Product: WS Choreography
Classification: Unclassified
Component: Implementation/CR Issue (show other bugs)
Version: unspecified
Hardware: PC Windows 2000
: P2 normal
Target Milestone: --
Assignee: Martin Chapman
QA Contact: Martin Chapman
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-08-08 19:17 UTC by Martin Chapman
Modified: 2007-03-20 19:34 UTC (History)
0 users

See Also:


Attachments

Description Martin Chapman 2006-08-08 19:17:12 UTC
http://lists.w3.org/Archives/Public/public-ws-chor/2006Aug/0010.html

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>
Comment 1 Martin Chapman 2006-08-08 19:26:52 UTC
agreed to the proposal from gary at 8 Aug 2006 meeting
Comment 2 Martin Chapman 2007-03-20 19:31:39 UTC
re-opened, as we agreed to reverse the resolution agreed on 8 Aug.
Comment 3 Martin Chapman 2007-03-20 19:32:09 UTC
re-opened, as we agreed to reverse the resolution agreed on 8 Aug.
Comment 4 Martin Chapman 2007-03-20 19:34:02 UTC
agreed on 20th March 07 to reverse the decision of 8th august 2007 based on impelmentation experience.