Issue 691 (ACTION 17)

Section 2.4.2

*** CHANGE ONE ***

<fragment>
The syntax of the variableDefinitions construct is:;

<variableDefinitions>
    <variable   name="ncname"
        informationType="qname"|channelType="qname"
        mutable="true|false"?
        free="true|false"?
        silentAction="true|false"?
        roleType="qname"? />+
</variableDefinitions>
</fragment>

CHANGE TO:

<fragment
The syntax of the variableDefinitions construct is:;

<variableDefinitions>
    <variable   name="ncname"
        informationType="qname"|channelType="qname"
        mutable="true|false"?
        free="true|false"?
        silentAction="true|false"?
        roleType="qname"* />+
</variableDefinitions>
</fragment>

*** CHANGE TWO ***
<fragment>
The optional attribute roleType is used to specify the Role Type of a 
party at which the Variable information will reside.

	• 	The attribute name is used for specifying a distinct name for each 
variable element declared within a variableDefinitions element when 
needed. The Variables with Role Type not specified MUST have distinct 
names. The Variables with Role Type specified MUST have distinct names, 
when their Role Type is the same

	• 	A Variable defined without a Role Type is equivalent to a Variable 
that is defined at all the Role Types that are part of the Relationship 
Types of the Choreography where the Variable is defined. For example if 
Choreography C1 has Relationship Type R that has a tuple (Role1, 
Role2), then a Variable x defined in Choreography C1 without a roleType 
attribute means it is defined at Role1 and Role2
</fragment>

CHANGE TO:

<fragment>
The optional attribute roleType is used to specify the Role Type(s) of 
a party at which the Variable information will reside. One may specify 
one or more roleTypes for a variable.

	• 	The attribute name is used for specifying a distinct name for each 
variable element declared within a variableDefinitions element when 
needed. The Variables with Role Type not specified MUST have distinct 
names. The Variables with Role Type specified MUST have distinct names, 
when their Role Type is the same.

	• 	A Variable defined without a Role Type is equivalent to a Variable 
that is defined at all the Role Types that are part of the Relationship 
Types of the Choreography where the Variable is defined. For example if 
Choreography C1 has Relationship Type R that has a tuple (Role1, 
Role2), then a Variable x defined in Choreography C1 without a roleType 
attribute means it is defined at Role1 and Role2

Thus all variables MUST have a name and that name MUST be distinct with 
respect to the Role Type(s) in which the variable resides.

In those cases where the visibility of a variable is wholly within a 
single role then that role needs to be named in the definition of the 
variable as the Role Type. In those cases where the variable is shared 
amongst a subset of roles within a choreography those roles need to be 
named within the definition of the variable as the Role Types.
</fragment>

This change should ensure clarity and resolve issue 691 whilst 
preserving the shortcut of defining a variable at all roles.

Cheers

Steve T

Received on Tuesday, 12 October 2004 13:06:34 UTC