我在主工作流程中创建了子工作流程,并按顺序调用它们,这意味着当一个人完成后,下一个子工作流程将被触发,但是在子工作流程失败时,我的主工作流程没有得到中止,下一个子工作流程被触发。主要工作流程示例如下所示
<?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>
因此,在上面的示例中,第二个工作流程正在被触发。任何人都可以告诉杀死主要工作流程的方法,以防它中止。
答案 0 :(得分:2)
例如,如果suv-workflow的输出不存在 - 发送到结束/失败。
答案 1 :(得分:0)
出现了不同的错误。由于错误,Kill节点没有被执行。我们必须仅在主工作流程中使用EL命令,因此在Kill节点,工作流程具有另一个参数,该参数使得kill节点卡住并且主要工作流程没有中止