Re: Issue 691 - revisted

Steve, 
 
A minor point on CHANGE ONE: 
 
We changed the attribute name silentAction to silent in order to avoid confusion w/ silentAction's other use, so the new <variableDefinitions> should be: 
 
<fragment

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


>>>Steve Ross-Talbot <steve@enigmatec.net> 11/18/04 9:49 am >>>




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>

*** CHANGE THREE
In the schema definition it defines a tVariable as:

<fragment>

<complexType name=tVariable>
     <complexContent>
       <extension base=cdl:tExtensibleElements>
         <attribute name=name type=NCName use=required/>
         <attribute name=informationType type=QName
                  use=optional/>
         <attribute name=channelType type=QName use=optional/>
         <attribute name=mutable type=boolean use=optional
                  default=true/>
         <attribute name=free type=boolean use=optional
                  default=false/>
         <attribute name=silentAction type=boolean use=optional
                  default=false/>
         <attribute name=role type=QName use=optional/>
       </extension>
     </complexContent>
</complexType>

</fragment>

CHANGE TO:

<fragment>

<complexType name=tVariable>
     <complexContent>
       <extension base=cdl:tExtensibleElements>
         <attribute name=name type=NCName use=required/>
         <attribute name=informationType type=QName
                  use=optional/>
         <attribute name=channelType type=QName use=optional/>
         <attribute name=mutable type=boolean use=optional
                  default=true/>
         <attribute name=free type=boolean use=optional
                  default=false/>
         <attribute name=silentAction type=boolean use=optional
                  default=false/>
<attribute name=roles use=optional>
<simpleType>
<list itemType=QName/>
</simpleType>
</attribute>
       </extension>
     </complexContent>
</complexType>

</fragment>

I have chosen not to use ENTITIES, IDREFS or NMTOKENS because they
ground at NCName and not QName. Hence I have constructed a specific
list type. It probably makes sense to impose a restriction on
minLength=1 to the list but I don't know how to do that in the context
of the schema we have.

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 Thursday, 18 November 2004 15:01:23 UTC