[dais-wg] Top-Level Operations in DAIS
Norman Paton
norm at cs.man.ac.uk
Sun Jan 30 06:51:50 CST 2005
At various points, DAIS-WG members have expressed an interest in there
being top-level operations in the WS-DAI specifications, and not just
the more narrowly-defined operations in the relational and XML
realisations. This message seeks to encourage thought and interaction
on the role and nature that such higher-level operations might play.
The current WS-DAI specification identifies two generic operation
templates: a request-response template and a factory template.
The request-response template is of the form:
<wsdai:RequestMessage>
<wsdai:RequestDocument/>
<wsdai:ResponseType/>?
</wsdai:RequestMessage>
where RequestMessage and RequestDocument are replaced by specific names
in realisations. The ResponseType contains the QName of a type in the
property RequestMessageResponseTypeList, which is also renamed in
specific realisations.
A top-level operation could be defined in line with the above by:
1. Providing a concrete name for the RequestMessage (such as DAIExecute).
2. Providing a property that describes the supported types for the
RequestDocument.
Note that there may be a many-to-many relationship between
RequestDocument types and associated ResponseTypes, and that not all
combinations can be expected to be valid. As such, a more precise
characterisation of the valid operations would be to have a single
property that contains pairs of QNames associating RequestDocumentTypes
and ResponseTypes.
The provision of a top-level request-response operation opens the
question as to the relationship to the realisations. At the moment the
relationship is simple:
- The WS-DAI specification defines no operations and thus all
operartions are in the realisations.
If WS-DAI does define a request-response operation, then there are
choices for realisations:
1. Use only the generic operation, and remove the operations that
currently instantiate the template from the realisations. The
realisations then specifiy valid RequestDocumentType and ResponseType
pairs.
2. In realisations, define specific operations and provide no sanctioned
support for the generic operations.
3. In realisations, define specific operations as well as specifiying
valid RequestDocumentTypes and ResponseTypes pairs.
The factory message template is of the form:
<wsdai:RequestMessage>
<wsdai:RequestDocument/>
<wsdai:BehavioralProperties/>
</wsdai:RequestMessage>
where RequestMessage, RequestDocument and BehavioualProperties are
replaced by specific names in realisations. The valid set of
BehavioralProperties schemas may be defined in the
RequestMessagePropertyTypeList, and both the WS-DAI specification and
the realisations identify properties that may apply in different cases.
The response to the message is mapping-specific, but is a
wsa:EndPointReference in the WSRF mapping provided in the WS-DAIR
specification. Note that the BehavioralProperties document SHOULD
contain the QName of the portType that is required to access this resource.
A top-level operation could be defined in line with the above by:
1. Providing a concrete name for the RequestMessage (such as DAIFactory).
2. Providing a property that describes the supported types for the
RequestDocument.
The provision of a top-level factory operation opens the question as to
the relationship to the realisations. At the moment the relationship is
simple:
- The WS-DAI specification defines no operations and thus all
operartions are in the realisations.
If WS-DAI does define a Factory operation, then there are choices for
realisations that are similar to those for request-response:
1. Use only the generic operation, and remove the operations that
currently instantiate the template from the realisations. The
realisations then specifiy recognised RequestDocumentTypes.
2. In realisations, define specific operations and provide no sanctioned
support for the generic operations.
3. In realisations, define specific operations as well as specifiying
valid RequestDocumentTypes.
Note that the WS-DAI Factory template is in some ways more general than
the WS-DAI RequestResponse template, as the capabilities of the service
that provides access to the resource returned by the factory operation
are effectively a parameter of the Factory operation (the QName of the
relevant portType). This is as flexible as the use of an "any" type as
the result of a request-response operation.
The pros and cons of the three options for the specifications are
similar in both cases:
A disadvantage of defining only rather generic operations as in (1) is
that tooling can make few assumptions about the available message
parts. An advantage is the uniform exploitation of an explicitly open
mechanism.
An advantage of (2) is that the tooling can help more; a disadvantage is
that it leaves the top-level operations looking a bit stranded.
An advantage of (3) is that it both exploits the flexible framework and
allows tighter message typing, at user selection; a disadvantage is that
the specification may be felt to provide too much choice; it also makes
the specifications slightly longer and a little harder to implement.
It would be interesting to see a discussion of the pros/cons of the
alternative options, and to hear how much support there is in general
for the generic top-level operations.
Regards, Norman
More information about the dais-wg
mailing list