OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ws-caf message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [ws-caf] [Bug 135] New: participating-services list needs to have defined semantics and modification mechanisms or be removed


<humour-impaired>
I figured it was a joke.
</humour-impaired>

;-)

Mark.

>===== Original Message From "Furniss, Peter" <Peter.Furniss@choreology.com> 
=====
>Yes, of course. I was teasing Eric.  There is a smiley in my message.
>
>In fact, I wasn't quite sure whether Eric's suggestions about not
>copying the context
>referred only to the participating-services-list or covered the use of
>contexts in
>general. Some of the peculiarities of behaviour I described in my first
>message, for the
>by-value case, are the inevitable consequences of by-value propagation,
>and apply to
>other fields as well. To object to these is to object to by-value.
>
>However, since these peculiarities are pretty much what
>transaction-contexts want
>(unsurprising, since tx contexts
>have been propagated by value for at least 20 years), by-value is
>appropriate there.
>
>I wasn't going to propose dropping by-value again, but if Eric wanted to
>..   :-) [JOKE !!!]
>
>However, I would still very much like to see a worked-out example of an
>application that would
>interoperably switch between by-value and by-reference, with precise
>statements of
>the behaviour required of the parties in various circumstances. I
>continue to doubt
>the viability of such a beast. Perhaps other members of the TC are just
>bursting
>with such examples that are fully worked-out but they can't divulge for
>confidentiality
>reasons. But until someone shows me one, I will suspect it is a mythical
>animal. (In fact,
>there is a name for it - a chimaera, a lion-goat-snake mixture.)
>
>Peter
>
>> -----Original Message-----
>> From: Mark Little [mailto:Mark.Little@arjuna.com]
>> Sent: 27 June 2004 19:25
>> To: Furniss, Peter; Newcomer, Eric; ws-caf@lists.oasis-open.org
>> Subject: RE: [ws-caf] [Bug 135] New: participating-services
>> list needs to have defined semantics and modification
>> mechanisms or be removed
>>
>>
>> Peter, I think you were joking, but: there is no such
>> proposal on the table
>> for abolishing context-by-value. This has been discussed
>> several times over
>> the lifetime of this TC (at face-to-face meetings and in
>> teleconferences) and
>> each time it has been agreed to support both the reference
>> and value form.
>> That decision has been made. We now need to move on to other issues.
>>
>> Mark.
>>
>> >===== Original Message From "Furniss, Peter"
>> ><Peter.Furniss@choreology.com>
>> =====
>> >That seems to be a proposal to abolish context-by-value and use
>> >context-by-reference only.
>> >
>> >I might support that :-)
>> >
>> >Peter
>> >
>> >> -----Original Message-----
>> >> From: Newcomer, Eric [mailto:Eric.Newcomer@iona.com]
>> >> Sent: 26 June 2004 13:46
>> >> To: Furniss, Peter; ws-caf@lists.oasis-open.org
>> >> Subject: RE: [ws-caf] [Bug 135] New: participating-services list
>> >> needs to have defined semantics and modification mechanisms or be
>> >> removed
>> >>
>> >>
>> >> I guess we are going to need some discussion on this, or
>> at least a
>> >> proposal to review.  What I was talking about eliminates
>> the need for
>> >> copying the context, it would become a Web resource instead.
>> >>
>> >> -----Original Message-----
>> >> From: Furniss, Peter [mailto:Peter.Furniss@choreology.com]
>> >> Sent: Friday, June 25, 2004 7:06 PM
>> >> To: Newcomer, Eric; ws-caf@lists.oasis-open.org
>> >> Subject: RE: [ws-caf] [Bug 135] New: participating-services list
>> >> needs to have defined semantics and modification mechanisms or be
>> >> removed
>> >>
>> >>
>> >> Eric,
>> >>
>> >> I don't entirely understand what you are suggesting. Some of this
>> >> seems to be suggesting an alternative to the Context Service and
>> >> Context Manager interfaces that are currently in the spec, which I
>> >> doubt is your meaning. What is a context-by-reference
>> other than "a
>> >> Web resource accessible by all participants".
>> >>
>> >> But concerning the participating-services list specifically, the
>> >> protocol used in the by-reference case is a secondary matter - I
>> >> suggested an extension to Context Manager because we were
>> using wsdl
>> >> & soap mechanisms for other interactions, although one
>> could use get
>> >> and put there as well (though then has to be some specification of
>> >> exactly what url to use for what). But, as I
>> >> say, that is secondary.
>> >>
>> >> The primary question is how the "epistomology" of the
>> >> participating-services list works - how is information
>> accumulated in
>> >> various copies of the context, and who has responsibility
>> for causing
>> >> an update to the list (regardless of the particular distribution
>> >> mechanisms used to achieve that update). On this, you
>> raise the point
>> >> of persistence/non-persistence which I hadn't considered
>> >> -
>> >> possibly that's orthogonal to the participation list - if a
>> >> holder of a copy of the context loses it, then that copy
>> >> goes, along with any information that was held in that copy
>> >> and nowhere else.
>> >>
>> >> If a participating services list in *any* copy of a context is to
>> >> have any clear meaning, there needs to be explicit
>> statement of the
>> >> mechanisms that get the information into the copy.
>> >>
>> >> So, could you propose text defining what the mechanisms are - who
>> >> MUST or MAY send GET, PUT or POST to which uri (i.e. where
>> it got the
>> >> uri from) and in response to which events ?
>> >>
>> >> That would still leave the choices A-E that I had - where is that
>> >> specified put and when is it required.  And if the answer
>> is D - it
>> >> is specified in a referencing specification, we can wait
>> till we have
>> >> a use case that needs it (thus helping work out what is actually
>> >> needed - and you don't need to work it out now), and omit the
>> >> field from the base context.
>> >>
>> >>
>> >> Peter
>> >>
>> >> > -----Original Message-----
>> >> > From: Newcomer, Eric [mailto:Eric.Newcomer@iona.com]
>> >> > Sent: 25 June 2004 17:29
>> >> > To: Furniss, Peter; ws-caf@lists.oasis-open.org
>> >> > Subject: RE: [ws-caf] [Bug 135] New: participating-services list
>> >> > needs to have defined semantics and modification
>> mechanisms or be
>> >> > removed
>> >> >
>> >> >
>> >> > Peter,
>> >> >
>> >> > Actually I'd prefer a description of this a bit the other way
>> >> > around, i.e. define the sharing as a Web resource
>> accessible by all
>> >> > participants rather than try to define rules for copying and
>> >> > sharing by value.
>> >> >
>> >> > A minimal protocol for me would be along the lines of
>> REST instead
>> >> > of the old RPC oriented style of copy-in, copy-out since we
>> >> > probably can't assume the use of persistent sessions at
>> the minimal
>> >> > Web services implementation level.  Once we get to
>> coordinators and
>> >> > other "referencing specifications" I think it's more
>> reasonable to
>> >> > assume the possibility of the manipulation of data by the
>> >> > implementation.
>> >> >
>> >> > At the simplest level I think I'd want to propose a
>> protocol based
>> >> > on URI passing and the concept of a shared Web resource context
>> >> > that eveyone can access (i.e. via standard GET and PUT
>> operations)
>> >> > rather than try to work out semantics of passing the context
>> >> > structure around among the various implementation agents
>> involved.
>> >> >
>> >> > Once you have the agents anyway (i.e. coordinators) I think the
>> >> > data passing protocol would make more sense.  But for the bare
>> >> > context spec, and a minimal usage of the mechanism, I think the
>> >> > REST oriented shareable Web resource approach makes more sense.
>> >> >
>> >> > Eric
>> >> >
>> >> > -----Original Message-----
>> >> > From: Furniss, Peter [mailto:Peter.Furniss@choreology.com]
>> >> > Sent: Friday, June 25, 2004 12:05 PM
>> >> > To: ws-caf@lists.oasis-open.org
>> >> > Subject: RE: [ws-caf] [Bug 135] New: participating-services list
>> >> > needs to have defined semantics and modification
>> mechanisms or be
>> >> > removed
>> >> >
>> >> >
>> >> > There is a need for clarification on the meaning of the
>> >> > participating-services list in the context. This message
>> attempts
>> >> > to provide text towards that, but ends up concluding it
>> shouldn't
>> >> > be in the base context spec.
>> >> >
>> >> > I believe the only explanation at present is:
>> >> >
>> >> > "An optional list of the Web services currently participating in
>> >> > the activity, called participating-services."
>> >> >
>> >> > For this to be useful in any particular use of ws-context a
>> >> > considerable amount of additional specification would be needed.
>> >> > Since it is a field in an interoperable protocol, the
>> definition of
>> >> > what it means has to be defined in the protocol, and since it
>> >> > concerns distributed information, the semantic definition will
>> >> > impose behavioural requirements on the implementations
>> taking part.
>> >> > In the absence of clearly defined responsibilities on
>> the context
>> >> > manager, on the systems invoking Web services to which they pass
>> >> > the context, and on Web services receiving the context
>> the contents
>> >> > of the list will have no meaning, and no reliance can be
>> put on the
>> >> > presence or absence of an entry in the list. The following is
>> >> > an attempt to provide, or outline, this additional
>> >> > specification. There are then questions of placement - where
>> >> > such text goes and under what circumstances implementations
>> >> > are required to follow the procedures defined.
>> >> >
>> >> > The specification text here is not complete, but should make it
>> >> > clear what would be needed to complete it. In some cases
>> there are
>> >> > specification-time choices of action
>> >> > - these are shown as [ one way | another way].
>> Explanations are put
>> >> > in Notes - these might or might not end up in the specification
>> >> > text.
>> >> >
>> >> > The behaviour required to enforce the semantics have to be
>> >> > completely different depending on whether the context is
>> propagated
>> >> > by value (and evolves into divergent forms) or by
>> reference (and is
>> >> > owned by the context manager). In consequence, the
>> meaning of the
>> >> > list is different too.
>> >> >
>> >> > The elements of the list are assumed to be URI's, as in 0.3, but
>> >> > they probably ought to be service-references.
>> >> >
>> >> >
>> >> > When a context is created the participating-services list MAY be
>> >> > omitted, but if present it MUST be empty.
>> >> >
>> >> > With propagation by value:
>> >> >
>> >> > Assumption: application entities (web service users and web
>> >> > services) retain a copy of a context which is used when
>> the context
>> >> > is propagated on to other web services. (In practice an
>> "entity" is
>> >> > defined by the possession of a single copy of the context.)
>> >> >
>> >> > An entity that propagates a context to a Web service
>> MUST add the
>> >> > URI it is using to access that Web service to its own
>> copy of the
>> >> > context prior to sending the context to that Web service, unless
>> >> > that URI is already in the list. A Web service that receives a
>> >> > context MUST retain all members of the
>> participating-services list
>> >> > in its own copy of the context (this will include its own URI as
>> >> > used by the entity propagating the context to it). An entity MAY
>> >> > add URI's for Web services to the participating-services list of
>> >> > its copy in advance of any attempt to propagate to that Web
>> >> > service.
>> >> >
>> >> > Note -- the nature of propagation by value will mean the list of
>> >> > participating-services present in any particular copy
>> will always
>> >> > include the immediate ancestors in the propagation path from the
>> >> > first web service that received the context (but not the entity
>> >> > that issued begin to the Context service). It may
>> include "lateral
>> >> > relations" - siblings of itself or of an immediate ancestor if
>> >> > these were invoked before the direct line, or the URI
>> was known and
>> >> > added to the context before the invocation in the direct
>> line.  It
>> >> > will not include services that were involved in the activity by
>> >> > ancestors after the context was propagated on the direct line, or
>> >> > any that were involved from non-ancestors -- endnote
>> >> >
>> >> >
>> >> > [possible additional rule:   If a context a received by a Web
>> >> > service is
>> >> > found to
>> >> > have the same context identifier as an already known and
>> retained
>> >> > context, the participating-services lists MUST be merged
>> and only
>> >> > one copy of the context retained. ]
>> >> >
>> >> >
>> >> > Note -- it is difficult to see how any useful interpretation of
>> >> > "currently" in the definition quoted above can be achieved with
>> >> > propagation by value. It appears to imply that a service
>> ceases to
>> >> > be "currently participating" at some point and is
>> removed from the
>> >> > list. The only generally definable point would be when the web
>> >> > service returns or replies to the message that carried the
>> >> > propagating context. But this won't necessarily be well
>> defined in
>> >> > the case of "asynchronous" replies. A clear definition could be
>> >> > achieved by having an anti-context
>> >> > (context-reply) element that could be put in the header of a
>> >> > reply message, indicating that the replying web service had
>> >> > completed its participation, - if this existed there would be
>> >> > extra text explaining that a web service uri was removed from
>> >> > the list when the context-reply was received. (actually it
>> >> > needs to count out the propagations to that web service and
>> >> > count back the replies, removing the uri only when the in use
>> >> > count falls to zero.
>> >> >
>> >> > Even if this were done, what use the list would then have on a
>> >> > propagated context ? It would tell the receiving web
>> service which
>> >> > other webservices were participating at the point of
>> propagation,
>> >> > but this list would be invalidated by the replies from other
>> >> > sibling services.
>> >> > -- endnote
>> >> >
>> >> >
>> >> > With propagation by reference:
>> >> >
>> >> > In this case the context is maintained and held by the context
>> >> > manager, rather than by the application entities. Since
>> the context
>> >> > manager is a "public" service, there need to be additional web
>> >> > service operations on the context manager to manipulate the
>> >> > participating services list. The could either be added to the
>> >> > context manager port type, or an additional port type could be
>> >> > specified. If the latter, then either it must be defined
>> that the
>> >> > context manager port whose url is in the context must implement
>> >> > both port-types, or the context (when carried by reference) must
>> >> > carry an address
>> >> > (url) for the port implementing the
>> participation-list-manager port
>> >> > type. Since the context is kept "behind" the context
>> manager port,
>> >> > there seems little point in having a separate port for the
>> >> > participation-list-manager operation(s)
>> >> >
>> >> > The required operation of the participation-list-manager
>> >> interface is
>> >> > 	addParticipantService, with parameters of the context
>> >> > identification and
>> >> >  		a url (service-reference ?). A (context/p-list)
>> >> > manager implementation MUST
>> >> > 		add the URI to the participant-list for the
>> >> > identified context, unless
>> >> > 		it is already there. Errors will be similar to
>> >> > those for context manager's
>> >> > 		contentsSet operation.
>> >> >
>> >> >
>> >> > The behaviour of an implementation receiving a context
>> MUST be in
>> >> > accordance with the following:
>> >> >
>> >> > [EITHER:
>> >> >  Prior to invoking a webservice, an entity that propagates a
>> >> > context to a Web service MUST invoke
>> addParticipantService on the
>> >> > context manager identified in context, passing the URI of the
>> >> > service to be invoked.
>> >> > |OR
>> >> >  On receipt of a WS-context in a header, a Web service
>> must invoke
>> >> > addParticipantService on the context manager identified in the
>> >> > context, passing its own URI. ]
>> >> >
>> >> > Note -- again there is a need for removal of elements
>> from the list
>> >> > if "currently participating" is to be implemented. This would
>> >> > require another operation on the
>> participating-services-manager or
>> >> > the base context manager. The question of how to
>> determine that a
>> >> > service has ceased to be participating applies as for by-value.
>> >> >
>> >> > Ignoring the "currently" participating/removal question,
>> the list
>> >> > does seem to have some clear meaning when the context is
>> passed by
>> >> > reference. Whether this has any use is another question.
>> end rules
>> >> >
>> >> > ---
>> >> >
>> >> > the choices for where the specification of updating the
>> >> > participating-services list is placed, and when the behaviour is
>> >> > required of implementations would seem to be:
>> >> >
>> >> > A  it is included in the ws-ctx spec, and mandatory for all
>> >> > implementations of and for all uses of ws-context. The actions
>> >> > required of a receiver of a context are thus the substance of
>> >> > "mustUnderstand=true" - if you don't do them, you must
>> fault. The
>> >> > participating-services list MUST be present unless it would be
>> >> > empty.
>> >> >
>> >> > B  it is included in the ws-ctx spec, and a referencing
>> >> > specification that defines context type states whether they are
>> >> > required (similar rules about mustUnderstand (though this is the
>> >> > sort of thing that might cause us to keep the ws-ctx
>> mustUnderstand
>> >> > as well as the soap one)). A context with a context type
>> that does
>> >> > not require these procedures MUST not include the
>> >> > participating-services list.
>> >> >
>> >> > C  it is included in the ws-ctx spec, but it is up to an
>> >> > implementation whether it does it, unconstrained by any mutually
>> >> > known specification
>> >> >
>> >> > D  it is included in a referencing specification that defines a
>> >> > context type, and required of implementations that
>> implement/claim
>> >> > to understand that type
>> >> >
>> >> > E  it is just vaguely understood and implementations can
>> do it if
>> >> > they want
>> >> >
>> >> >
>> >> > this categorization ignores the difference between
>> procedures for
>> >> > by-reference and by-value
>> >> >
>> >> > --
>> >> > E is clearly absurd, and included only because that
>> appears to be
>> >> > the current position :-)
>> >> >
>> >> > C is equally absurd, as it is effectively the same as E,
>> and means
>> >> > there is no well-defined semantics of what the
>> >> > participating-service list is
>> >> >
>> >> > B means we really have a sort of "functional unit" in
>> ws-context -
>> >> > there are ws-context uses with and without
>> participating-services.
>> >> > Implementations might choose to implement these
>> mechanisms or not,
>> >> > and would need to state whether they did.
>> Implementations that did
>> >> > not could not support a referencing specification that
>> required use
>> >> > of it.
>> >> >
>> >> > A is coherent, but would seem a nuisance for uses that
>> didn't take
>> >> > advantage of the participating-services list.
>> >> >
>> >> > D - Leaving the definition of the mechanism and semantics to the
>> >> > referencing specification has the advantage of avoiding the
>> >> > ambiguities and confusions of the alternative mechanisms.
>> >> > (especially if the ref. spec. mandates by-value or by-reference
>> >> > exclusively)
>> >> >
>> >> > However, if the use and thus semantics of the list are
>> defined in a
>> >> > referencing specification, the participating-services
>> list should
>> >> > not be defined in the base context, but should be part of the
>> >> > extension to context made by such a referencing specification.
>> >> >
>> >> > ---
>> >> >
>> >> > In the light of this, I propose that solution D is
>> adopted, and the
>> >> > participating-services list is removed from the context
>> definition
>> >> > in the base spec.
>> >> >
>> >> > Peter
>> >> >
>> >>
>>
>>
>>




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]