如何明确触发CPF操作模块

时间:2014-11-10 18:20:08

标签: marklogic

我的文档处于初始状态(http://marklogic.com/states/initial )我已将CPF管道配置为:

<state-transition>
  <annotation>ready</annotation>
  <state>http://marklogic.com/states/ready</state>
  <on-success>http://marklogic.com/states/completed</on-success>
  <on-failure>http://marklogic.com/states/error</on-failure>
  <execute>
    <condition>
        <module>/MarkLogic/cpf/actions/namespace-condition.xqy</module>
        <options xmlns="/MarkLogic/cpf/actions/namespace-condition.xqy">
        <namespace/>
        </options>
    </condition>
    <action>
      <module>action.xqy</module>
    </action>
  </execute>
</state-transition>

现在,当我使用:

更改文档的状态时
cpf:document-set-state("/myDocs/example.xml","http://marklogic.com/states/ready")

CPF操作模块 action.xqy 未执行。

有没有办法可以明确更改文档的状态并触发为该状态配置的CPF操作模块?

1 个答案:

答案 0 :(得分:3)

CPF处理有一些代码可以阻止它在已经激活时重新触发。如果您将日志级别设置为“debug”,您将看到有关“check-transition cause skip”的消息,向您显示此消息。

因此,您还需要将处理状态设置为“活动”(与状态更改处于同一事务中):

cpf:document-set-processing-status("/myDocs/example.xml", "active")