Oozie String wf:errorCode(String node)如何检查空?

时间:2013-11-11 21:58:51

标签: hadoop oozie

我有一个名为'CW'的动作节点,之后我放置了一个决策节点来检查'CW'是否返回错误....我应该如何编写谓词?

我试过了:

${ wf:errorCode('CW') eq '' }然后转到Y

${ wf:errorCode('CW') != '' }然后转到N

虽然它返回空字符串(没有错误),但它总是转到N。有什么建议吗?谢谢!

6 个答案:

答案 0 :(得分:3)

尝试

${not empty wf:errorCode('CW')} 

检测失败

答案 1 :(得分:2)

这是检查对我有用的空字符串的唯一方法。

<decision name='decision-action'>
    <switch>
        <case to='success-action'>${firstNotNull(wf:lastErrorNode(), 'no error') eq 'no error'}</case>
        <default to='failed-action' />
    </switch>
</decision>

所以,要将这个答案直接与问题联系起来,这个条件

${firstNotNull(wf:errorCode('CW'), 'no error') eq 'no error}

应映射到Y。

答案 2 :(得分:1)

你不能只使用ok和error动作转换吗?

<action name="CW">

    <!--
      ....
    -->

    <ok to="Y"/>
    <error to="N"/>
<\action>

答案 3 :(得分:0)

${ wf:errorCode('CW') == null }

您还可以检查CW是否退出并出现如下错误:

${ wf:lastErrorNode()=='CW' }
CW完成后

答案 4 :(得分:0)

${ wf:errorCode('CW') eq null } then go to Y

${ wf:errorCode('CW') != null } then go to N

为我工作

答案 5 :(得分:0)

$ {wf:lastErrorNode()eq wf:errorMessage(wf:lastErrorNode())}->将此条件视为成功,当作业失败时,这两个值为空白  $ {wf:lastErrorNode()!= wf:errorMessage(wf:lastErrorNode())}->将此情况视为失败,当作业失败时,这些值不匹配 它对我有用,希望对您有帮助