如何在oozie工作流中使用逻辑运算符

ckocjqey  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(312)

我在 predicate 中有一个oozie工作流im using decision control node,我想要“&&”两个不同的条件,我需要在它们之间使用“&&”来获得最终的真/假结果
我找不到这种条件的 predicate 语法
我在用这个

<decision name="comboDecision">
        <switch>
            <case to="alpha">
              ---------
            </case>
        </switch>
  </decision>

我想这么做=

<decision name="comboDecision">
        <switch>
            <case to="alpha">
             condition1 && condition2
            </case>
        </switch>
  </decision>

有人能帮我学语法吗?

exdqitrt

exdqitrt1#

我将用一个例子来解释这一点。
假设我们有一个java操作(我们将此操作称为 getAgeInfo ),输出一个人的年龄:

'person.age': Age of the person

行动:

<action name='getAgeInfo'> 
    <!--Outputs 1 property: person.age: returns age of the person--> 
    <java> 
        ..........
    </java> 
    <ok to="makeClassification" /> 
    <error to="fail" /> 
</action>

下一个动作是 makeClassification . 在 makeClassification 根据一个人的年龄,我们把他分为“儿童”、“青少年”、“中年人”或“老年人”。
例如,如果一个人的年龄大于或等于(ge)12(和)小于(lt)20,我们将该人归类为青少年,工作流将转换为 teenager 行动。
下面是switch语句,说明了“and”的用法:

<decision name="makeClassification"> 
    <switch> 
        <case to="child"> 
            ${wf:actionData('getAgeInfo')['person.age'] gt 0 &&
              wf:actionData('getAgeInfo')['person.age'] lt 12} 
        </case> 
        <case to="teenager"> 
            ${wf:actionData('getAgeInfo')['person.age'] ge 12 && 
              wf:actionData('getAgeInfo')['person.age'] lt 20} 
        </case> 
        <case to="mid-aged"> 
            ${wf:actionData('getAgeInfo')['person.age'] ge 20 && 
              wf:actionData('getAgeInfo')['person.age'] lt 50} 
        </case> 
        <case to="senior-citizen"> 
            ${wf:actionData('getAgeInfo')['person.age'] ge 50} 
        </case> 
        <default to="error"/> 
    </switch> 
</decision>

您可以在这里看到另一个示例:oozie by example,它演示了gt(大于)、lt(小于)、logical or(| |)、logical and(&&)的用法。

neskvpey

neskvpey2#

oozie el函数/表达式使用jsp表达式语言语法。从oozie的医生那里
您可以检查jsp2.0规范以获得语法。
具体到你的问题,答案是:

<decision name="comboDecision">
    <switch>
        <case to="alpha">${(condition1) and (condition2)}</case>
        <default to="end"/>
    </switch>
</decision>

相关问题