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

从上次java运行中获取新的Notes文档,java,lotus-notes,lotus-domino,Java,Lotus Notes,Lotus Domino,在第一次运行时,我能够从notes数据库“db.nsf”中获取所有notes文档 我的问题是下次运行同一个类时,我只需要上次运行的新notes文档 有任何最佳的方法可以做到这一点,我试图寻找解决方案,但没有得到 如果有人能帮助我,那就太好了。通过假设的例子来解释这一点,也许这会对你有所帮助 第一步:在处理来自“db.nsf”的文档时,通过replaceItemValue(“检查”、“完成”)在文档中设置时间字段 第二步:创建未处理视图(包含新文档)并设置以下公式:Select!(check=“d

在第一次运行时,我能够从notes数据库“db.nsf”中获取所有notes文档

我的问题是下次运行同一个类时,我只需要上次运行的
新notes文档

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


如果有人能帮助我,那就太好了。

通过假设的例子来解释这一点,也许这会对你有所帮助

第一步:在处理来自“db.nsf”的文档时,通过
replaceItemValue(“检查”、“完成”)在文档中设置时间字段

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


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

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


该方法将返回一个
DocumentCollection
,其中包含自上次运行以来创建或修改的所有文档。如果要排除已修改但确实是在前面创建的,只需在迭代集合时仔细检查
文档.created
属性。

计划代理在Domino Designer属性部分的“基本”选项卡上有一个“Target”属性。“目标”的选项之一是“所有新文档和修改文档”。其他选项为“数据库中的所有文档”和“无”

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

我不确定你正在处理的文档是否可以在你的应用程序中被修改,但不管怎样,我认为最好从这个文档集合开始,在你处理的文档上打上你自己的“已处理”标记NotesItem


您还可能会发现java DocumentCollection.StampAll方法是一种方便的方法,可以将您的标记项放置在集合中的每个文档上。

在第一次(编辑前)上传我问题的一半时,对此表示抱歉。这是主要问题。如果有人认为Search()不够快,并且全文索引可用,您可以在查询中使用FTSearch并附加一个条件:…&现场修订日期>2015年11月11日