Oozie Action可以指出多个动作吗?

时间:2015-02-05 08:03:58

标签: oozie

我有一个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>

非常感谢文档或指南。

1 个答案:

答案 0 :(得分:1)

我对你的问题不太确定,所以如果你有其他意思,请告诉我。

Oozie阻止多个动作指向一个动作。叉子后面的join是唯一的例外。我倾向于通过巧妙的工作流设计和良好的属性使用来解决这个问题 - 即我将weeklymonthly作为名为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" />