我想遍历(可能很大)Lotus Domino 数据库中的每个文档,如果处理中断(网络连接错误、应用程序重新启动等),则能够从最后一个文档继续。我没有对数据库的写访问权限。
我正在寻找一种方法,我不必从服务器上下载那些已经处理过的文档。所以,我必须将一些启动信息传递给服务器,哪个文档应该是(可能重新启动的)处理中的第一个文档。
我检查了
AllDocuments
属性和DocumentColletion.getNthDocument
方法,但是这个属性是未排序的,所以我猜两个调用之间的顺序可以改变。另一个想法是使用公式查询,但这些查询似乎无法进行排序。
第三个想法是
Database.getModifiedDocuments
相应的方法Document.getLastModified
。看起来不错,但在我看来,返回集合的顺序没有记录,并且基于创建时间而不是最后修改时间。以下是基于官方示例的示例代码:
System.out.println("startDate: " + startDate); final DocumentCollection documentCollection = database.getModifiedDocuments(startDate, Database.DBMOD_DOC_DATA); Document doc = documentCollection.getFirstDocument(); while (doc != null) { System.out.println("#lastmod: " + doc.getLastModified() + " #created: " + doc.getCreated()); doc = documentCollection.getNextDocument(doc); }
它打印以下内容:
startDate: 2012.07.03 08:51:11 CEDT #lastmod: 2012.07.03 08:51:11 CEDT #created: 2012.02.23 10:35:31 CET #lastmod: 2012.08.03 12:20:33 CEDT #created: 2012.06.01 16:26:35 CEDT #lastmod: 2012.07.03 09:20:53 CEDT #created: 2012.07.03 09:20:03 CEDT #lastmod: 2012.07.21 23:17:35 CEDT #created: 2012.07.03 09:24:44 CEDT #lastmod: 2012.07.03 10:10:53 CEDT #created: 2012.07.03 10:10:41 CEDT #lastmod: 2012.07.23 16:26:22 CEDT #created: 2012.07.23 16:26:22 CEDT
(我这里没有使用任何
AgentContext
访问数据库。数据库对象来自session.getDatabase(null, databaseName)
调用。)
有没有办法用 Lotus Domino Java API 可靠地做到这一点?