- From: Doug Davis <dug@us.ibm.com>
- Date: Mon, 12 Jan 2009 13:48:20 -0500
- To: public-ws-resource-access@w3.org
- Message-ID: <OF88BC5FB1.4FC2DC78-ON8525753C.004B1B2E-8525753C.00675027@us.ibm.com>
When enumerating datasets there are times when its necessary (and if
supported by the data source) to have more advanced and optimized
cursoring options. For example, a client may wish to change the direction
in which it is iterating over the dataset, or jump to a certain index
within large datasets - knowing it can skip some of the intermediate data
items.
Proposal:
Modify the Pull operation so that some cursoring parameters can be
passed-in that move the current position of the enumeration before the
results are retrieved:
<wsen:Pull ?>
<wsen:EnumerationContext>?</wsen:EnumerationContext>
<wsen:MaxTime>xs:duration</wsen:MaxTime> ?
<wsen:MaxElements>xs:long</wsen:MaxElements> ?
<wsen:MaxCharacters>xs:long</wsen:MaxCharacters> ?
<wsen:MoveCursor>
<wsen:Direction> Forward | Reverse </wsen:Direction> ?
[ <wsen:Skip> xs:long </wsen:Skip> |
<wsen:MoveTo> xs:long </wsen:MoveTo> |
<wsen:MoveToStart/> |
<wsen:MoveToEnd/> ] ?
...
</wsen:MoveCursor>
?
</wsen:Pull>
/MoveCursor
when present this element indicates how the current position within the
dataset should be changed before the next chunk of data is retrieved. If
not supported the datasource MUST generate a fault (define the fault).
/MoveCursor/Direction
when present, indicates whether the data source is moving forwards or
backwards over the filtered dataset
/MoveCursor/Skip
when present, indicates how many items should be skipped in the filtered
dataset, in the cursor's direction, before starting to retrieve the next
set of data items to return. If this moves the cursor past the end of the
data then no items will be returned in the response and the
<wsen:EndOfSequence> element will be returned.
/MoveCursor/MoveTo
when present, indicates the ordinal position (1-based) within the
filtered dataset to move the cursor to before starting to retrieve the
next set of data items to return. This means that the data item at the
specified position will be the first item in the response. If this moves
the cursor past the end of the data then no items will be returned in the
response and the <wsen:EndOfSequence> element will be returned.
/MoveCursor/MoveToStart
when present, indicates that the cursor must be moved to the start of
the filtered dataset. In a forward moving enumeration the first item in
the filtered dataset would be the first item returned. In a reverse moving
enumeration the result from the Pull would be empty.
/MoveCursor/MoveToEnd
when present, indicates that the cursor must be moved to the end of the
filtered dataset. In a reverse moving enumeration the last item in the
filtered dataset would be the first item returned. In a forward moving
enumeration the result from the Pull would be empty.
If the datasource does not support this feature then a fault MUST be
generated in place of a PullResponse.
---
The PullResponse message will be modified too:
<wsen:PullResponse>
<wsen:EnumerationContext> ... </wsen:EnumerationContext>
<wsen:Items CursorLocation="xs:long"?
CursorDirection="Forward | Reverse"?>
<xs:any> enumeration-specific element </xs:any> +
<wsen:Items/>
<wsen:EndOfSequence/> ?
...
</wsen:PullResponse>
wsen:Items@CursorLocation
When present, this optional attribute, indicates the ordinal position of
the first item in the Items list. This attribute MUST be present if the
datasource supports the MoveCursor feature.
wsen:Items@CursorDirection
When present, this optional attribute, indicates the direction in which
the datsource is iterating over the fitered dataset. This attribute MUST
be present if the datasource supports the MoveCursor feature.
thanks
-Doug
______________________________________________________
STSM | Web Services Architect | IBM Software Group
(919) 254-6905 | IBM T/L 444-6905 | dug@us.ibm.com
Received on Monday, 12 January 2009 18:49:23 UTC