Triggers MarkLogic CPF未对文档删除执行操作
我正在使用MarkLogic CPF 我已为以下3种状态配置了CPFTriggers MarkLogic CPF未对文档删除执行操作,triggers,marklogic,Triggers,Marklogic,我正在使用MarkLogic CPF 我已为以下3种状态配置了CPF http://marklogic.com/states/initial http://marklogic.com/states/updated http://marklogic.com/states/deleted 当初始和更新状态时,一切正常 但是当我删除一个文档时,CPF没有执行配置的模块 请在下面找到管道配置(仅针对已删除状态粘贴) 未对文档创建、更新和删除执行任何操作。 请帮我找出我正在犯的错误 我已将两条管道连接到域
http://marklogic.com/states/initial
http://marklogic.com/states/updated
http://marklogic.com/states/deleted
当初始
和更新
状态时,一切正常
但是当我删除一个文档时,CPF没有执行配置的模块
请在下面找到管道配置(仅针对已删除状态粘贴)
未对文档创建、更新和删除执行任何操作。
请帮我找出我正在犯的错误
我已将两条管道连接到域
以上一项&状态更改处理
更新:
分析:
我在名称空间条件.xqy
文件中放置了一个日志。
删除上面的文档时,将调用和
当我检查fn:docavailable($cpf:documenturi)
时,它返回我false
。这意味着该文档已经消失(删除),因此没有触发器
对于
状态转换
和状态转换
它不起作用,请帮助我理解错误以及如何解决错误。状态名称本身没有意义。如果查看状态更改处理管道中的定义,您将看到在创建时将状态设置为(对于更新也是如此),但对于删除,它不会设置状态,而是运行操作。如果您希望自己的操作响应删除,则需要状态转换,而不是状态转换。比如:
<status-transition>
<annotation>
Do some extra work.
</annotation>
<status>deleted</status>
<priority>5000</priority>
<always>true</always>
<execute>
<condition>
<module>/MarkLogic/cpf/actions/namespace-condition.xqy</module>
<options xmlns="/MarkLogic/cpf/actions/namespace-condition.xqy">
<root-element>head</root-element>
<namespace>https://www.head.org/Schema/head/hd</namespace>
</options>
</condition>
<action>
<module>delete-record.xqy</module>
</action>
</execute>
做一些额外的工作。
删除
5000
真的
/MarkLogic/cpf/actions/namespace-condition.xqy
头
https://www.head.org/Schema/head/hd
delete-record.xqy
“始终”表示除了状态更改处理管道中的正常删除处理之外,还要执行此操作。状态名称本身没有意义。如果查看状态更改处理管道中的定义,您将看到在创建时将状态设置为(对于更新也是如此),但对于删除,它不会设置状态,而是运行操作。如果您希望自己的操作响应删除,则需要状态转换,而不是状态转换。比如:
<status-transition>
<annotation>
Do some extra work.
</annotation>
<status>deleted</status>
<priority>5000</priority>
<always>true</always>
<execute>
<condition>
<module>/MarkLogic/cpf/actions/namespace-condition.xqy</module>
<options xmlns="/MarkLogic/cpf/actions/namespace-condition.xqy">
<root-element>head</root-element>
<namespace>https://www.head.org/Schema/head/hd</namespace>
</options>
</condition>
<action>
<module>delete-record.xqy</module>
</action>
</execute>
做一些额外的工作。
删除
5000
真的
/MarkLogic/cpf/actions/namespace-condition.xqy
头
https://www.head.org/Schema/head/hd
delete-record.xqy
“始终”表示除了状态更改处理管道中的正常删除处理之外,还要执行此操作。您的域是否连接了状态更改处理管道?它负责处理创建和更新的状态事件,以设置这些状态,以便状态转换能够响应 您的域是否连接了状态更改处理管道?它负责处理创建和更新的状态事件,以设置这些状态,以便状态转换能够响应 我认为在评估状态条件时,文档已经消失了,因此不能使用依赖于文档附加的任何内容(内容、属性、集合等)的条件。我怀疑你只能让它依赖于uri。@grtjn我按照
mholstege
的建议做了一些更改,但仍然面临一些问题,你能帮我一下吗。我已经更新了问题。如果您需要更多详细信息,请告诉我。我认为在评估状态条件时,文档已经消失,因此您不能使用依赖于文档附加的任何内容(内容、属性、集合等)的条件。我怀疑你只能让它依赖于uri。@grtjn我按照mholstege
的建议做了一些更改,但仍然面临一些问题,你能帮我一下吗。我已经更新了问题。如果您需要更多详细信息,请告诉我。在添加状态转换时,请使用状态删除。CPF已停止工作http://marklogic.com/states/initial
&http://marklogic.com/states/updated
状态转换
。未触发任何操作。我已在问题中添加了完整的管道配置。我已更新问题。增加了分析。请帮忙!请回复。在添加状态为“删除”的状态转换时。CPF已停止工作http://marklogic.com/states/initial
&http://marklogic.com/states/updated
状态转换
。未触发任何操作。我已在问题中添加了完整的管道配置。我已更新问题。增加了分析。请帮忙!请回答。是的“状态更改处理”管道已连接到域。若要诊断此类事件,请启用CPF跟踪事件(组>诊断,键入CPF,您将启用多个事件)以及CPF条件调用
,CPF条件结果
,以及CPF操作调用
。这将给你一个非常健谈的关于CPF正在尝试做的事情的详细介绍。您还可以启用finer
级别的调试,这应该会显示预提交触发器“状态更改处理”管道连接到域。若要诊断此类事件,请启用CPF跟踪事件(组>诊断,键入CPF,您将启用多个事件)以及CPF条件调用
,CPF条件结果
,以及CPF操作调用
。这将给你一个非常健谈的关于CPF正在尝试做的事情的详细介绍。您还可以启用finer
级别的调试,这将显示预调试
<status-transition>
<annotation>
Do some extra work.
</annotation>
<status>deleted</status>
<priority>5000</priority>
<always>true</always>
<execute>
<condition>
<module>/MarkLogic/cpf/actions/namespace-condition.xqy</module>
<options xmlns="/MarkLogic/cpf/actions/namespace-condition.xqy">
<root-element>head</root-element>
<namespace>https://www.head.org/Schema/head/hd</namespace>
</options>
</condition>
<action>
<module>delete-record.xqy</module>
</action>
</execute>