- From: Amelia A. Lewis <alewis@tibco.com>
- Date: Mon, 03 Nov 2003 10:16:50 -0500
- To: Jean-Jacques Moreau <jean-jacques.moreau@crf.canon.fr>
- Cc: sanjiva@watson.ibm.com, www-ws-desc@w3.org, youenn.fablet@crf.canon.fr
A couple of comments, and a third alternative proposal.
On Mon, 03 Nov 2003 10:46:32 +0100
Jean-Jacques Moreau <jean-jacques.moreau@crf.canon.fr> wrote:
> I would like to make the following alternative proposal. I believe it
> addresses Sanjiva's main issues.
>
> The syntax for an in-out operation would be as follows:
>
> <interface name="xs:NCName"
> extends="list of xs:QName"?
> styleDefault="xs:anyURI"?>
> <operation name="xs:NCName"
> pattern=".../in-out"
> style="xs:anyURI"?>
> <A body="xs:QName"?
> headers="list of xs:QName"?/>
> <B body="xs:QName"?
> headers="list of xs:QName"?/>?
> <F details="xs:QName"/>*
Comment 1: faults are not named in patterns. This part of the proposal
therefore won't work. Faults are associated with messages; the
tag-names of the faults then would replicate those of the messages.
Also not good, since it creates ambiguity about what is a fault and what
is a message. In short, minimum syntax for a fault must be something on
the order of:
<fault messageReference="xs:NCName" details="xs:QName" />
This assumes that the messageReference is named in the pattern, with a
simple name. If, using Jean-Jacques proposal, we were to go for
per-message tag-names, then we might have @messageReference="xs:QName".
> </operation>
> </interface>
>
> Other patterns would be treated in a similar way.
>
> Note: we might wish to define A, B, etc. in a different namespace, for
>
> example "wsdlp".
>
> Note: this is not a fully-fledged proposal, which people are unlikely
> to have time to read before the f2f. I am happy to draft an enhanced
> proposal if the WG wishes so.
>
> Comments on Sanjiva's proposal below. Basically, I am concerned
> Sanjiva's proposed syntax trades-off clarity for heuristics.
I agree. I think that it is possible to achieve much of it without
introducing variable tag-names for messages, though, which is the
substance of my proposal, below. More comments first.
> Jean-Jacques.
>
> Sanjiva Weerawarana wrote:
>
> > This is a follow-up email to the proposal I made at the last F2F
> > to introduce some defaulting rules to make the syntax for
> > in-out and in-only patterned operations more syntactically
> > pleasing.
> >
> > Status quo syntax for operations:
> > --------------------------------
> >
> > <interface name="xs:NCName"
> > extends="list of xs:QName"?
> > styleDefault="xs:anyURI"?>
> > <operation name="xs:NCName"
> > pattern="xs:anyURI"
> > style="xs:anyURI"?>
> > <input messageReference="xs:NCName"
> > body="xs:QName"?
> > headers="list of xs:QName"?/>*
> > <output messageReference="xs:NCName"
> > body="xs:QName"?
> > headers="list of xs:QName"?/>*
> > <infault messageReference="xs:NCName"
> > details="xs:QName"/>* <outfault
> > messageReference="xs:NCName" details="xs:QName"/>*
> > </operation>
> > </interface>
> >
> >
> > Problems with status quo:
> > ------------------------
> >
> > - User has to remember pattern URIs, even for simple operations
>
> Srictly speaking, the user has to remember only the pattern URI's
> tail, i.e. in-only, in-out, out-only, etc; the rest
> (http://www.w3.org/@@@@/@@/wsdl/) is WSDL's standard prefix.
> Remembering the tail sounds simple enough to me.
+1 to JJM's commment.
> > - User has to know contents of pattern spec to know proper values
> > for @messageReference (typically 'A', 'B' etc. right now).
>
> Perhaps. However, again, 'A', 'B', etc. look to me like names the user
>
> is likely to be able to remember.
Here I find myself in agreement with Sanjiva. For the common case in
which there is a single message in a particular direction, I think
requiring that the user remember the name with which that message is
defined within the message is a potential burden.
> > The
> > value for @messageReference is *not* user settable, while the
> > other attributes are - which I believe to be counter-intuitive.
>
> Yes. However I think we can address this in a different way (see
> proposal above).
>
> > - "input" and "output" are redundant as the pattern defines the
> > direction of the message - thus the indicated message reference
> > already has a set direction and the user cannot change it. Thus
> > indicating both message reference and input vs. output is an
> > an opportunity for errors
>
> Agreed. I think we can address this in a different way as well (see
> proposal above).
>
> > - "infault" / "outfault" separation similarly redundant and
> > error-prone
>
> Ibid.
I disagree with both of these.
Here's a third outline
<interface name="xs:NCName"
extends="list of xs:QName"?
styleDefault="xs:anyURI"?>
<operation name="xs:NCName"
pattern="xs:anyURI"
style="xs:anyURI"?>
<input messageReference="xs:NCName"?
body="xs:QName"?
headers="list of xs:QName"?/>*
<output messageReference="xs:NCName"?
body="xs:QName"?
headers="list of xs:QName"?/>*
<infault messageReference="xs:NCName"? details="xs:QName"/>*
<outfault messageReference="xs:NCName"? details="xs:QName"/>*
</operation>
</interface>
Proposed syntactic changes:
- Make
interface/operation/(input|output|infault|outfault)/@messageReference
optional
(this was one of Sanjiva's proposals)
Introduce the following rule:
- When a pattern contains only one message in a given direction,
then the messageReference attribute is optional. When a pattern
contains more than one message in a given direction, then the
messageReference attribute is required (to disambiguate which message is
defined by the element).
This is a simpler proposal, which reduces the burden where the real
redundancy is. It also does not make the patterns defined by the
working group special cases with special privileges, which I believe to
be inappropriate. It does not introduce a large number of new element
names into the content of <operation>. It *does* allow shortcuts not
only for simple patterns defined by the WSD WG, but also by
developers/designers who provide additional simple patterns.
> > To me, requiring users to remember pattern URIs for the everyday
> > patterns is unacceptable. Furthermore, requiring *users* to know
> > the content of the patterns spec for those patterns (so that they
> > can assign proper values for @messageReference) is even worse.
> > W.r.t. the redundancies- I'd like to eliminate as many redundancies
> > as possible. Finally, the motivation for the proposal is to keep the
> > simple case simple, yet not harm the complex case in any way.
I think that this makes the parse code that must be developed to
determine pattern-in-use for an operation much more difficult. I think
it also creates a learning burden for WSDL authors, who must remember
different rules for the "special patterns" than for the "generic
patterns", which I think likely to lead to invalid (impossible to
disambiguate) WSDL. Replacing this with a single rule that looks more
algorithmic (well, it does to me, anyway) seems a better solution.
Amy!
--
Amelia A. Lewis
Architect, TIBCO/Extensibility, Inc.
alewis@tibco.com
Received on Monday, 3 November 2003 10:16:52 UTC