2

我不确定是否将好工具用于我想要的。

我有很多可以依赖或不依赖的工作流程。

例子:

  1. /工作流1
    • /workflow.xml
    • /job.properties
  2. /工作流2
    • /workflow.xml
    • /job.properties
  3. ……

我认为我们可以有一个协调器,它可以启动(带有一些数据条件)所有工作流。但我开始认为这不是好的做法。

我们是否应该在每个工作流中拥有一个具有所有执行条件的协调器 + 一个启动所有协调器的捆绑包?像那样 :

  1. /wf1
    • /workflow.xml
    • /job.properties
    • /协调器.xml
  2. /wf2
    • /workflow.xml
    • /job.properties
    • /协调器.xml
  3. /bundle.xml

或者一位协调员可以启动所有工作流程(他们可以依赖或不依赖)?

  1. /wf1
    • /workflow.xml
    • /job.properties
  2. /wf2
    • /workflow.xml
    • /job.properties
  3. /协调器.xml
4

1 回答 1

3

这取决于。如果 wf1 和 wf2 逻辑相关,频率相同,并且具有共同的数据集依赖关系,则可以将它们放在一个协调器上(并同时或一个接一个地运行它们)。但如果不是,最好将它们放在单独的协调器中。

sub-workflow您可以使用该功能从一个工作流程启动多个工作流程:

<workflow-app name="root-workflow" xmlns="uri:oozie:workflow:0.4">
    <start to="run-wf1"/>
    <action name="run-wf1">
        <sub-workflow>
            <app-path>${appPath}/wf1.xml</app-path>
            <propagate-configuration/>
        </sub-workflow>
        <ok to="run-wf2"/>
        <error to="kill"/>
    </action>
    <action name="run-wf2">
        <sub-workflow>
            <app-path>${appPath}/wf2.xml</app-path>
            <propagate-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>

如果您想同时运行它们而不是使用分叉。

于 2015-07-23T10:39:41.033 回答