W3C home > Mailing lists > Public > public-ws-chor@w3.org > September 2004

Re: Issue 742 - Proposal for discussion

From: Nickolas Kavantzas <nickolas.kavantzas@oracle.com>
Date: Mon, 20 Sep 2004 08:34:57 -0700
Message-ID: <414EF8A1.F4D90A8D@oracle.com>
To: Gary Brown <gary@enigmatec.net>
CC: public-ws-chor@w3.org


Gary Brown wrote:

> Had a look at the example, and don't see that a "globalized trigger" would
> be necessary to define this use case.

I think we may want to go through this example on the F2F and see what is *needed*.

>
>
> The main point in my previous response was how would you handle the issue of
> the consistency between the expressions at the different roles? If the
> expressions evaluated differently, then the roles would take different
> paths. There would be no way to model check this for consistency, so it
> would be down to the user to ensure this would not happen, which leads to a
> high risk of errors being introduced.
>

But if you don't have this *globalised* concept (remember there are more of this type: globalised choice,
globalised parallel, globalised sequence, globalised interact) how are you giving the global picture of the system?

Don't you think that this is required?

>
> Regards
> Gary
>
> ----- Original Message -----
> From: "Nickolas Kavantzas" <nickolas.kavantzas@oracle.com>
> To: "Gary Brown" <gary@enigmatec.net>
> Cc: <public-ws-chor@w3.org>
> Sent: Friday, September 17, 2004 5:12 PM
> Subject: Re: Issue 742 - Proposal for discussion
>
> > Have you looked into the FIX use-cases as I pointed out earlier?
> >
> > For example in FIX4.4, vol4 (march 25, 2003 draft) document, page 49:
> > Take A.1.a - Filled Order as the use-case at hand (no races or other
> "complicated stuff").
> >
> > Don't you think that the "globalized trigger" would be used to code this
> use-case?
> >
> > --
> > Nick
> >
> > Gary Brown wrote:
> >
> > > Hi
> > >
> > > So if I understand you correctly, each role (projected endpoint) would
> apply
> > > its own expression from the globalized trigger, to determine which path
> it
> > > takes?
> > >
> > > Then we may have an issue with consistency? How do we know if the list
> of
> > > expressions in the globalized trigger would cause the same path to be
> taken
> > > in all relevant roles?
> > >
> > > Still think a use case is required to justify this concept.
> > >
> > > Regards
> > > Gary
> > >
> > > ----- Original Message -----
> > > From: "Nickolas Kavantzas" <nickolas.kavantzas@oracle.com>
> > > To: "Gary Brown" <gary@enigmatec.net>
> > > Cc: <public-ws-chor@w3.org>
> > > Sent: Thursday, September 16, 2004 5:49 PM
> > > Subject: Re: Issue 742 - Proposal for discussion
> > >
> > > >
> > > > WS-CDL is about the "globalised-view" of the collaborations (per our
> > > mission statement):
> > > >
> > > > A Choreography defines re-usable patterns of collaborative behavior,
> > > agreed between two or more interacting peer-to-peer parties.
> > > > A Choreography defines the re-usable patterns of behavior, as the
> > > action(s) performing the actual work, such as globalised
> > > > exchange of messages (matched send and receive operations) , when the
> > > specified globalised ordering constraints are satisfied.
> > > >
> > > > -An Interact is an example of a globalised action.
> > > > -A reaction guard in a Work Unit creates globalised ordering
> constraints.
> > > >
> > > > Note that globalised view does not mean that global-coordination
> machinery
> > > is needed. What it portrais is a complete view of the
> > > > big picture. The WS-CDL projection to endpoint logic will create the
> > > localised view of the message exchanges and of the ordering constraints.
> > > >
> > > > IMHO, a simple use-case from FIX (even without a Race Condition)
> requires
> > > a globalised guard. BTW, this feature existed
> > > > in WS-CDL from the very beginning but it was not crispy clear in the
> text
> > > as it is now with the function extension and the new
> > > > proposed explanation text in the workunit section.
> > > >
> > > > Gary Brown wrote:
> > > >
> > > > > Hi Nick
> > > > >
> > > > > What is the requirement for the globalizedTrigger function?
> > > > >
> > > > > Do you have a concrete use case where this is required?
> > > > >
> > > > > Regards
> > > > > Gary
> > > > >
> > > > > ----- Original Message -----
> > > > > From: "Nickolas Kavantzas" <nickolas.kavantzas@oracle.com>
> > > > > To: <public-ws-chor@w3.org>
> > > > > Sent: Wednesday, September 15, 2004 4:54 PM
> > > > > Subject: Issue 742 - Proposal for discussion
> > > > >
> > > > > >
> > > > > > For resolving issue 742
> > > > > (http://www.w3.org/Bugs/Public/show_bug.cgi?id=742) here is my
> > > > > > proposal:
> > > > > >
> > > > > >
> > > > > > Here are the proposed changes for section 2.4.5:
> > > > > >
> > > > > > The following rules apply for a Work Unit matching:
> > > > > >
> > > > > >  When a guard condition is not specified then the Work Unit
> always
> > > > > matches
> > > > > >  When a repetition condition is not specified then the Work Unit
> is
> > > not
> > > > > matched again
> > > > > >  When a guard condition or repetition condition is specified
> then:
> > > > > > o One or more variables can be specified in a guard condition or
> > > > > repetition condition, using XPATH and the WS-CDL functions, as
> described
> > > in
> > > > > Section 10.
> > > > > > o The WS-CDL function getVariable() is used in the guard or
> repetition
> > > > > condition to obtain or set the information of a variable
> > > > > > o When the WS-CDL function isVariableAvailable() is used in the
> guard
> > > or
> > > > > repetition condition, it means that the Work Unit that specifies the
> > > guard
> > > > > condition is checking if a variable is already available at a
> specific
> > > Role
> > > > > or is waiting for a variable to become available at a specific Role
> > > > > > o When the WS-CDL function variablesAligned() is used in the guard
> or
> > > > > repetition condition, it means that the Work Unit that specifies the
> > > guard
> > > > > or repetition condition is waiting for an appropriate alignment
> > > Interaction
> > > > > to happen between the two Roles. When the variablesAligned() WS-CDL
> > > function
> > > > > is used in a guard or repetition condition, then the Relationship
> Type
> > > > > within the variablesAligned() MUST be the subset of the Relationship
> > > Type
> > > > > that the immediate enclosing Choreography defines. In the example
> below,
> > > the
> > > > > guard condition specifies that the enclosed Work Unit is waiting for
> an
> > > > > alignment Interaction to happen between the customer Role and the
> > > retailer
> > > > > Role:
> > > > > >
> > > > > > guard="cdl:variablesAligned(
> > > > > >                "PurchaseOrderAtBuyer", "PurchaseOrderAtSeller",
> > > > > >                "customer-retailer-relationship")"
> > > > > > o If variables are defined at different Roles, then they can be
> > > combined
> > > > > together in a guard condition or repetition condition using only the
> > > > > globalizedTrigger() WS-CDL function
> > > > > > o If variables are defined at the same Role, then they can be
> combined
> > > > > together in a guard condition or repetition condition using all
> > > available
> > > > > XPATH operators and the WS-CDL functions except the
> globalizedTrigger()
> > > > > WS-CDL function
> > > > > > o When the block attribute is set to "false", then the guard
> condition
> > > or
> > > > > repetition condition assumes that the variable information is
> currently
> > > > > available.
> > > > > > o If either the variable information is not available or the guard
> > > > > condition evaluates to "false", then the Work Unit matching fails
> and
> > > the
> > > > > Activity-Notation enclosed within the Work Unit is skipped.
> > > > > > o If either the variable information is not available or the
> > > repetition
> > > > > condition evaluates to "false", then the Work Unit is not matched
> again.
> > > > > > o When the block attribute is set to "true" and one or more
> > > variable(s)
> > > > > are not available, then the Work Unit MUST block waiting for the
> > > variable
> > > > > information to become available.
> > > > > > o When the variable information specified by the guard condition
> > > become
> > > > > available then the guard condition is evaluated. If the guard
> condition
> > > > > evaluates to "true", then the Work Unit is matched. If the guard
> > > condition
> > > > > evaluates to "false", then the Work Unit matching fails and the
> > > > > Activity-Notation enclosed within the Work Unit is skipped.
> > > > > > o When the variable information specified by the repetition
> condition
> > > > > become available then the repetition condition is evaluated. If the
> > > > > repetition condition evaluates to "true", then the Work Unit is
> matched
> > > > > again. If the repetition condition evaluates to "false", then the
> Work
> > > Unit
> > > > > is not matched again.
> > > > > >
> > > > > >
> > > > > >
> > > > > > Here are the proposed changes for section 10:
> > > > > >
> > > > > > 10 WS-CDL Supplied Functions
> > > > > > There are several functions that the WS-CDL specification supplies
> as
> > > > > XPATH 1.0 extension functions. These functions can be used in any
> XPath
> > > > > expression as long as the types are compatible.
> > > > > >
> > > > > > ...
> > > > > > xsd:any getVariable(xsd:string varName, xsd:string documentPath?,
> > > > > xsd:QName  roleName?)
> > > > > > Returns the information of the variable with name varName as a
> node
> > > set
> > > > > containing a single node. The second parameter is optional. When the
> > > second
> > > > > parameter is not used, this function retrieves from the variable
> > > information
> > > > > the entire document. When the second parameter is used, this
> function
> > > > > retrieves from the variable information, the fragment of the
> document at
> > > the
> > > > > provided absolute location path. The third parameter is optional.
> When
> > > the
> > > > > third parameter is used that the variable information MUST be
> available
> > > at
> > > > > the Role specified by roleName. If this parameter is not used then
> the
> > > Role
> > > > > is inferred from the context that this function is used.
> > > > > >
> > > > > > xsd:boolean isVariableAvailable(xsd:string varName, xsd:QName
> > > roleName)
> > > > > > Returns "true" if the information of the variable with name
> varName is
> > > > > available at the Role specified by roleName. Returns "false"
> otherwise.
> > > > > >
> > > > > > xsd:boolean variablesAligned(xsd:string varName, xsd:string
> > > withVarName,
> > > > > >                                                xsd:QName
> > > > > relationshipName)
> > > > > > Returns "true" if within a Relationship specified by
> relationshipName
> > > the
> > > > > variable with name varName residing at the first Role of the
> > > Relationship
> > > > > has aligned its information with the variable named withVarName
> residing
> > > at
> > > > > the second Role of the Relationship.
> > > > > >
> > > > > > xsd:boolean globalizedTrigger(xsd:string expression, xsd:string
> > > roleName,
> > > > > xsd:string expression2, xsd:string roleName2, .)
> > > > > > Combines expressions that include variables that are defined at
> > > different
> > > > > Roles.
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Nick
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > >
> > > >
> >
Received on Monday, 20 September 2004 15:35:40 GMT

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