I see two cases:
1) Maximum use of SOAP RPC toolkit. This means a fixed, well-known list of
parameters and the return of a structured object.
2) Intermediate use of SOAP RPC toolkit. Still a fixed, well-known list of
parameters, but with the return of a String which contains an XML document
to be parsed by the client. The contents of the XML document are controlled
by the responseSchema specified in the request parameters. My understanding
of this requirement is that the intended parser of the response is an XSL
stylesheet. Smart clients would be encouraged to follow case #1.
Actually, Theo proposes the third case:
3) Minimal use of the SOAP RPC toolkit. A single String parameter is sent
which contains an XML document for the request with parameters as items in
the document. The server will have to parse the request, identify the items
it recognizes and issue diagnostics for unrecognized items. The response
will be as in case #2.
Case #1 is satisfied by an RPC call to the searchRetrieve method with the
four parameters: query, startRecord, maximumRecords and recordSchema. The
response is an object of type searchRetrieveResponse.
Case #2 is satisfied by an RPC call to the searchRetrieve method with the
five parameters: query, startRecord, maximumRecords, responseSchema and
recordSchema. The response is an object of type String which contains an
XML record whose schema was specified by the responseSchema in the request.
Case #3 is satisfied by an RPC call to the searchRetrieve method with the
single String parameter: request. That parameter contains an XML document.
The response is an object of type String which contains an XML record whose
schema was specified by the responseSchema in the request. (I suspect that
this case doesn't actually exist, but is covered in the variant described
below.)
There is another dimension to these three cases. All of them should be
possible using a constructed URL and not using SOAP at all. The request
parameters would be name=value pairs in the URL. The response would be the
same XML document returned for cases 2 and 3. I suspect that case #1
disappears or becomes case #2.
So, we now have six cases. Let's name them 1R (case #1, with RPC), 1U (case
#1 with URL's), 2R, 2U, 3R and 3U.
1R) I will support case 1R in my SRW implementation.
1U) Case 1U doesn't exist. Since we aren't using SOAP, we can't return an
object. All we can return is a document. So, case 1U becomes case 2U.
2R) I will support case 2R; I do now. But, I'm not sure how valuable it is.
Since the use of SOAP presupposes the use of a smart client, how much value
do we expect to get from the additional data that might come back in a rich
responseSchema?
2U) I will support case 2U; I do now. My IE browser does a lovely job of
displaying the XML document returned. The problem is the specification of
stylesheets. If the server specifies the stylesheet, then a smart client
can ignore the specification and do whatever it wants with the returned
document. But what if the user of a dumb client wants to use a stylesheet
other than the one that the server provides? Should we allow the URL to
specify a stylesheet in the request so that the server can echo it and the
browser use it? Between the responseSchema parameter and the stylesheet
parameter, we've chewed up a lot of our URL. It would be nicer if we had an
Init service that would allow the creation of a cookie that carried that
information for all the transactions. I guess my vote, for now, would have
to be in favor of allowing the specification of a stylesheet in the URL.
3R) I don't believe this case actually exists. What would be the point if
we are using a smart client?
3U) This is indistinguishable from 2U, if you are willing to ignore
unrecognized parameters. If we don't ignore them (and my strong
recommendation is that we do NOT ignore them) then we'll need a new
diagnostic so that we can report back the unrecognized parameter.
Summary (finally!)
There are two real cases: 1R and 2U and maybe 2R and 3U. 1R and 2R are
straightforward RPC specifications. 2U is easy to do and 3U isn't much
harder.
So, can we agree to do them all or should we focus on 1R and 2U?
Ralph
|