前言
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辨别
对办法级申明作了反对