Action item 2003-11-03 OperationName feature

Folks,

Here is the writeup for OperationName feature as fullfilment of my 
action item. To refresh your memory, this action item came into 
existence because we wanted to have a mechanism to be able to identify 
the operation involved in the message exchange  since operation names  
are currently not part of the exchange, but GEDs are.  Since multiple 
operations may contain the same element, just looking at the messges on 
the wire, it is impossible to distinguish the operation that is 
currently involved in the exchange. See15:45 Uniqueness on the wire 
discussion in [1]. Our goal is to remedy this problem.  This information 
can be used for dispatching purposes as well.

Attached please find my proposal for OperationName feature (and related 
property) which are aptly named for what they are trying to represent.

Cheers,

--umit

[1] http://lists.w3.org/Archives/Public/www-ws-desc/2003Nov/0059.html

-- 
Umit Yalcinalp                                  
Consulting Member of Technical Staff
ORACLE
Phone: +1 650 607 6154                          
Email: umit.yalcinalp@oracle.com
OperationName FEATURE: 

PURPOSE:

The name of an interface operation component in an interface component
is required to be specified in WSDL. However, this name is not
conveyed in a message exchange, except for operations that are defined
using the style property, indicating RPC Style. This information may
be useful specifically for indicating the specific exchange when the
same message (a GED) is exchanged within more than one operation in an
interface, for dispatching purposes, etc. 

OperationName feature is defined for WSDL implementations to convey
the operation name. The operation name in this feature is conveyed as
as a URI by utilizing the WSDL component designator syntax that
identifies the specific operation that is involved in the message
exchange [2].

DEFINITION: 

OperationName feature is an abstract feature that indicates that the
Name of the operation will be conveyed to the receiver in a message
exchange. 

The URI of the feature is

http://www.w3.org/TR/wsdl20/features/operationName.

(Note: This is a placeholder URI to be finalized by the WSDL wg.)  

This feature also defines an abstract property that holds the URI of
the name of the operation. The URI of the property is 

http://www.w3.org/TR/wsdl20/features/operationName/Name

(Note: This is a placeholder URI to be finalized by the WSDL wg.) 

Using this feature requires that a value that indicates an operation's
fragment identifier will always be sent from the sender to the
receiver and this value will be made available by the implementations
that use this feature. 

There may be several different ways to implement this in practice, but
this specification defines an implementation for SOAP protocol only by
specifying a SOAP module below and also describes how it relates to
the optional SOAP Action feature.

OperationDispatch MODULE

A SOAPModule is used to implement this feature by using a specific
SOAP header. The following schema is used to define this header: 

<xs:schema targetNamespace="http://www.w3.org/TR/wsdl20/features/operationName"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	elementFormDefault="qualified">
	<xs:element name="operation" type="xs:anyURI"/>
</xs:schema>

The SOAP header must appear in the SOAP Infoset. The value of the
header must filled in by the sender by setting the value of the
operation element to the component designator that uniquely identifies
the operation by utilizing the fragment id syntax [2]. 

Example:

<env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope">
  <opName:operation xmlns:opName="http://www.w3.org/TR/wsdl20/features/operationName>
    http://airline.wsdl/ticketagent/#operation(TicketAgent/listFlights)
  </opName:operation>
</env:Header>

When the receiver receives a message with this a header, the value of
the header must be used to set the value of the property
http://www.w3.org/TR/wsdl20/features/operationName/Name.

SOAPAction OperationDispatch Feature:

SOAP Bindings may be optionally using the SOAP Action feature,
specified in [1].  This feature is not required to be supported by
SOAP 1.2 implementations and do not assign a specific value for the
SOAP Action property.

If SOAPAction feature is available and engaged in the binding, the
effect of engaging the OperationName feature in addition would have
the following result:

The value of the SOAP Action property,
http://www.w3.org/2003/05/soap/features/action/Action, is a URI that
is constructed by using the value of the component designator that
uniquely identifies the operation utilizing the fragment identifier
that refers to the specific operation[2].

The SOAP Action feature must be explicitly specified in the binding
section in the service's WSDL description for the OperationName
feature to affect the specific SOAP Action property value as stated
above. 

A Note about using RPC style: 

If an operation is defined using the style property indicating RPC
style, the Name of the operation is required to be part of the message
exchanged, because the QName of the input element must match the
operation targetNamespace and NCName and it uniquely identifies the
operation. Therefore, the operations within interfaces that utilize
the RPC style are considered to be compliant with this feature as
operation names are part of the GED. However, if bindings support one
of the implementations as stated above, the additional header defined
by OperationDispatch module is allowed to be included, but not
required, when RPC style is used.

[1] http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#ActionFeature
[2] http://lists.w3.org/Archives/Public/www-ws-desc/2003Nov/0090.html

Received on Wednesday, 21 January 2004 16:09:04 UTC