W3C home > Mailing lists > Public > public-ws-chor@w3.org > August 2006

RE: A view on Participants and Roles

From: Tony Fletcher <tony_fletcher@btopenworld.com>
Date: Fri, 11 Aug 2006 22:44:47 +0100
To: <matthew@stickledown.com>, <public-ws-chor@w3.org>
Message-ID: <000e01c6bd8f$5e8c3de0$6701a8c0@corp.choreology.com>
Dear Matthew (and others),
Although it can get rather messy after several iterations. I have decided to
embed my comments this time around, so please see below.
Best Regards     Tony
A M Fletcher
  Tel:+44 (0) 1473 729537   Mobile: +44 (0) 7801 948219
 tony_fletcher@btopenworld.com         (also amfletcher@iee.org)
-----Original Message-----
From: public-ws-chor-request@w3.org [mailto:public-ws-chor-request@w3.org]
On Behalf Of Matthew Rawlings
Sent: 03 August 2006 21:33
To: public-ws-chor@w3.org
Subject: RE: A view on Participants and Roles

Tony -


I prefer your definition of the association between participant, role, and
message types to the specification's definition. The main difference in your
definition from the CDL specification is the association from Participant to
Role becomes aggregation rather than composition. This would all be much
clearer to picture with a metamodel for CDL. 


<Tony>I do not claim any credit or originality!  It is all 'received
wisdom'! </Tony>


Can I deduce from your statement "a participant without a role. .has no way
of participating in the choreography beings described." that you mean that a
Participant type has no identity other than as the aggregate of its Role
types? In other words, the Roles types are the sole definition and identity
of the Participant. This implies combinations of Roles types must be unique
if this is the identity of Participants. This also implies if I change the
Role types realized by the Participant type then this creates a new
Participant type. This statement I do not prefer. 


 <Tony>Well of course in XML you can always put something that is only
partly defined - an idea for the future - in as a comment.  I was referring
to a participant as a 'proper' part of the choreography when I said that if
it does not have at least one role then it has no way to send or receive a
message so it therefore can not participate in the choreography.  Now a
Participant Type, and therefore participants derived from it may have other
definitions apart from roles, such as variables.  Also although it may seem
rather odd, I do not see any reason why one should be barred from defining
two different participant types (distinguished by their name, at least.
There may be good reasons for doing that in a particular situation, though I
can not think of any for the moment.  Thus I would suggest that participant
types (and indeed participants) are distinguished by their names and not by
the combinations of role (types) they include.  However, with regard to your
last sentence above if you change the role (types) in a participant (type),
then de facto you have changed the definition and in that sense do have
something new and different.</Tony>


If we extrapolated from your argument for why Participant types must have at
least one Role type ".thus has no way of participating." does this also
require every Role type be associated with at least one Participant type?
<Tony>Yes, otherwise that role type can be omitted from the choreography
(the CDL XML document) without changing the actual choreography (the allowed
sequences of messages).</Tony> Would this also extend to every Channel type
being used at least once, and every Information type, and so on for all the
base types? Your definition of the cardinality of the associations would be
much clearer with a metamodel for CDL.

<Tony>Essentially Yes, for the same reason.  If they are not used then the
can be omitted without changing the actual choreography.  If pushed I would
have to admit that while one must define everything that is used, it can be
considered a matter of taste as to whether you ban the definition of things
that are not used.  I am not sure what happens in Java or C## and other such
programming languages if one defines data types, classes and the like and
then do not use them.  I suspect that is allowed, but a compiler might throw
out a warning message - and it would probably be useful if it did.  You
could say it should be the same in CDL.  The practice of defining types that
are not used should not actually be banned (but model checkers should


For a long running choreography that evolves (such as air traffic control
procedures or interaction on a 25 year swap contract), then it is important
that the difference when between amending a Participant type and creating a
new Participant type is understood by all implementers of the revised

<Tony>I am almost certainly doing the Working Group an injustice, but I am
not sure that this 'requirement' has been given much consideration.  If you
wish to swap out a choreography description that is governing (or being used
to police) an actual executing choreography, then I there is nothing to stop
you - as far as I am aware nothing in CDL would prevent this, but equally
there is nothing to specifically support it either.  It would be up to the
designer to either make changes that did not impact the choreography, i.e.
were essentially cosmetic, or ensure that one or more of the endpoints
participating in the choreography were changed simultaneously.  With care
you could make a sensible and smooth update, but you could also get it
horribly wrong and find that either the choreography description no longer
matched the evolving choreography, or worse, that the endpoints actually
could no longer exchange messages in a useful manner.  I actually do not see
a real distinction between amending a participant type (upping the version
number) and creating a new participant type.  Having criteria for when to
just change the version number and when to give it a completely new name can
be useful indicators of the degree of change, and perhaps the ability to
preserve backwards / forwards compatibility according to some criteria, but
at the end of the day an change is a change and something new has been


Presumably this also means I cannot distinguish between Participants that do
not participate and non-Participants that do not participate? For example
how can I identify the presence but non-participation of the deceased at
their own funeral? 

<Tony>Not sure that the analogy of the last sentence holds!  With respect to
the first there are two things you might be referring to.  Firstly there is
the CDL XML document.  This is finite and can be examined for Participant
Types that are not used as the 'basis' of participants, and also for
participants will never  be able to send a message.  There can be
choreographies that include Participant types and participants based on
those types that are only used under certain conditions, that is if the
choreography evolves in a certain way.  It seems to me that that is fine and
certainly should allowed.  For instance, one hopes one will not have to
involve a breakdown service when travelling by car, but if you do breakdown
you certainly will be glad to be able to contact them!</Tony> 


<Tony>The above comments are my current thoughts, but I am always open to
(gentle) persuasion and being (re-)educated!</Tony> 


Matthew Rawlings

+44 791 539 7824

Received on Friday, 11 August 2006 21:44:59 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 18 December 2010 01:01:46 GMT