🍄与或非表达式
# 基本用法
LiteFlow在v2.10.2版本带来了与或非表达式,就是AND
,OR
,NOT
表达式。
通过之前的几小章,应该可以知道,有些编排需要返回一个布尔值,比如条件编排:
<chain name="chain1">
IF(x, a, b);
</chain>
其中x组件应该为条件组件,返回的是一个布尔值。
但是如果这个布尔值并不是由一个组件决定的,而是由多个组件决定的呢。这里就可以用与或非表达式了。
假设这里的条件是要由x和y共同决定,利用与或非表达式中的AND
:
<chain name="chain1">
IF(AND(x,y), a, b);
</chain>
上述AND
的意思是,如果x和y都为true,则为真,会执行组件a,如果x和y有一个为false,则执行b。
AND
里面可以有多个布尔组件或者与或非表达式。
同理,这里也可以用OR
来表示:
<chain name="chain1">
IF(OR(x,y), a, b);
</chain>
上述OR
的意思是,只要x和y中的一个为true,则为真,否则为假。
OR
里面可以有多个组件或者与或非表达式。
NOT
就是非的意思,比如:
<chain name="chain1">
IF(NOT(x), a, b);
</chain>
如果x返回true,则经过非运算后,为假,执行b,如果x返回false,则经过非运算后,为真,执行a。
NOT
里面只能有一个布尔组件或者与或非表达式。
# 可以用的地方
在LiteFlow所有EL表达式中,返回布尔值的地方都可以用与或非表达式,除了上述的IF
外,还可以用在WHILE
,BREAK
表达式中。
提示
如果你在THEN
表达式中用与或非表达式,会报错的,因为普通组件并非是一个布尔值的的返回。
# 复杂嵌套
与或非表达式也可以进行多级嵌套,比如:
<chain name="chain1">
IF(
OR(
AND(x1, x3), NOT(OR(x3, x4))
),
a, b
);
</chain>
类似于这种,其实概念和java的与或非都一样,无非就是换了种写法。
帮助我们改善此文档 (opens new window)
上次更新: 2023/08/04, 17:02:03