[dais-wg] Round the loop again
Simon Laws
simon_laws at uk.ibm.com
Tue Apr 26 09:44:49 CDT 2005
Apologies that this is so last minute. Here are some notes produced
following our last call that I sent out but neglected to copy the list (as
has just been pointed out to me). I have received some comments on these
but haven't caught up on these yet. Hopefully we can do this on the call
today.
The scope of the WSDL Savas has produced is as follows ( I've summarised
the input and output message XML based on Savas' WSDL)
Service
DaisCorePortType
<lPropertiesResponse>
<Readable> ...
</PropertiesResponse> Properties ( <Properties/> )
<EndPointReference/> Resolve
(<Resolve><name>string</name></Resolve> )
<DeleteResponse/> Delete (
<Delete><name>string</name></String> )
DaisRelationalPortType
<RelationalPropertiesResponse>
<RelationalSchema> ...
</RelationalPropertiesResponse> RelationalProperties (
<RelationalProperties/> )
<ExecuteSqlResponse/> ExecuteSql ( <ExecuteSql>
<sql>string</sql>
</ExecuteSql> )
<ExecuteSqlResultByRefResponse>
<sqlExecuteAndStoreResultResult>string</sqlExecuteAndStoreResultResult>
</ExecuteSqlResultByRefResponse>
ExecuteSqlResultByRef ( <ExecuteSqlResultByRef>
<sql>string</sql>
<AccessInterface>Rowset|XML</AccessInterface>
</ExecuteSql> )
<WebRowsetRowCountResponse>
<DataResourceCountResult>int</DataResourceCountResult>
</WebRowsetRowCountResponse> WebRowsetRowCount (
<WebRowsetRowCount><name>string</name></WebRowsetRowCount> )
The things we covered during our mapping discussion tuesday were:
1/ We don't need to build every message in DAIS to demonstrate the mapping
2/ Optional resource names should appear in the messages of our
realisations
3/ Input resource names could be URIs
4/ The result of messages that imply the factory pattern are more
problematic
A - a URI which relies on the resolve message to retrieve the
endpoint
B - a complex type so mulitple names and end points can be
returned
5/ Properties
6/ Lifetime
7/ We should use common terminology between WSRF / non WSRF where we can
8/ Service level messages (as opposed to messages targetted ar resources)
Have I missed anything?
These issues affect Savas' WSDL in the following way
2/ Resource names
<ExecuteSql>
<sql>string</sql>
</ExecuteSql>
should become
<ExecuteSql>
<ResourceName>string</ResourceName> (Where this is an optional
element. Also see point 3 and point 4)
<sql>string</sql>
</ExecuteSql>
3/ Format of input names.
The names we are talking about here are the abstract names that uniquely
identify a data resource,. You can get to an abstract name from a human
readable name via something like RNS. The big question is (and this is
the question that WSRF side stepped) what type should the name be.
My feeling is that we should not commit to any particular scheme. In order
to do this we need to decide how, in a running service, we indicate what
name type is expected and what is provided. Some approaches
- Assume a single name scheme
Problematic if the scheme chosen is not the scheme that
people find useful in all occasions.
- A string representation.
Alows for the likes of URI, LSID, Handle.net, JDBC URLs
and string encodings of XML. Could required name type be indicated using
the
namespace of the message element containing the name
(would need to think about this in more detail)? Could rely on exceptions
if name is not
understood. There is the danger that a name is
missinterpreted.
- An XML type
A complext type could be created to hold each name type.
Could use specialisation to abstractly define the message. Valid name
types would
have to be advertised or would have to rely on exceptions
to indicate incorrect types.
- An XML wrapper
Build an XML structure that wraps names generally
providing an element describing the name type and an element holding the
name itself. Again
would have to advertise valid types or rely on
exceptions.
I think we should investigate if we can simply associate a namespace with
a string based name and use this as a simple wrapper. We could fall back
on URI as the default representation.
4/ Response for messages that imply the factory pattern.
The neat solution is to take Savas' approach to just return a name. But my
concern is still that two pieces of information are potentially required,
the name and the endpoint(s) that that name can be accessed through. Of
these two the endpoint is mandatory and, in theory by taking the WSRF
approach, the name is optional. We could make the abstract naming of data
resouces mandatory of course. I don't think we add any extra complication
by constructing a type which allows both the endpoint information and the
name to be returned. If we were to rely on "resolve" we would still need a
type that could handle plain URLs or EPRs
5/ Properties
Properties are defined as XML types and a collection of properties can be
constructed by aggregating complex types. For compatibility it would be
handy to use the WS-ResourceProperties approach to forming this
aggregation. We can then use the resulting type in numerous places as
required.
- In a realisation specific message such as GetRelationalPropeties (
ResourceName )
- In a generic message such as GetResourceProperties ( PropertyName )
- In a resource speific generic message such as GetResourceProperties (
ResourceName, propertyName )
Question: Do we provide entended version of the WS-ResourceProperties
messages?
Do we provide realisation specific properties
messages?
6/ Lifetime
As a first pass we can take the WS-ResourceLifetime messages and extend
them with ResourceName elements.
8/ Service level messages
In the WSRF case we invent the idea of the DAIS conduit as the target of
the WSRF message set. The DAIS conduit is simply the construct which
contains the data resources that the service knows about. Thus
GetResourceProperties() returns properties such as a list of data
resources the service knows about. Exactly the same is true on the non
WSRF case except that we make the assumption that there is only a single
DAIS conduit. I.e. any messages sent to the non WSRF DAIS service are
intended to be interpreted at the service level. Hence Destroy() could
mean remove all references to services or it could be destroy all the data
resource depending on the stated (In the help pages!) semantics of the
service)
So in summary we should try and devise a simple set of rules to help us as
we rebuild the specs
The abstract names of data resource will always be described in
specification in term of the structure (types to be defined)
Messages to resources will always include the abstract name of the resouce
in question
Message to the service will, fairly obvously, omit a resource name
Messages which cause a new data resource to be created will return both
the name of the resource and endpoint information where that name is valid
(type to be defined)
Properties will be defined in structures that can either be returned by
realisation specific messages or by the generic WSRF resource messages.
Etc, Etc,
Simon Laws
IBM Hursley - Emerging Technology Services
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dais-wg/attachments/20050426/d15a84c8/attachment.htm
More information about the dais-wg
mailing list