【问题标题】:how to find recently modified document in lotus notes 5如何在 Lotus Notes 5 中查找最近修改的文档
【发布时间】:2014-02-14 21:13:21
【问题描述】:

我要做的是通读 lotus notes 5 并将其中的所有文档导出到本地 modeshape 存储库,但是一旦我完成了所有数百万条记录/文档的阅读,该过程就会从 lotus notes 中的第一条记录开始读取但我不希望那样。我只需要阅读 Lotus Notes 中最近修改的文档。

我的函数看起来像这样:

public void run() {
    logger.log(Level.INFO, "entering run");
    try {
        String pathToFolder = "";
        s = NotesFactory.createSession(host, "username", "password");
        Database db = s.getDatabase("", nsffilename);
        if (!db.isOpen()) {
            db.open();
        }
        DocumentCollection docCol = db.getAllDocuments();
        Document doc = docCol.getFirstDocument();
        while (doc != null) {
            doc = docCol.getNextDocument();
        }
    }
}

我在网上找到了一些代码,贴在这里: http://www-12.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf/f4b82fbb75e942a6852566ac0037f284/c698b5888603d5cd8525704a00417105?OpenDocument

但这仅适用于 Lotus notes 8 及更高版本。 但我被莲花笔记5卡住了。 如果有什么方法可以让我在 lotus notes 5 中获取最近修改的文档,请告诉我。

【问题讨论】:

  • 好像有人自从1999之后就没有升级过,为什么等了这么久?
  • 不知道先生,但这只是在这个古老的系统上工作令人沮丧

标签: java lotus-notes


【解决方案1】:

创建一个以降序排列的第一列@Modified 的视图,并使用 View 类读取所有文档 - 最后修改在前。

  ...
  View view = db.getView("YourViewSortedByLastModified");
  view.setAutoUpdate(false);
  Document tmpdoc;
  Document doc = view.getFirstDocument();
  while (doc != null) {
    // do with your doc what you want
    tmpdoc = view.getNextDocument(doc);
    doc.recycle();
    doc = tmpdoc;
  }

当您从上次运行到达文档时,您可以中断 while 循环。

不要出于性能原因在视图选择公式中包含任何提供当前时间或日期的函数,例如 @Now 或 @Today。最好列出所有文档并在到达上次运行的文档时停止循环。

DocumentCollection 中的文档顺序不确定。通常最旧的文档是第一个,但你不能依赖这个。如果您遍历 View 文档,视图中的顺序仍然存在。

【讨论】:

  • 感谢您的回答 Knut,我将让 Lotus Notes 团队实施此视图,如果认为按预期开始工作,我会将此回复标记为正确答案。非常感谢您的回复。你刚刚为我节省了一百万条记录迭代 :)
  • 嗨 Knut,你能告诉我在 lotus notes 中创建视图以首先获取修改记录的查询应该是什么。抱歉,我不是 Lotus Notes 资源,可以做到的人与我工作的地方不同。非常感谢您在这方面的帮助。
  • 告诉 Notes 人员您需要一个带有 SELECT @All 的视图(对于数据库中的所有文档)和一个带有公式 @Modified 的降序排序列。
  • 先生,你是男人。感谢你的帮助。我会要求 Lotus Notes 资源来做这件事。
  • 成功了 :) 非常感谢 Knut。你是一个救生员。
【解决方案2】:

您可以创建一个仅显示最近修改的文档并循环浏览该视图的视图,而不是获取数据库中所有文档的文档集合。

【讨论】:

  • 嗨,Ken,我将按照 Knut 的建议和您的建议来实现它。希望事情能按预期进行。感谢您的回复