🌾选择编排
我们在写业务逻辑的时候,通常会碰到选择性问题,即,如果返回结果1,则进入A流程,如果返回结果2,则进入B流程,如果返回结果3,则进入C流程。在有些流程定义中也被定义为排他网关。
这个通过LiteFLow的表达式也非常容易实现,你可以用SWITCH
...to
的组合关键字,注意的是SWITCH
必须大写,to
小写。
# 最基本的例子
如果,根据组件a,来选择执行b,c,d中的一个,你可以如下声明:
<chain name="chain1">
SWITCH(a).to(b, c, d);
</chain>
图示
# 和THEN,WHEN嵌套起来(一)
我们结合之前两章,把三种表达式嵌套起来看一些例子
<chain name="chain1">
THEN(
a,
WHEN(
b,
SWITCH(c).to(d,e)
),
f
);
</chain>
图示
# 和THEN,WHEN嵌套起来(二)
接下来展示一个SWITCH
中套THEN
和WHEN
的例子。
如果你阅读过选择组件这一章,就应该知道,LiteFlow通过选择组件的返回来确定该选择什么。
那么如果SWITCH
中套一个THEN
,那么选择组件如果要选择这个THEN
应该返回什么呢?
LiteFlow中规定,每个表达式都可以有一个id值,你可以设置id值来设置一个表达式的id值。然后在选择组件里返回这个id即可。用法如下:
<chain name="chain1">
THEN(
a,
SWITCH(b).to(
c,
THEN(d, e).id("t1")
),
f
);
</chain>
图示
如果你想选择THEN
这个表达式,那么你可以在选择节点里返回t1:
@LiteflowComponent("b")
public class BCmp extends NodeSwitchComponent {
@Override
public String processSwitch() throws Exception {
//do your biz
return "t1";
}
}
帮助我们改善此文档 (opens new window)
上次更新: 2022/10/07, 00:22:18