- From: Sanjiva Weerawarana <sanjiva@watson.ibm.com>
- Date: Fri, 3 Oct 2003 22:52:26 +0600
- To: <www-ws-desc@w3.org>
This is a revised proposal based on the discussion on the mailing
list the last few days. I would appreciate if you say +1 if you
are ok with this etc. and give concrete suggestions rather than
general comments. I'd like to get this written up ASAP so that
we can close on much of part1 functionality.
==================
The current draft [1] has fault reference components [2] as unfinished
business. The status quo is:
<definitions>
<interface>
<operation>
<infault
name="xs:NCName"
messages="list of xs:QName" >
<documentation />?
</infault>
<outfault
name="xs:NCName"
messages="list of xs:QName" >
<documentation />?
</outfault>
</operation>
</interface>
</definitions>
I propose we use the following instead:
<definitions>
<interface>
<operation>
<input ../>*
<output ../>*
<fault messageReference="xs:NCName" details="xs:QName"/>*
</operation>
</interface>
</definitions>
where fault/@messageReference indicate the message in the pattern
that this fault element is declaring concrete detail information
for, and @details indicates the XML element which represents
all the data that is available if/when this fault occurs. The
direction of the fault (inbound vs. outbound) is implied by
the value of @messageReference (see my messages about how
operation/input and operation/output are redundant for further
details). Note that we allow multiple <fault> elements with the
same @messageReference value - this is the mechanism to indicate
the multiple faults that may occur in the same message role played
by @messageReference.
In component model-speak, I propose that a fault reference
component have two properties:
- a {message reference} property, ala that of message references
- a {details} property indicating an element defining the contents
of the fault message
The constraints on {message reference} would have to be written
up as per the above paragraph.
The binding message reference components [3] for referring to faults
from inside a binding would also need to change to be consistent with
this approach. Basically, instead of:
<definitions>
<binding>
<operation>
...
<infault
name="xs:NCName" >
<documentation />?
</infault>
<outfault
name="xs:NCName" >
<documentation />?
</outfault>
</operation>
</binding>
</definitions>
I propose:
<definitions>
<binding>
<operation>
...
<fault messageReference="xs:NCName" details="xs:QName"?>
<code>...</code>
<subcode>...</subcode>
<documentation />?
</fault>
</operation>
</binding>
</definitions>
Note that the optional fault/@details attribute would allow one
to disambiguate between mutiple occrurences of
interface/operation/fault with the same @messageReference value.
Faults defined as above would have a natural default SOAP
binding: the details element goes inside the <details>
element of a SOAP fault and Other bindings can define suitable
binding rules.
ISSUES:
------
- Roberto & Tom have expressed a preference to using <infault>/
<outfault> instead of what I wrote above. Can you guys live with
my writing this up with an issue for this?
Sanjiva.
[1] http://tinyurl.com/p7m5
[2] http://tinyurl.com/p3dg
[3] http://tinyurl.com/p7t4
Received on Friday, 3 October 2003 12:52:57 UTC