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