RE: Mandator wsa:Action (was Re: WS-Addr issues)

Dear Paco,

> 
> The semantics of WSA:Action are already defined in the current spec.
The
> acceptable values are defined by each service contract.l We have
several
> specifications already using it and several vendors interoperating on
that
> basis. I don't get exactly what is undefined about that.

I am sorry I didn't explain clearly what I meant. Let me try again.


The specification says...

<quote>
An identifier that uniquely (and opaquely) identifies the semantics
implied by this message.

It is RECOMMENDED that value of the [action] property is a URI
identifying an input, output, or fault message within a WSDL port type.
An action may be explicitly or implicitly associated with the
corresponding WSDL definition. Section 3.3 below describes the
mechanisms of association. Finally, if in addition to the [action]
property, a SOAP Action URI is encoded in a request, the URI of the SOAP
Action MUST be the same as the one specified by the [action] property.
</quote>


This suggests that the value of the wsa:action information header
indicates the semantics of the message. In a document-centric
interaction, it is very likely that the semantics of a message are
content- or application protocol-based and not known by just looking at
the message. I personally (and I know others too) treat WSDL as a way to
describe message format/structure. The "operation" is just an
interaction while the "portType/interface" is a collection of
interactions. We can't infer any kind of semantics from a WSDL document;
we need additional information to do that (e.g. RDF, a specification
document, etc.).

So, what are the semantics of the following message? (wsa:action
automatically generated from the WSDL document)

<soap:Envelope>
  <soap:Header>
    <wsa:action>http://example.com/PortType/BusinessDocument<wsa:action>
  </soap:Header>
  <soap:Body>
    <myappl:MyComplicatedBusinessDocument>
      ...
    </myappl:MyComplicatedBusinessDocument>
  </soap:Body>
</soap:Envelope>

As part of a larger set of message exchanges, this message may mean
different things to the recipient, based on its actual contents. So,
what does it mean to have the wsa:action header in this case? Also, what
does it mean for the message if the value of the wsa:action header in
the above case was http://example.com/hello while the contents were the
same? What are the semantics of processing the wsa:action header?

The wsa:To, wsa:ReplyTo, etc. headers are clearly defined and we know
what they mean. It seems to me, however, that the meaning of wsa:action
is deferred to other specifications and there is a danger, as others
have suggested, that wsa:action would be just used to expose the
internal-to-the-service message dispatching mechanism because it'd be a
convenient thing to do.

So, since the semantics of the wsa:action values are deferred to other
specifications, why aren't those specifications define their own header
for doing so? E.g.

<soap:Envelope>
  <soap:Header>
    <ws-mex:GetMetadata />
  </soap:Header>
  <soap:Body />
</soap:Envelope>

And

<soap:Envelope>
  <soap:Header>
    <ws-transfer:Create />
  </soap:Header>
  <soap:Body />
</soap:Envelope>

And you could also do

<soap:Envelope>
  <soap:Header>
    <!-- two birds with one stone -->
    <ws-trasnfer:Create />
    <ws-mex:GetMetadata />
  </soap:Header>
  <soap:Body />
</soap:Envelope>

(DISCLAIMER: I prefer those elements to be in the body, but I presented
them like that as alternative examples of how specification-specific
message semantics in the header)


Regards,
.savas.

Received on Sunday, 7 November 2004 17:16:08 UTC