前言
LiteFlow v2.9.0 明天正式公布!同时带来的还有 LiteFlowX 1.1.0 IDEA 插件正式版!
LiteFlow v2.9.0 版本带来了大量的个性,一共 19 个 issue,还有数不清的优化。是所有公布的版本中个性最多的一次。
咱们纵向拓展了 LiteFlow 的深度,赋予新版本的 LiteFlow 在编排时领有更多的能力,适应更多的场景。
咱们也同时横向拓展了 LiteFlow 的广度,推出了规定插件机制,赋予 LiteFlow 能反对更多的中间件的能力。
让咱们一起来看看此次 2.9.0 版本中咱们新增了哪些激动人心的个性吧。
如果你是第一次晓得这个我的项目,能够去官网或相干的主页进行理解:
我的项目官网:
https://liteflow.yomahub.com
gitee 托管仓库:
https://gitee.com/dromara/lit…
github 托管仓库:
https://github.com/dromara/li…
循环表达式
尽管之前 LiteFlow 在表达式层面领有诸多的关键字,能够满足大部分的编排场景。然而在循环层面,并没有原生提供语法来反对。很多小伙伴只能依附隐式流程本人来实现循环操作。
在 2.9.0 版本中,咱们新增了 次数循环表达式
和条件循环表达式
。
次数循环表达式:
<!-- 间接写数字 -->
<chain name="chain1">
FOR(5).DO(THEN(a, b, c);
</chain>
<!-- 在 java 组件里获取次数 -->
<chain name="chain1">
FOR(x).DO(THEN(a, b, c);
</chain>
条件循环表达式:
<chain name="chain1">
WHILE(w).DO(THEN(a, b, c);
</chain>
退出循环关键字:
<!-- BREAK 能够和 FOR...DO 连用 -->
<chain name="chain1">
FOR(x).DO(THEN(a, b).BREAK(c);
</chain>
<!-- BREAK 能够和 WHILE...DO 连用 -->
<chain name="chain1">
WHILE(w).DO(THEN(a, b).BREAK(c);
</chain>
对于循环表达式的具体阐明请查看 [循环编排] 章节。
https://liteflow.yomahub.com/…
中间件的原生存储反对
之前 LiteFlow 只反对本地文件和 zk 形式存储,如果你想用其余的形式存储规定,LiteFlow 提供了扩大接口,须要使用者本人去实现。
这无疑减少了一些应用老本。
在 v2.9.0 版本中,官网从底层推出了规定存储插件机制,并一口气推出了 SQL 数据库,Nacos,Etcd 的反对,当然之前的 ZK 反对也独立出了插件。
应用插件,你无需再去本人扩大接口实现。只需引入插件。配置参数即可。大大降低了应用老本。
当然,对于没提供的中间件插件实现,你仍旧能够自行扩大去实现。
ZK 规定插件具体阐明:[ZK 规定文件配置源]
https://liteflow.yomahub.com/…
SQL 数据库规定插件具体阐明:[SQL 数据库配置源]
https://liteflow.yomahub.com/…
Nacos 规定插件具体阐明:[Nacos 配置源]
https://liteflow.yomahub.com/…
Etcd 规定插件具体阐明:[Etcd 配置源]
https://liteflow.yomahub.com/…
办法级的申明式组件
之前 LiteFlow 推出了申明式组件,不晓得大家都用过没。
申明式组件有一个最大的益处就是无侵入,你仅需通过注解就能够定义出一个组件。提供了自在扩大的可能。
然而类申明组件也是须要一个类对应一个组件。如果你的组件超多,达到上百个,那就须要定义上百个类。造成了类爆炸的景象,不好治理。
v2.9.0 推出的办法级的申明式组件正好能解决这个痛点。新版本容许你在一个类里通过办法上的注解实现多个组件的申明。这所有仅仅须要一个注解即可实现。
对于办法级的申明式的具体应用办法请参考:[办法级别式申明]
https://liteflow.yomahub.com/…
任意 Bean 均可引入至脚本
早在 2.6.X 的时候 LiteFlow 就反对了脚本编写,有些易变且简略的逻辑你能够用脚本来进行编写。
然而之前的版本,脚本里只能援用上下文。
有的小伙伴心愿脚本领有更多的能力,让脚本和 java 代码之间领有更多的交互,比方用脚本读个文件?比方用脚本进行一次 RPC 的调用?
这次 v2.9.0 带来了新的个性,任意 Bean 均可引入至脚本,换而言之,就是在脚本里能够调用任意 Java Bean 的对象。
这所有只须要一个注解即可实现。
对于脚本与 Java 之间交互的加强的具体应用办法请参考:[与 Java 进行交互]
https://liteflow.yomahub.com/…
反对单组件的多定义
LiteFlow 之前的版本是不反对单组件多定义的,也就是把一个组件定义成不同的 NodeId。如果你这样去定义,那这个组件总是被最初一个 NodeId 所笼罩。
v2.9.0 当初反对了这种定义形式,你能够用动静代码来构建组件,给同一个组件构建不同的 nodeId。
对于动静代码构建组件的具体应用办法请参考:[如何动静结构]
https://liteflow.yomahub.com/…
组件级别的规定参数设置
之前 LiteFlow 在规定层面是没法给组件设置额定的参数的。
参数只有 request 层面的参数,由 FlowExecutor 调用的时候传入。大多数状况,reqeust 传入的参数就曾经够用了。
然而当雷同组件进行编排时,可能要在不同的地位设置不同的组件级参数,就没方法做到了。
这次 v2.9.0 版本带来了这一个性的反对,新增了 data
关键词,你能够这样应用:
<chain name="chain1">
cmpData = '{"name":"jack","age":27,"birth":"1995-10-01"}';
THEN(
a,
b.data(cmpData),
c
);
</chain>
对于组件参数的应用具体请参考:组件参数
https://liteflow.yomahub.com/…
抉择组件反对标签抉择
LiteFlow 以前的版本对于抉择组件返回参数的定义是:只能返回可执行项的 id,比方:
<chain name="chain1">
SWITCH(s).to(a, b);
</chain>
s 组件,要么返回 a,要么返回 b,要么返回空,除此之外的任何其余返回都会报错提醒。
v2.9.0 当初反对对 tag 的抉择了,你能够如下定义 tag:
<chain name="chain1">
SWITCH(s).to(a.tag("cat"), b.tag("dog"));
</chain>
那么要抉择到 b 组件,除了能够返回 ”b”,还能够写返回:”tag:dog”。
对于抉择反对标签写法的应用具体请参考:[抉择组件]
https://liteflow.yomahub.com/…
去除了旧表达式的反对
LiteFlow 在 v2.6.X 和 v2.7.X 阶段是用标签表达式来编排的。
在 v2.8.X 版本全面转向了 EL 表达式,然而也是反对标签表达式的。算是一个兼容的版本。所以你会看到 EL 表达式的规定文件会要求用 el.xml
这种模式来定义。
然而在 v2.9.0 中,咱们移除了标签表达式的反对。当前将只会反对全新的 EL 表达式。
所以从 v2.9.0 开始不再有文件扩展名的束缚,你定义成 *.xml
还是 *.el.xml
都会反对。
为了兼容大家的文档浏览体验,防止造成了解上的错乱,文档中的示例还是保留了 *.el.xml
这种模式。这点大家留神下。
LiteFlowX IDEA 插件更新
反对了 FOR,WHILE,DO,BREAK 等关键字
带来了全新的图标 UI,并对不同的组件做了不同的图标 UI 辨别
对办法级申明作了反对