Formal Objection to
resolution of Action Property Issue
Firstly, when the issue was
discussed within the June 4th
teleconference, it was argued that the action property ‘is for message in, not for message out.’
There are several places within the ws-addressing specification, however, that
conflict with this assertion:
- The wsa:Action
header is included within message instances where message direction is
‘Out’ (see core specification section 3.2).
- An explicit
association for wsam:action property is defined for WSDL 2.0 interface
operation output element (see section 4.4.1).
- A [direction token]
placeholder is defined for the default WSDL 2.0 action pattern (see
section 4.4.2).
- An explicit
association and default WSDL 2.0 action pattern is defined for faults,
which within the context of supported message patterns, is always message
direction out (see section 4.4.2).
- An explicit
association and default WSLD 1.1 action pattern is defined for outputs
(see section 4.4.4). Please note the WSDL 1.1 default action pattern has
no ambiguity, i.e. the value is unique within context of a port type.
Based upon language within the specification, the reader
would therefore conclude that the wsa:Action property is used to dispatch all
messages, not just messages with direction ‘In’. This is consistent with the definition provided by the core
specification.
“[the
action property] uniquely
identifies the semantics implied by [the] message.”
When measured
against this definition, the default WSDL 2.0 action pattern for faults does
NOT generate an IRI that uniquely identifies the semantics of the message, i.e.
a fault message has no meaning when considered outside the context of the
targeted operation.
Secondly, when
the issue was discussed within the teleconference, several members appeared to
agree that a ‘fix’ was warranted. But, because the ‘fix’ would break existing
implementations, the issue was closed with no action. I believe this is dangerous for two reasons:
- Little, if any, weight should be given to
existing implementations within the context of a Working Draft. It is my understanding that a call for
implementations does not occur until after a document becomes a Candidate
Recommendation. The intent of a
Working Draft is, after all, to work out the issues before the
specification is implemented.
- By deferring to existing implementations, the
group places an undue burden upon future implementations. Allow me to explain. As a work around,
it was suggested that instead of
using the wsa:Action property to dispatch a fault message, that the
message should instead be correlated with the initial message using the
wsa:RelatesTo property. This would essentially require that all future
implementations manage message instances within the Binding layer, i.e. as
opposed to the Application layer, where, in my opinion, this behavior
belongs. A Binding should be able
to identify the abstract action and retrieve relevant policy without
having to inspect a specific message instance. In any case, this is a
design choice that should made by the implementer, i.e. not something
implicitly mandated by the specification.
In light of the arguments
presented above, I respectfully request that the group reconsider their
decision to close this issue with no action and instead consider making the
following changes:
- Move the wsam:Action attribute from the
interface fault element to the WSDL 2.0 interface operation
infault/outfault element.
- Change the default WSDL 2.0 action pattern for
faults to: [tns] [delimiter] [interface name] [delimiter] [operation name]
[delimiter] [direction] [delimiter] [fault name]