从上次运行java中获取新的Notes文档

时间:2015-11-16 07:57:40

标签: java lotus-notes lotus-domino

在我第一次运行时,我能够从我的笔记数据库中获取所有笔记文件,这是" db.nsf"。

我的问题是下次我将运行同一个班级,那时我只想从上次开始new notes documents

有任何最佳方法可以做到这一点,我试图搜索解决方案,但没有得到。

如果有人帮助我会很好。

3 个答案:

答案 0 :(得分:1)

通过假设示例来解释这一点,这可能会对你有帮助。

第一步:处理来自" db.nsf"该时间按replaceItemValue("check"," done");

在文档内设置字段

第二步:创建未处理的视图(包含新文档)并设置此公式:Select !(check = "done")

然后在未经处理的视图中,您将获得新创建的文档或未处理的文档(不包含完成字段)

答案 1 :(得分:1)

只需保存上一次运行的日期时间,然后使用Database.Search()方法。将第一个参数设置为“@All”,将第二个参数设置为该日期时间。 NSF文件包含允许API优化此查询的结构,因此Database.Search()缓慢的传统观念不适用。

该方法将返回DocumentCollection,其中包含自上次运行以来创建或修改的所有文档。如果要排除已经修改但之前已经创建的那些,只需在迭代集合时对Document.Created属性进行双重检查。

答案 2 :(得分:0)

计划代理在Domino Designer的属性部分的“基础”选项卡上具有“目标”属性。 'Target'的选项之一是'All new&修改过的文件。其他选项是“数据库中的所有文档”和“无”。

此选项将使传递到代理(Java或Lotus Script)的文档集合包含自上次运行代理以来的所有新文档或修改过的文档。

我不确定您正在处理的文档是否可能在您的应用中被修改 - 但无论哪种方式,我认为最好从这个文档集开始并标记您自己的'已处理'将NotesItem标记到您处理的文档上。

您还可以找到java DocumentCollection.StampAll方法,将标记项放在集合中的每个文档上。