迭代 Lotus Domino 中的每个文档

2024-04-21

我希望迭代(可能很大)Lotus Domino 数据库中的每个文档,并且如果处理中断(网络连接错误、应用程序重新启动等),能够从上一个文档继续。我没有数据库的写入权限。

我正在寻找一种方法,无需从服务器下载那些已处理的文档。因此,我必须将一些启动信息传递给服务器,该文档应该是(可能重新启动)处理中的第一个文档。

  1. 我已经检查过AllDocuments财产和DocumentColletion.getNthDocument方法,但这个属性是未排序的,所以我猜顺序可以在两次调用之间改变。

  2. 另一个想法是使用公式查询 https://stackoverflow.com/q/12983605/843804但这些查询似乎无法进行排序。

  3. 第三个想法是Database.getModifiedDocuments方法与相应的Document.getLastModified一。看起来不错但是 在我看来,返回集合的顺序没有记录,并且基于创建时间而不是上次修改时间。

    这是基于以下示例的代码官方示例 http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_EXAMPLES_GETMODIFIEDDOCUMENTS_METHOD_DB_JAVA.html:

    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) call.)

有什么方法可以使用 Lotus Domino Java API 可靠地完成此操作吗?


如果您有权更改数据库,或者可以要求某人这样做,那么您应该创建一个按唯一键或修改日期排序的视图,然后仅存储指向最后处理的文档的“指针”。

除此之外,您必须自己维护以前处理过的文档的列表。在这种情况下,您可以使用 AllDocuments 属性并迭代它们。使用 GetFirstDocument 和 GetNextDocument,因为据报道它们比 GetNthDocument 更快。

或者,您可以进行两次传递,一次收集要存储的所有文档的 UNID 列表,然后进行第二次传递来处理您拥有的 UNID 列表中的每个文档(使用 GetDocumentByUNID 方法)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

迭代 Lotus Domino 中的每个文档 的相关文章

随机推荐

  • Hibernate 的“未保存值映射不正确”是什么意思?

    有一个著名的例外 org hibernate StaleObjectStateException 行已更新或删除 另一笔交易 或未保存值映射不正确 my Entity 123456 当 行被另一个事务更新或删除 时 这是一种非常熟悉的情况
  • Tomcat下无法运行PHP脚本

    我正在使用 Tomcat 6 我已经安装了 PHP 并尝试使用 PHP JavaBridge 在 Tomcat 中运行 PHP 我已在 Tomcat 的 webapps 目录中部署了 JavaBridge war 当运行任何 PHP 脚本时
  • 在 Android WebView 中获取 HTTP 状态代码

    我正在开发一个 Android 应用程序 该应用程序在 WebView 中加载网站 但有时该网站返回 HTTP 代码 500 我的问题是 有没有办法通过侦听器或另一个类从 WebView 获取 HTTP 状态代码 我尝试实现 WebView
  • PHP 日期差异

    我有以下代码 dStart new DateTime 2013 03 15 dEnd new DateTime 2013 04 01 dDiff dStart gt diff dEnd echo dDiff gt days 我不知道为什么我
  • C# Winforms DataGridView 具有像 Excel 一样的排序/过滤功能

    您好 我需要一个快速解决方案来使用 Winforms DataGridView 控件进行过滤 排序 就像在 Excel 中一样 我已经查看了该领域的现有帖子 但似乎没有一个能够满足我的需求 我正在手动填充我的 DataGridView 没有
  • 有像 Blend 这样的 HTML5 画布动画软件吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有没有像 Blend 这样的软件可以使用 HTML5 尤其是做动画相关的东西 就像是http raphaeljs com http raphaeljs
  • Git 克隆太慢

    这是我第一次搭建git服务器 当我使用TortoiseGit 1 8 1 0 32bit来处理操作时 一切都很好 但如果我使用git clone命令或git bash git克隆过程速度很慢 我附上了两张显示亲属的图片git clone传输
  • 使用 angular4 下载 pdf 格式的网页

    我是 Angular 4 的新手 我需要下载 pdf 格式的 HTML 网页 并且 html 网页包含输入等 Angular 控件 ng模型 单选按钮 已检查 它显示的不是控制值不明确的在pdf文件中 我尝试使用jsPdf 和 html2P
  • 尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)”

    无法使用意图将数据从一个片段传递到另一个片段 逻辑很好 请检查主要活动的最后部分 其中我使用 putExtra 将字符串发送到其他活动 这是 MainActivity java public class MainActivity exten
  • 在 component.json 和 package.json 中定义“package”信息

    我正在创建一个 javascript 库 希望通过 Bower 向我的内部公司提供该库 我正在使用 Grunt 来构建我的库 我的问题是 grunt 的约定是使用package json定义依赖项 库版本 依赖项等 另一方面 鲍尔假设在co
  • Z3 C API 在运行时更改超时

    是否可以使用 C API 在运行时更改求解器的超时值 为了设置超时 可以执行以下操作 Z3 config cfg Z3 mk config Z3 set param value cfg SOFT TIMEOUT 10000 set time
  • 如何使用 $.ajax 在使用 jquery 加载的内容中包含 javascript

    我想使用 jQuery 加载一些包含一些 javascript 的 HTML 我尝试过使用 load 和 ajax HTML 很好地插入到 DOM 中 但任何脚本标签似乎都被过滤掉了 如果我alert 返回的HTML 脚本会被包含 但是当我
  • 在 Keras 中,如何修改每个批次的损失(使用训练期间应运行的额外代码)

    使用此自定义回调 我可以 1 查看训练期间的损失 2 访问正在训练的模型 class ChangeBatchLoss tf keras callbacks Callback def on train batch begin self bat
  • 打开 PHPStorm 项目时可以自动运行终端命令吗?

    我有一个 Gulp 工作流程 我希望在 PHPStorm 中打开我的项目时自动启动该工作流程 这可能吗 Not possible at the moment https youtrack jetbrains com issue WEB 11
  • gcc -g 调试标志会影响程序执行吗?

    我刚刚测试了我正在工作的一个程序 当我使用 g 编译它时 我发现它的执行速度快了 3 s 统计上显着的变化 这对我来说毫无意义 我认为 g 标志不应该影响程序执行 即使它影响程序执行也会使它运行得更慢 而不是更快 谁能告诉我为什么会发生这种
  • .NET 3.5 SDK 位于哪里?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 谁能提供下载 NET 3 5 SDK 的链接吗 我检查了微软网站和谷歌 但找不到这个的下
  • Grails 在 Service 类中获取 Session 和 Management

    我对 Grails 会话有疑问 我正在考虑为我的会话处理提供一个服务类 所以我创建了一个名为 SessionService 的类 在 grails app services grails 下 class SessionService sta
  • Spring Boot @ExceptionHandler 隐藏异常名称

    我正在使用 Spring Boot 1 3 X 并具有以下内容 RestController RequestMapping path foo public class FooController RequestMapping method
  • C# - 无法找到 x64 平台的库“leptonica-1.80.0.dll”

    我正在使用 Tesseract 5 2 0 创建一个控制台应用程序 下面是我的代码 System Drawing Bitmap img new System Drawing Bitmap convertedFile TesseractEng
  • 迭代 Lotus Domino 中的每个文档

    我希望迭代 可能很大 Lotus Domino 数据库中的每个文档 并且如果处理中断 网络连接错误 应用程序重新启动等 能够从上一个文档继续 我没有数据库的写入权限 我正在寻找一种方法 无需从服务器下载那些已处理的文档 因此 我必须将一些启