Paging limitations
Consider the following limitations before you start using the paging capability of IBM® CMIS for Content Manager.
Limitations
The limitations of paging in IBM CMIS for Content Manager are:
- Drafts sorted at location of the published parent document
- By default, some applications that display results by the page and that display drafts, if they
are more current than their published equivalents, sort the results based on the value of the
published document. This means that the sort value of the published document determines the location
of the draft document in the results.
These applications also display the date that the draft was created or last modified, not the date that the published document was created or last checked in. For example, suppose you created a published document on 09 December 2009, checked out that document on 15 January 2010, then created a new draft by saving changes on 20 January 2010. If you viewed results that contained this document, sorted by last modified date, the draft version of the document would be displayed with a creation date of 20 January 2010 and a last modified date of 20 January 2010. But the draft would appear in the result set where the published document would otherwise be: 09 December 2009, the last modified date of the published document. (Note that checking out a document does not modify it. A document is modified only if changes are detected during checkin.)
You can work around this limitation by using the following configuration parameters:- sortChildrenDraftValuesInline
- sortSearchDraftValuesInline
- Result not valid entry in results
- When you query only for documents or when you open a saved search folder, and when results are paged, the results might include folder result and draft result placeholders for results that are not valid when the query expression is not written precisely. When paging, some results are replaced by placeholders and cannot be filtered out because of errors by the administrator constructing the query expression. The query expression returns results that should not be displayed to the current user or restricted in a particular feature. For example, if you define a saved search to find drafts and do not restrict it to return only drafts for the current user, you will see draft result placeholders in the results. The saved search for drafts must be defined by using the current user variable. The result placeholders that are not valid provide information about what is wrong with the non optimal query without breaking the entire query because of a single invalid result among many valid results. Sometimes, the administrators might find some valid queries that can include a few folder result placeholders for libraries and library groups or applications that match the query expression. The libraries and library groups or applications are document objects in the repository. Therefore, if an administrator creates a library and then runs a Lotus view or saved search to find all documents they created, the library is included in the result but must be replaced by a placeholder when returned by an interface that supports only document results. You might notice the folder results when prototyping or as an administrator, but these might be few and typically not seen by users.
- Continuity between page requests
-
The page results can change between page requests and subsequent page requests reflect the current content of those pages as evaluated at the time each page request is run. The page results on the previous or next page are not guaranteed to be sequential continuing from or leading to the prior page results. By the time you open the next page, the total results might have changed with added objects, deleted objects, moved objects, or changed permissions. Each page reflects the current results in the page series as defined by the page size according to the current total result set. So the next page can return some objects already seen on the prior page or skip some results between the two pages if the result set has changed between page requests. For example, suppose 26 alphabetic letters are sorted alphabetically A-Z and paged with page size 5. Page 1 contains A, B, C, D, E, page 2 contains F, G, H, I, J, and page 3 contains K, L, M, N, O. But if you view page 1 (A-E), and while viewing page 1, two new letters are added A1 & B1, then when the user changes from old page 1 (A-E) that is still showing to page 2, they see the next page D, E, F, G, H repeating D & E they saw on the last page. The series has changed and page 1 is now defined as A, A1, B, B1, C. Similarly, if you were viewing original page 2 (F-J) and went back to previous page 1, you see A-C and skip over D-E which became part of page 2 while they had the old page 2 still open. The page numbers are always evaluated according to the current result set. There is no guaranteed continuity between page requests or meaning of page numbers between page requests. Each are evaluated independently.
However, if the result set does not change between page requests, the results are continuous with no break between pages. You can page through the entire result set without skipping or overlapping any results between pages if the full results that you are paging do not change. This limitation applies only when the result set changes while you are paging, such as results added or deleted, permissions granted or revoked, database reorganizes, or you change the sort order or page size.
- Sorting folders before documents
- By default, IBM CMIS for Content Manager does not support
sorting folders before sorting documents. However, results might still be sorted within the page of
results, but varies by feature and application. Sorting is limited within each page only and not
across multiple pages. For example, you have 21 items in a folder, two folders, and 19 documents and
your page size is 20. After sorting, the page 1 displays one folder named Zebra followed by 19
documents sorted alphabetically within page 1 starting with apple.txt to
zoo.txt and on page 2 you could have one folder named Banana. Therefore, page 1
is sorted within its page, but not sorted across the two pages.You can work around this limitation by using the following configuration parameters:
- sortChildrenFoldersBeforeDocuments
- sortSearchFoldersBeforeDocuments
- Default sort order defined by query expression
- When you query only for documents or when you open a saved search folder, the default sort order is determined by the Content Manager EE query expression constructed by the administrator. An administrator can change the sort order by modifying the Content Manager EE query expression to include the appropriate "SORTBY" syntax at the end of the query expression. The user or application can change the sort order on saved search results to sort instead on a limited number of Content Manager EE system attributes, such as created date and last modified date, ascending or descending, but no optional extended metadata attributes, such as label (file name) or title.
- Reserved keyword SORTBY if no default sort order defined
- When you query only for documents or when you open a saved search folder, the keyword SORTBY is
reserved and cannot appear in anywhere in the query expression conditions or syntax except to
declare the sort order in the query expression, unless the Content Manager EE
query expression also includes a SORTBY order also at the end. The SORTBY keyword is reserved for
uppercase, lower-case, and mixed-case characters. To support changing the sort order on an existing
saved search, the query expression is cut at the last occurrence of SORTBY in the query expression
and replaced with a new sort order. For example, you cannot run a saved search or parametric
(metadata-based) search for documents with title, such as
%SORTBY%unless there is also a SORTBY order at the end of the query expression. You must define your query expressions with a default sort order or do not use the reserved keyword SORTBY anywhere else in the query expression. The conditions, such as document types, property names, property value constraints, and so on, are restricted only, not the values in the results returned. You also cannot use the reserved keyword within the SORTBY clause other than for the syntax to declare the clause. For example, you cannot sort on a property with the name abcSortBy. - Sorting by Content Manager EE user name
- Most applications do not enable sorting on paged requests by user name properties, such as created by user and last modified user on paged requests. Sorting by user names in the database can only sort by the short name or login name for the repository that is stored in the database. However, the applications typically display the users display names obtained by an authentication server and the display names do not necessarily match the short user name for the repository.
- All Item Types library appears at end
- When the library listing is paged or sorted, the optional All Item Types library is always displayed on the last page of results regardless of sort order. The All Item Types library can be displayed at the end of the result set or sorted within the last page.
- Compatibility with sorting limitations
- Some applications can detect which properties are supported for sorting and limit sorting selection to only the supported properties. Other applications let you select all properties and do not support limiting sorting choices to only supported properties. If the application lets you sort by a property that is not supported on a paged result, you get an error message CQL188. Many applications enable you to submit a default sort order that might or might not be configurable. If the application supports detecting supported properties for sorting and an invalid default is selected, you must configure the application to use a valid default sort order and remember the setting for the next time you use the feature. If multiple sort orders are submitted, only the first valid sort order is recognized and any additional sort orders are ignored. This allows for applications that attempt multiple sort orders frequently to continue working if the primary sort order is supported. Only valid properties are allowed for a sort request. Any invalid property or property by which you cannot sort returns an error.