我不确定如何使用这个好工具。
我有很多可以依赖的工作流程。
例如:
我认为我们可以拥有一个可以启动(有一些数据条件)所有工作流程的corrdinator。但我开始认为这不是好的做法。
我们是否应该为每个工作流程配备一个协调员,其中包含所有执行条件+一个启动所有协调员的捆绑包?那样:
或者一个协调员可以启动所有工作流程(他们可以依赖或不依赖)?
答案 0 :(得分: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>
如果你想同时运行它们而不是使用分叉。