我在主工作流程中創建了子工作流程,並且它們在序列中調用,意味着當完成後會觸發下一個子工作流程,但是在子工作流程失敗時,我的主工作流程不會中止並且下一個子工作流程正在觸發。主工作流程示例如下:如何在子工作流失敗時中止oozie工作流?
<?xml version="1.0"?>
<workflow-app xmlns="uri:oozie:workflow:0.4" name="Mainworkflow_">
<start to="subworkflow-node-abc"/>
<action name="subworkflow-node-abc">
<sub-workflow>
<app-path>hdfs://link/abc.xml</app-path>
<configuration>
<property>
<name>autoReconnect</name>
<value>true</value>
</property>
<property>
<name>TableName</name>
<value>abc</value>
</property>
<property>
<name>targetDirPath</name>
<value>${targetDirPath}</value>
</property>
</configuration>
</sub-workflow>
<ok to="subworkflow-node-def"/>
<error to="kill"/>
</action>
<action name="subworkflow-node-def">
<sub-workflow>
<app-path>hdfs://def.xml</app-path>
<configuration>
<property>
<name>autoReconnect</name>
<value>true</value>
</property>
<property>
<name>TableName</name>
<value>def</value>
</property>
<property>
<name>targetDirPath</name>
<value>${targetDirPath}</value>
</property>
</configuration>
</sub-workflow>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
所以在上面的例子中,第二個工作流程正在被觸發。任何人都可以告訴方式殺死主要工作流程,以防止它中止。
出現了不同的錯誤。由於錯誤,Kill節點沒有得到執行。我們必須僅在主工作流程中使用EL命令,因此在Kill節點,工作流程的另一個參數使kill節點停滯不前,主工作流程也沒有中止。 –