(おそらく大きな)Lotus Dominoデータベース内のすべてのドキュメントを繰り返し処理し、処理が中断した場合(ネットワーク接続エラー、アプリケーションの再起動など)に最後のドキュメントから続行できるようにしたいと思います。データベースへの書き込みアクセス権がありません。
すでに処理されたドキュメントをサーバーからダウンロードする必要がない方法を探しています。したがって、(再起動された可能性のある)処理の最初のドキュメントとなる開始情報をサーバーに渡す必要があります。
AllDocuments
プロパティとメソッドを確認しましたDocumentColletion.getNthDocument
が、このプロパティは並べ替えられていないため、2回の呼び出しで順序が変わる可能性があります。別のアイデアは数式クエリを使用することでしたが、これらのクエリでは順序付けができないようです。
3番目のアイデアは
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を使用してこれを確実に行う方法はありますか?