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