【问题标题】:MarkLogic : Harmonize flow to skip writerMarkLogic:协调流程以跳过编写器
【发布时间】:2019-03-01 03:05:07
【问题描述】:

MarkLogic 版本:9.0-6.2

我们有一个协调流程,我们准备将 content.sjs 中的“源”变量传递给 writer.sjs。我有一个应该跳过编写器的场景(例如,如果文档已经存在于最终数据库中并且暂存文档的时间戳小于最终文档中的时间戳,那么我不想写入最终文档)

这是 content.sjs 中的代码 sn-p

let source;
//logic to populate source
options.headers = source.envelope.headers;
return extractInstanceCustomer(source.envelope.instance);

我们注意到,有时当源为空时会跳过编写器。然而,在某些情况下,编写器是用空源调用的,因此信封是用标题创建的,但实例是空的。

我们尝试了以下逻辑,但仍然没有看到一致的行为。

let source;
//logic to populate source

if (fn.empty(source)) {
}
else {
  options.headers = source.envelope.headers;
  return extractInstanceCustomer(source.envelope.instance);
}

当我们不想在协调流程期间从暂存中编写文档时,跳过编写器的最佳方法是什么。

【问题讨论】:

    标签: marklogic marklogic-9 marklogic-dhf


    【解决方案1】:

    我认为放置这种逻辑的最佳位置实际上是在作家身上。那里有所有数据(标题、三元组、实例和附件),如果您也想对其进行检查,您还可以直接访问最终数据库中的数据。

    另一种选择是将逻辑置于协调流程的主要部分。

    HTH!

    【讨论】:

    • 非常感谢,这很有道理。然而,我们对协调流的不一致行为更加紧张,因为我们确实看到它没有写入最终数据库(在某些情况下),尽管我们在 writer.sjs 中没有任何检查。这肯定是有原因的,但我们很紧张,我们没有完全了解我们的代码行为
    • 如果您有一个不返回任何内容的内容脚本,我预计协调会失败,这应该在跟踪中可见..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2018-12-08
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多