Marklogic CPF策略

Marklogic CPF策略,marklogic,marklogic-9,Marklogic,Marklogic 9,对于集合中文档的插入/更新操作,我已启用CPF。我想确保在我的CPF中,如果我修改了另一个文档,我不希望它被添加到CPF队列中。我怎样才能做到这一点 例如: 假设我的CPF队列中有以下文件 d1、d2、d3、d4、d5 比如说,在我的d1CPF任务中,我必须更新文档d4。我需要设置什么CPF状态,以使d4不会添加到CPF队列的末尾。。但是d4如果已经存在于队列中,则应继续常规CPF流程 这能做到吗?如果是这样的话,那么遵循什么样的策略才是好的。如果您通过集合定义您的CPF域,那么您可以对集合执行

对于集合中文档的插入/更新操作,我已启用CPF。我想确保在我的CPF中,如果我修改了另一个文档,我不希望它被添加到CPF队列中。我怎样才能做到这一点

例如: 假设我的CPF队列中有以下文件

d1、d2、d3、d4、d5

比如说,在我的
d1
CPF任务中,我必须更新文档
d4
。我需要设置什么CPF状态,以使
d4
不会添加到CPF队列的末尾。。但是
d4
如果已经存在于队列中,则应继续常规CPF流程


这能做到吗?如果是这样的话,那么遵循什么样的策略才是好的。

如果您通过集合定义您的CPF域,那么您可以对集合执行一些技巧

例如,假设您在一个名为“blue”的集合中有一组文档,并且希望对这些文档应用CPF管道。但根据您的要求,它需要有条件。因此,与其拥有一个包含“蓝色”集合的CPF域,不如将其设置为“绿色”。然后在“蓝色”集合上使用用于创建/修改的预提交触发器将文档添加到“绿色”,从而触发CPF管道(也可以从“绿色”中删除文档)。但是pre-commit触发器可以说-如果文档已经是“红色”,那么我不会将其添加到“绿色”


要使用它,您的CPF管道可以将d4添加到“红色”,告诉预提交触发器不要将d4添加到“绿色”。如果d4已经是绿色的,这很好-CPF管道仍将运行,如您所愿

如果您要通过集合定义您的CPF域,则可以对集合执行一些技巧

例如,假设您在一个名为“blue”的集合中有一组文档,并且希望对这些文档应用CPF管道。但根据您的要求,它需要有条件。因此,与其拥有一个包含“蓝色”集合的CPF域,不如将其设置为“绿色”。然后在“蓝色”集合上使用用于创建/修改的预提交触发器将文档添加到“绿色”,从而触发CPF管道(也可以从“绿色”中删除文档)。但是pre-commit触发器可以说-如果文档已经是“红色”,那么我不会将其添加到“绿色”


要使用它,您的CPF管道可以将d4添加到“红色”,告诉预提交触发器不要将d4添加到“绿色”。如果d4已经是绿色的,这很好-CPF管道仍将运行,如您所愿

如果d4被更新并且在域的范围内,CPF将始终自动触发,但框架包含代码,以确保它一次只能在一种状态下处理文档。所以它拿起d4并开始工作,然后另一个d4触发器触发,该触发器将停止工作。我认为框架的方法是:一旦处理了d4,我如何标记它,使它不再被处理?如果它正在进行中,你不必担心。如果它处于完成过程中,则需要将其置于终端状态(即,在任何相关管道中都没有转换的状态)


如果您试图以不应触发的方式更新d4,那么这意味着您在第一次触发d4时所做的工作上设置了一个竞赛条件,我不建议尝试这样做。很难弄清楚所有的竞争条件。

如果d4被更新并且在域的范围内,CPF总是会自动触发,但是框架包含代码,以确保它一次只在一个状态下处理文档。所以它拿起d4并开始工作,然后另一个d4触发器触发,该触发器将停止工作。我认为框架的方法是:一旦处理了d4,我如何标记它,使它不再被处理?如果它正在进行中,你不必担心。如果它处于完成过程中,则需要将其置于终端状态(即,在任何相关管道中都没有转换的状态)


如果您试图以不应触发的方式更新d4,那么这意味着您在第一次触发d4时所做的工作上设置了一个竞赛条件,我不建议尝试这样做。很难弄清楚所有的比赛条件。

我在这里有点困惑,比如说如果d4已经在cpf队列中等待轮到它,现在如果d1同时修改了d4,d4是否会再次添加到要处理的cpf队列的末尾,或者因为d4已经在队列中,所以不会再次添加到cpf队列我在这里有点困惑,比如说,如果d4已经在cpf队列中等待轮到它,现在如果d1同时修改d4,d4是否会再次添加到要处理的cpf队列的末尾,或者由于d4已在队列中,因此不会再次添加到cpf队列