W3C home > Mailing lists > Public > public-ws-chor@w3.org > June 2005

RE: Proposal related to ordering of finalize activities

From: Tony Fletcher <tony_fletcher@btopenworld.com>
Date: Mon, 13 Jun 2005 14:52:10 +0100
To: "'Gary Brown'" <gary@pi4tech.com>, "'WS-Choreography List'" <public-ws-chor@w3.org>
Message-ID: <000001c5701f$195e6180$0200a8c0@corp.choreology.com>
Dear Gary and others,
 
Funnily enough you proposal is vaguely familiar.  It is very similar, if not
the same, as the one I made internally before we published your contribution
to the group.  (So on that basis I suppose I ought to support it, or at
least feel somewhat vindicated!)  However, Peter changed it to the current
syntax.  I am therefore reluctant to agree the change as Peter always does
things for a good reason, if if that is not immediately obvious to the likes
of me.  It may have been as simple as leaving open the possibility of adding
in child elements to finalizerReference in the future, if needs be (already
there is an optional ANY type that can be filled).  Also if we were to make
the change then we would need to allow for several finalise elements next to
each other so would still need to have a rule about the order they were
performed in.
 
I would therefore much prefer to leave the current syntax alone and just add
a default lexical ordering rule for the few occasions when there are
multiple elements together with no other ordering rule in force.
 
Note that the problem can potentially occur wherever there is a
maxOccurs="unbounded" (actually greater than ="1") and there is no
applicable other ordering rule.  We may need to also consider exchange and
record within interaction, copy within assign, and workunit within exception
 
Best Regards     Tony
A M Fletcher
Tel: +44 (0) 1473 729537   Mobile: +44 (0) 7801 948219
 tony.fletcher@choreology.com    amfletcher@iee.org       (also
tony_fletcher@btopenworld.com)
 
-----Original Message-----
From: public-ws-chor-request@w3.org [mailto:public-ws-chor-request@w3.org]
On Behalf Of Gary Brown
Sent: 07 June 2005 21:56
To: 'WS-Choreography List'
Subject: Proposal related to ordering of finalize activities


 
 
Section 2.5.7 Finalizing a choreography
 
Change syntax from:
 
<finalize  name="ncname"? >
    <finalizerReference
            choreographyName="ncname"
            choreographyInstanceId="XPath-expression"?
            finalizerName="ncname"? />
    </finalizerReference>+
</finalize>
 
to:
 
<finalize  name="ncname"? choreographyName="ncname"
            choreographyInstanceId="XPath-expression"?
            finalizerName="ncname"? />

 
--------------------------------------------
 
Change:  

Each finalizerReference element enables a Finalizer Block in a performed
instance of an immediately enclosed Choreography. Within a finalize element,
each finalizerReference MUST refer to a different performed Choreography
instance.

to:

The finalize activity enables a Finalizer Block in a performed instance of
an immediately enclosed Choreography.

---------------------------------------------

Change:

Within the finalizerReference element, the choreographyName attribute
identifies the Choreography referenced by the choreographyName attribute of
the perform construct.

to:

The choreographyName attribute identifies the Choreography referenced by the
choreographyName attribute of the perform construct.

----------------------------------------------

Change:

Within the finalizerReference element, the OPTIONAL choreographyInstanceId
attribute identifies the performed Choreography instance to be finalized,
using the value defined by the choreographyInstanceId attribute of the
perform construct. The choreographyInstanceId attribute MAY be omitted if
the contract logic of the performing Choreography is such that only one
instance of the Choreography identified by the choreographyName attribute
could have been performed when the finalize activity is enabled. If more
than one instance of the Choreography identified by the choregraphyName
attribute could have been performed, the choreographyInstanceId attribute
MUST be present.

to:

The OPTIONAL choreographyInstanceId attribute identifies the performed
Choreography instance to be finalized, using the value defined by the
choreographyInstanceId attribute of the perform construct. The
choreographyInstanceId attribute MAY be omitted if the contract logic of the
performing Choreography is such that only one instance of the Choreography
identified by the choreographyName attribute could have been performed when
the finalize activity is enabled. If more than one instance of the
Choreography identified by the choregraphyName attribute could have been
performed, the choreographyInstanceId attribute MUST be present.

----------------------------------------

Change:

Within the finalizerReference element, the attribute finalizerName indicates
which Finalizer Block is to be enabled in the performed instance. If the
targeted, immediately enclosed, Choreography has only one defined Finalizer
Block, then the finalizerName attribute is OPTIONAL.

to:

The attribute finalizerName indicates which Finalizer Block is to be enabled
in the performed instance. If the targeted, immediately enclosed,
Choreography has only one defined Finalizer Block, then the finalizerName
attribute is OPTIONAL.

---------------------------------------------------------

Update the example:

<workunit name="chooseA"

        guard="cdl:getVariable('Chosen','','','Broker')='A'" >

        <finalize choreographyName="CoordinatedCreditAuthorization"

                choreographyInstanceId="'creditForA'"

                finalizerName="drawDown"/>

        <finalize choreographyName="CoordinatedCreditAuthorization"

                choreographyInstanceId="'creditForB'"

                finalizerName="replenish"/>

    </workunit>            



    <workunit name="chooseB"

        guard="cdl:getVariable('Chosen','','','Broker')='B'" >

        <finalize choreographyName="CoordinatedCreditAuthorization"

                choreographyInstanceId="'creditForB'"

                finalizerName="drawDown"/>

        <finalize choreographyName="CoordinatedCreditAuthorization"

                choreographyInstanceId="'creditForA'"

                finalizerName="replenish"/>

    </workunit>            



    <workunit name="chooseNeither"

        guard="cdl:getVariable('Chosen','','','Broker')='0'" >

        <finalize choreographyName="CoordinatedCreditAuthorization"

                choreographyInstanceId="'creditForA'"

                finalizerName="replenish"/>

        <finalize choreographyName="CoordinatedCreditAuthorization"

                choreographyInstanceId="'creditForB'"

                finalizerName="replenish"/>

     </workunit> 
 
The schema will also need to be updated.
Received on Monday, 13 June 2005 13:52:18 GMT

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