微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何设置 KOFAX KTM Server 全局变量值,该值将在 Batch open 中初始化,在SeparateCurrentPage 中更新并在 BatchClose 中使用?

如何解决如何设置 KOFAX KTM Server 全局变量值,该值将在 Batch open 中初始化,在SeparateCurrentPage 中更新并在 BatchClose 中使用?

我正在尝试计算 Project.Document_SeparateCurrentPage 中的特定条形码值,并在 BatchClose 中使用它来比较计数是否大于 1,如果计数大于 1,则将批次发送到具有特定优先级的特定队列。我在 KTM 项目脚本中使用了一个全局变量来保存在批处理打开时初始化为 0 的计数值。它工作正常,直到单元测试。但是我们的自动化团队发现,在 20 个类似的批次中,只有少数批次被发送到该批次应该去的队列中,只有当计数满足大于一个条件时,尽管他们只使用了一个条形码。

我用谷歌搜索发现 KTM 服务器脚本事件不允许在不同进程中使用共享信息 (https://docshield.kofax.com/KTM/en_US/6.4.0-uuxag78yhr/help/SCRIPT/ScriptDocumentation/c_ServerScriptEvents.html)。然后我尝试使用批处理字段来保存条形码计数,但无法使用 pXRootFolder.Fields.ItemByName("BatchFieldName").Text = "GreaterThanOne" 从 Project.Document_SeparateCurrentPage 函数更新其值。日志显示批处理读取第一页3次,然后出错。

任何链接都会有所帮助。提前致谢。

解决方法

正如您提到的,批处理/文档处理的不同阶段可以在不同的进程中执行,因此在一个事件中初始化的全局变量不一定在其他事件中可用。理想情况下,您应该只使用全局变量,如果它们的内容可以从 Application_InitializeScript 或 Application_InitializeBatch 设置,因为这些事件发生在每个单独的进程中。正如您所发现的,您不应该为您的用例使用全局变量,因为一个批次的 Document_SeparateCurrentPage 和 Batch_Close 可能发生在不同的进程中,就像同一个进程可能会为多个批次执行这些事件一样。

此外,由于相关原因,您不能从文档级事件设置批处理字段:任意数量的单独进程可以并行处理批处理文档,因此批处理级数据对于文档事件是只读的。这有点不直观,但分离是一个文档级别的事件,即使它似乎作用于整个批次。 (你看到的3次只是错误重试机制。)

如果它满足您的需求,最简单的答案可能是使用条形码定位器作为正常提取(不仅仅是分离)的一部分,并在需要时分配给一个字段。虽然您无法从文档事件中设置批处理字段,但您可以从批处理事件中读取文档数据。因此,不要试图在文档事件过程中跟踪诸如计数之类的东西,只需确保您需要的任何数据都保存在文档级别。然后在 Batch_Close 中,您可以迭代文档并计算/计算您需要的任何内容。 (在您的情况下,可能是每个文档中条形码定位器的替代定位器数量。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。