0

MarkLogic 版本:9.0-6.2

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

这是 content.sjs 中的代码片段

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

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

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

let source;
//logic to populate source

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

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

4

1 回答 1

1

我认为把这个逻辑放在最好的地方就是作者。那里有所有数据(标题、三元组、实例和附件),如果您也想对其进行检查,您还可以直接访问 Final 数据库中的数据。

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

于 2019-03-01T13:31:39.813 回答