我正在使用 Lotus Notes 6.5.1 Java API 来读取 .nsf 文件。.nsf 文件中的每个文档都有多个文档历史记录。在使用 Lotus Notes Java API 遍历 .nsf 文件中的文档时,我将所有文档版本作为单独的文档获取。
如何确保 Lotus Notes 仅检索每个文档的最新版本?有没有办法将文档及其所有版本历史唯一标识为其子项?
我正在使用 Lotus Notes 6.5.1 Java API 来读取 .nsf 文件。.nsf 文件中的每个文档都有多个文档历史记录。在使用 Lotus Notes Java API 遍历 .nsf 文件中的文档时,我将所有文档版本作为单独的文档获取。
如何确保 Lotus Notes 仅检索每个文档的最新版本?有没有办法将文档及其所有版本历史唯一标识为其子项?
Notes Domino 中有一个用于对文档进行版本控制的内置功能。根据它在数据库设计中的配置方式(并假设数据库开发人员没有推出自己的版本),版本要么是对原始父级的响应,要么是反过来,新版本成为父级,旧版本是回应。
然而,所有这些都是在您编辑文档时自动为您在数据库中设置响应层次结构。数据库设计的其余部分如何与此层次结构交互取决于开发人员。
您可能想要做的是创建一个仅在响应层次结构顶部显示文档的视图。然后,您可以遍历该视图并知道您从中获得的文档是最新版本。
因此,如果您有使用“文章”表单创建的文档,则视图选择公式将是。
SELECT form*="Article" & !@IsAvailable($ref)
这将选择所有不是响应的文章文档。现在在代码中,您可以简单地打开视图并遍历它。
一旦你处理了一个文档,你就可以通过它获得它的直接子响应
doc.getResponses()
这将返回一个DocumentCollection
您可以递归查找响应的响应。您无法直接获取父文档。您首先需要获取其 id,doc.getParentDocumentUNID()
然后调用db.getDocumentByUNID()
. 当然,您可以将其结合起来:
db.getDocumentByUNID(doc.getParentDocumentUNID())
在任何情况下,您都必须查看您的数据库实际在做什么,它最初是如何设计的并与之相适应。