我不确定是否可以使用这个好工具来实现我想要的目的。
我有很多工作流程,这些工作流程可以是依赖的,也可以是非依赖的。
示例:
- /workflow1
- /工作流程.xml
- /job.properties
- /workflow2
- /工作流程.xml
- /job.properties
- ....
我认为我们可以有一个协调器,可以启动(在某些数据条件下)所有工作流程。但我开始认为这不是好的做法。
我们是否应该为每个工作流配备一名具备所有执行条件的协调员 + 一个启动所有协调员的捆绑包?像那样 :
- /wf1
- /工作流程.xml
- /job.properties
- /协调员.xml
- /wf2
- /工作流程.xml
- /job.properties
- /协调员.xml
- /bundle.xml
或者一名协调员可以启动所有工作流程(它们可以是相关的,也可以不是)?
- /wf1
- /工作流程.xml
- /job.properties
- /wf2
- /工作流程.xml
- /job.properties
- /协调员.xml
这取决于。如果 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>
如果您想同时运行它们,请使用分叉。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)