2015-07-20 58 views
0

我一直在试图触发一个动作时,在Oozie的操作失败
我可以做到这一点使用错误到节点如下Oozie的工作流程回滚时被杀

<ok to="end"/> 
<error to="kill"/> 

这将工作,如果完全没有行动我的要求是在当前操作在oozie中失败时进行回滚。
我在寻找的是在工作流被杀死的情况下触发一个步骤(如果有人转到工作流并在HUE中单击kill按钮)。
我可以看到一个名为kill的节点,它在workflow.xml中生成当我通过HUE使用oozie。我试图把我的自定义操作,在这个空间里,但每次我保存XML的工作流程得到默认值,如下

<kill name="kill"> 
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
</kill> 

有什么办法来执行某些操作(滚动后盾的一些种类)当Oozie的工作流程被杀了?
有没有什么方法可以捕获Kill操作并触发另一个工作流程? 我已经通过oozie文档没有成功。
真的很感谢你对此的帮助。

+0

AFAIK往死里节点是 “死胡同”。将临时路径写入所有数据并在最后一步将其移至最终预期输出路径可能是一种常见做法,因此您无需真正“回滚” – Romain

+0

@Romain:我也有相同的关于Kill节点的理解(Dead Node - 没有任何反应),但是我试图实现的是在oozie工作流中使用Kill动作(使用HUE)。我不确定这是否可以完成,但是如果完成了,那么我可以重写kill节点并放置一个脚本来回滚表中的数据(Hive/RDBMS)。或者如果我当前的工作流程被杀死了,我能否触发一个工作流。我试图为桌面实现清理场景,但是我没有任何手动干预强行终止工作流程 – Garfield

+0

您可以尝试使用子工作流程 – Romain

回答

0

kill节点中的name属性是Kill操作节点的名称。 消息元素的内容将被记录为工作流作业的终止原因。 kill节点没有过渡元素,因为它终止了工作流作业,如KILLED。

所以你有没有尝试过调用回滚动作,同时提到“错误”它自己而不是调用kill。 像

<ok to="end"/> 
<error to="rollBack_action"/> 

事后一些事情提的是 “rollBack_Action” 成才像

<action name='rollBack_action'> 
       <java> 
         <job-tracker>${jobTracker}</job-tracker> 
         <name-node>${nameNode}</name-node> 
         <arg>action_roll_back</arg> 
       </java> 
       <ok to="end"/> 
     </action>