一个 Oozie Action 可以指向多个动作吗?
Can an Oozie Action point to multiple actions?
我有一个会调用其他动作的 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>
非常感谢文档或指南。
我不太确定你的问题,如果你的意思是别的,请告诉我。
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" />
我有一个会调用其他动作的 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>
非常感谢文档或指南。
我不太确定你的问题,如果你的意思是别的,请告诉我。
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" />