我有一个Oozie动作,会调用其他动作。 我不想把它重写为另一个动作,因为它们被单独使用。
<action name="some action">
<Go to action 1>
after action 1 go to action 2
<Go to action 2>
</action>
<action name="action 2">
<sub-workflow>
<app-path>${SUB_APP_PATH}workflow_monthly.xml</app-path>
<propagate-configuration/>
</sub-workflow>
<ok to="end"/>
<error to="fail" />
</action>
<action name="action 1">
<sub-workflow>
<app-path>${SUB_APP_PATH}workflow_weekly.xml</app-path>
<propagate-configuration/>
</sub-workflow>
<ok to="end"/>
<error to="fail" />
</action>
非常感谢文档或指南。
答案 0 :(得分:1)
我对你的问题不太确定,所以如果你有其他意思,请告诉我。
Oozie阻止多个动作指向一个动作。叉子后面的join
是唯一的例外。我倾向于通过巧妙的工作流设计和良好的属性使用来解决这个问题 - 即我将weekly
或monthly
作为名为frequency
的属性传递到作业中,然后执行操作1和2可以用一个动作替换:
<action name="action">
<sub-workflow>
<app-path>${SUB_APP_PATH}workflow_${frequency}.xml</app-path>
<propagate-configuration/>
</sub-workflow>
<ok to="end"/>
<error to="fail" />
显然,这不是你正在寻找的解决方案,但它是我曾经做过的最好的。
顺便说一句,我不确定你在工作流程中究竟要做什么 - 为什么不让some action
指向action-1
,然后让action 1
指向action-2
?你为什么要回到some action
?你在找叉子吗?在这种情况下:
<fork name="fork-actions"> <!--this replaces `some-action`-->
<path start="action-1" />
<path start="action-2" />
</fork>
<join name="join-fork-actions" to="end" />
<action name="action-2">
<sub-workflow>
<app-path>${SUB_APP_PATH}workflow_monthly.xml</app-path>
<propagate-configuration/>
</sub-workflow>
<ok to="join-fork-actions"/>
<error to="fail" />
<action name="action-1">
<sub-workflow>
<app-path>${SUB_APP_PATH}workflow_weekly.xml</app-path>
<propagate-configuration/>
</sub-workflow>
<ok to="join-fork-actions"/>
<error to="fail" />