Oozie是否支持决策节点调用fork-join或single-action节点



我正在尝试一个工作流,在该工作流中,基于变量,要么运行完整的fork-join,要么只运行一个操作。我收到一个错误,说没有fork可用于连接配对。是否支持此功能?这就是我正在做的:

<start to="path_decision"/>
<decision name="path_decision">
<switch>
<case to="fork-join-path">${some_var eq "foo"}</case>
<default to="node1"/>
<switch/>
<decision>
<fork name="fork-join-path>
<path start="node1"/>
<path start="node2"/>
</fork>
<action name="node1">
<ok to="path_end_decision"/>
</action>
<action name="node2">
<ok to="path_end_decision"/>
</action>
<decision name="path_end_decision">
<switch>
<case to="join_end>${some_var eq "foo"}</case>
<default to="normal_end"/>
</switch>
</decision>
<join name="join_end to="normal_end">
<action name="normal_end">
...clean up
</action>

在您的示例中,以下路径看起来有效:

start->path_decision->fork-join-path->node1->path_end_decision->normal_end

在这个路径中,您有一个fork,但没有join,这是不好的。Oozie的forkjoin验证器会发现这个并给你一个错误。它将无法识别您向path_decisionpath_end_decision添加了相同的条件。

我将使用node1node2作为分叉路径。在这种情况下,您不需要path_end_decision节点,只需直接从node1node2转到join_end即可。对于非联接路径,我将从path_decision转到新的node3,并从那里转到normal_end

你在join_end也有一个缺失的",但我希望这只是一个拼写错误。

最新更新