- From: Amelia A. Lewis <alewis@tibco.com>
- Date: Thu, 02 Oct 2003 13:17:27 -0400
- To: Sanjiva Weerawarana <sanjiva@watson.ibm.com>
- Cc: jeffsch@windows.microsoft.com, www-ws-desc@w3.org
Oh, no!
On Thu, 02 Oct 2003 22:54:34 +0600
Sanjiva Weerawarana <sanjiva@watson.ibm.com> wrote:
> "Jeffrey Schlimmer" <jeffsch@windows.microsoft.com> writes:
> >
> > Would fault/messageReference resolve to
> > interface/operation/{input,output}? Or would it resolve to something
> > defined by interface/@pattern?
>
> I'm confused .. let me try a full syntax example:
>
> <interface name="foo">
> <operation name="this-is-irrelevant"
> pattern="http://mypatterns.org/pattern1">
> <input messageReference="M1" headers=".." body=".."/>
> <input messageReference="M2" body=".."/>
> <output messageReference="M3" body=".."/>
> <output messageReference="M4" body=".."/>
> <fault messageReference="F1" details=".."/>
> <fault messageReference="F2" details=".."/>
> <fault messageReference="F3" details=".."/>
> </operation>
> </interface>
>
> So, presumably the pattern @ http://../pattern1 has messages called
> M1..M4 and fault messages called F1..F3 that fly back or forth. The
> value of operation/fault/@messageReference will be on of the names
> F1..F3 given by the pattern definition and therefore the pattern
> definition would indicate which way the message is flow (in or out).
I can't support this! It would force the definition of faults back into
the patterns, rather than using the fault rulesets. Here's a simple
counterexample of what I thought we were discussing:
<interface name="foo">
<operation name="this-is-irrelevant"
pattern="http://mypatterns.org/pattern1">
<input messageReference="M1" headers=".." body=".."/>
<output messageReference="M2" body=".."/>
<fault messageReference="M2" details="F1"/>
<fault messageReference="M2" details="F2"/>
<fault messageReference="M4" details="F3"/>
</operation>
</interface>
That's an input-output pattern, and it uses fault-replaces-message.
Here's the same, with message-triggers-fault:
<interface name="foo">
<operation name="this-is-irrelevant"
pattern="http://mypatterns.org/pattern1">
<input messageReference="M1" headers=".." body=".."/>
<output messageReference="M2" body=".."/>
<fault messageReference="M1" details="F1"/>
<fault messageReference="M1" details="F2"/>
<fault messageReference="M2" details="F1"/>
<fault messageReference="M2" details="F3"/>
</operation>
</interface>
In the first pattern, the only place a fault can occur is replacing
message M2. Note that this could be minimized, in the same way that
input/@messageReference and output/@messageReference can be minimized
(omitted, that is). If there's only one thing it can be, then it
becomes optional.
In the second pattern, a fault may be triggered by either message. The
fault/@messageReference is therefore required (although
input/@messageReference and output/@messageReference could be omitted).
In the second example, fault F1 may be sent in either direction; F2 can
only be triggered by message M1, and F3 can only be triggered by M2.
I *really* don't want to fall back into the place where we have to
define every possible location in which a fault occurs, which the
proposal I'm responding to seems to require.
> Thus, whether a fault is inbound or outbound is fully determined
> based on the messageReference the fault element indicates.
Still true, largely. Actually, in the examples I provide above,
direction is determined by @messageReference + the fault ruleset used by
the pattern. The relationship is probably slightly more obvious for
fault-replaces-message. An interesting variation might be: use
attributes @replaces="messageReference" or
@triggeredBy="messageReference".
> Now, can you re-ask your question please? I didn't grok it at all.
Amy!
(offering water ...)
--
Amelia A. Lewis
Architect, TIBCO/Extensibility, Inc.
alewis@tibco.com
Received on Thursday, 2 October 2003 13:17:29 UTC