🎋并行编排
# 最基本的例子
如果你要并行执行a,b,c三个组件,你可以用WHEN
关键字,需要注意的是,WHEN
必须大写。
<chain name="chain1">
WHEN(a, b, c);
</chain>
# 和串行嵌套起来(一)
接下来,让我们把THEN
和WHEN
结合起来用,看一个示例:
<chain name="chain1">
THEN(
a,
WHEN(b, c, d),
e
);
</chain>
图示
在以上示例里,b,c,d默认并行都执行完毕后,才会执行e。
# 和串行嵌套起来(二)
上面的示例应该很好理解吧,那么再看一个示例:
<chain name="chain1">
THEN(
a,
WHEN(b, THEN(c, d)),
e
);
</chain>
图示
# 忽略错误
WHEN
关键字提供了一个子关键字ignoreError
(默认为false)来提供忽略错误的特性,用法如下:
<chain name="chain1">
THEN(
a,
WHEN(b, c, d).ignoreError(true),
e
);
</chain>
图示
以上假设b,c,d中任一一个节点有异常,那么最终e仍旧会被执行。
# 任一节点先执行完则忽略其他
WHEN
关键字提供了一个子关键字any
(默认为false)用来提供并行流程中,任一条分支先执行完即忽略其他分支,继续执行的特性。用法如下:
<chain name="chain1">
THEN(
a,
WHEN(b, THEN(c, d), e).any(true),
f
);
</chain>
图示
以上流程,假设e节点先执行完,那么不管其他分支是否执行完,会立马执行节点f。
# 关于组的概念
在以前的版本中,并行编排有组(group)的概念,而在2.8.X版本中,我们去除了组的概念。
用EL表达式,其实你写2个不同的WHEN就是2个组。比如:
<chain name="chain1">
THEN(
WHEN(a, b, c, d)
);
</chain>
以上abcd都在同一个并行组中。
<chain name="chain1">
THEN(
WHEN(a, b),
WHEN(c, d)
);
</chain>
以上例子,ab是一个并行组,而cd是另一个并行组。
帮助我们改善此文档 (opens new window)
上次更新: 2022/10/07, 00:22:18