我应该如何在 IBM FileNet 中进行正确的页面查询?

Posted

技术标签:

【中文标题】我应该如何在 IBM FileNet 中进行正确的页面查询?【英文标题】:How should i proper page queries in IBM FileNet? 【发布时间】:2015-03-04 07:04:06 【问题描述】:

在 FileNet 中是否有任何方法可以对查询进行分页?我有一个带有分页的网格控件,因此我需要获取查询中的元素总数以及获取结果示例第 3 页的可能性(任何页面大小)。我只找到了 TOP 运算符,但有没有 SKIP 或 COUNT?

【问题讨论】:

【参考方案1】:

没有办法完全实现你想要的。造成这种情况的主要原因是 Content Engine 对查询返回的所有行进行计数非常昂贵(假设有数千行)。可能必须对每个返回的对象应用相当复杂的安全限制。这将有效地从查询结果中排除一些对象,影响结果计数。评估多个对象的有效安全权限会降低性能,因此可以避免。这就是为什么您在查询语言中没有 COUNT 或其他聚合函数的原因。

如果您可以将网格中显示的记录数量限制在一个合理的范围内,那么COUNT_LIMIT 可能对您有用——请参阅Query Options 和getTotalCount()。但是,这将需要循环到所需的页面,其固有的性能缺陷。

【讨论】:

@Horosho 这可能会让你产生重新思考 UI 的想法。毕竟这不是数据库。 可能是,但是网格中的分页和随机页面访问是标准功能,所以对UI来说确实是很大的限制,尤其是对于WebUI @Horosho 关键是要质疑为什么有人需要随机页面访问。很容易证明这没有实用价值。 UI 应该由用户的真实需求驱动,而不是被认为是“标准”。【参考方案2】:

这是一个很好的链接,其中包含一个关于分页如何工作的后端示例:

Paging example

至于总数,这应该在 pageiterator 对象中: pageIterator api page

在这种情况下,您需要手动跟踪 UI 中的分页

或者作为替代方案,安装、配置和实施 CMIS 以执行将页面跳过作为默认功能的操作

CMIS infocenter

【讨论】:

这一章我都看过了,但是还是没看懂,怎么才能逐页获取需要呢?我应该循环页面直到我得到它?我怎样才能得到总数? 在我工作的一个项目中,他们正是这样做的,相应地设置页面大小并翻页。该解决方案重做整个查询,但如果你能保持它的状态,你应该能够跳过查询的重做。这实际上是用 cmis 完成的。也许这是一个很好的解决方案,因为它是访问文档管理系统的 ecm 广泛标准。 www-01.ibm.com/support/knowledgecenter/SSNW2F_5.2.0/… 如果没有,您将不得不手动进行跳过计数来跟踪您所在的页面 我认为这看起来有点“不整洁的代码”,我仍然无法完全理解它。现在我获取所有数据并将其分页到客户端 - 这也不是一个好主意 =( 根据文档,页面迭代器应该有一个总计数函数:www-01.ibm.com/support/knowledgecenter/SSNW2F_5.2.0/… 这可以帮助计算总计数 我尝试使用跳页,但是 10-15 之后的页面的结果很慢。 FileNet API 执行 10-15 次查询。我正在寻找“最佳实践”。

以上是关于我应该如何在 IBM FileNet 中进行正确的页面查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IBM Filenet 中部署 Java 操作处理程序?

IBM Filenet P8:如何获取选择列表项的本地化显示名称

通过符号名称获取 PropertyTemplate 的最快方法是 IBM FileNet CE API

在哪里可以找到 IBM FileNet Content Engine 订阅日志?

从 servlet 访问 FileNet 内容引擎

通过 com.filenet.api.util.UserContext 进行文件网身份验证