MarkLogic版本:9.0-6.2
我们有一个统一的流程,我们正在准备content.sjs中的“ source”变量,以将其传递给writer.sjs。我有一种情况,我应该跳过编写器(例如,如果文档已经存在于最终数据库中,并且暂存文档的时间戳小于最终文档中的时间戳,那么我不想写入最终文档)
这是content.sjs中的代码段
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);
}
在协调流程中,当我们不想从暂存阶段写文档时,跳过作家的最佳方法是什么。
答案 0 :(得分:1)
我认为放置此逻辑的最佳位置实际上是在作者中。在那里,您拥有所有数据(标题,三元组,实例和附件),并且如果您也想对此进行运行检查,则可以直接访问Final数据库中的数据。
替代方法是将逻辑放在协调流程的主要部分。
HTH!