LiteFlow 大版本更新,国产超好用的规则引擎,荣耀征途,才刚刚启航

2,871 阅读5分钟

cover.png

LiteFlow介绍

LiteFlow是一个开源编排式规则引擎,能够让你的系统逻辑任意编排,可选用脚本书写逻辑,支持多达5种脚本语言,支持丰富的第三方存储的支持,所有的逻辑和规则均可热变更。设计系统和重构系统的神器。

LiteFlow是国内优秀的社区驱动型开源项目,开源2年多,目前已经被各大公司应用在核心系统上。特性以及支持度都非常好。

如果你是第一次知道这个项目,可以去官网或相关的主页进行了解:

项目官网:

liteflow.yomahub.com

gitee托管仓库:

gitee.com/dromara/lit…

github托管仓库:

github.com/dromara/lit…

v2.10.0介绍

距离上一个版本2.9.7已经有一个月的时间了。这次我们带来了大版本升级:LiteFlow v2.10.0。

这期间其实没一直在忙LiteFlow,中间断断续续的在做。

本来想把这个版本定为2.9.8的,但是从新增的特性来说,的确是进步非常大的一个版本。所以我们索性把这个版本定位成了大版本升级。不过请放心,2.10.0是完全向下兼容2.9.X的。使用者可以放心升级。

这次LiteFlow v2.10.0带来非常多的特性,甚至于为了这个版本,我们把内核部分最重要的一块进行了结构化的整改。使得代码的复用度更加高了,逻辑更加清晰了。

支持springboot3.X

之前在社区里有很多小伙伴一直在问,为什么LiteFlow在springboot3下启动老是报错,我只能说还不支持。

考虑到springboot3+jdk17确实是未来的方向,这次经过群友贡献,LiteFlow v2.10.0版本终于支持springboot3了!

在支持springboot3的前提下,LiteFlow的依赖方式和使用方式不会有任何改变。

多种不同语言脚本混合调用的特性

LiteFlow在之前的版本中早已经支持了脚本语言的调用,目前支持了5种脚本语言:groovy,javascript,qlexpress,python,lua。

但是之前的版本同一个项目中只能5选1,你只能使用一种脚本语言。

虽然我一直觉得在同一个项目中使用多种脚本语言是个伪需求,但是的确在社区里有超过5个人和我说了这个事情。我开始意识到也许真有人想做这样的事情,以满足多人分别使用擅长的脚本语言去共同开发一个项目。

所以在新版本中,LiteFlow打破了这个限制。现在你可以定义多种不同语言的脚本,并且可以实现混合编排,参数互通。是不是很棒呢。

增加CATCH表达式

我原先觉得LiteFlow的EL表达式已经可以满足于大部分的场景了,无需再添加了。直到我做公司的项目的时候用自己的作品时,发现有些特殊的场景的确需要在表达式声明层面进行捕获异常。于是乎我就加了这个表达式。

同时这个表达式也能够起到continue的作用。也弥补了在循环中没有continue关键字的遗漏。

文件监听

LiteFlow的规则可以存储于任何地方,我们支持了各种数据库以及市面上流行的全部注册中心。大部分的外置存储我们都做到了改变即自动热刷新规则的特点。

但是我们忽略了最常见的存储方式:本地文件。在以前的版本中,本地规则文件改变,无法做到自动刷新。必须手动调用api刷新,或者重启应用。

在新版本中,我们增加了对本地文件的监听特性。真正做到了:改变自动刷新规则。让LiteFlow规则文件的存储方式选择上,又多了一种灵活的方式。

其余更新点

新版本还增加了对脚本中引用上下文名称的自定义化,修复了社区里提的一部分Bug,重构了底层了一部分代码。

同时,我们测试用例增加到了913个。相应的IDEA插件也进行了更新,这两天应该就能审核好。大家就可以在idea插件市场进行更新了。

完整更新列表

特性 #I6NRKH LiteFlow支持springboot 3.0

https://gitee.com/dromara/liteFlow/issues/I6NRKH

特性 #I6NGM3 LiteFlow支持多种不同语言脚本混合调用的特性

https://gitee.com/dromara/liteFlow/issues/I6NGM3

特性 #I6MPYF 增加CATCH语法表达式

https://gitee.com/dromara/liteFlow/issues/I6MPYF

特性 #I6BDLN 是否能绝对路径的目录位置及其所有子目录下规则配置文件的侦听

https://gitee.com/dromara/liteFlow/issues/I6BDLN

特性 #I69M1M 对上下文在脚本中的引用,支持自定义名称

https://gitee.com/dromara/liteFlow/issues/I69M1M

增强 #I6LWYM 深层次优化Condition维度的代码

https://gitee.com/dromara/liteFlow/issues/I6LWYM

修复 #I6G0D5 NodeIfComponent 重写 isAccess 导致空指针报错

https://gitee.com/dromara/liteFlow/issues/I6G0D5

修复 #I6JF0K 迭代&循环组件在SWITCH语境中无法获取迭代对象和下标的问题

https://gitee.com/dromara/liteFlow/issues/I6JF0K

修复 #I6L8YB 对于脚本名称存在<符号在执行脚本时异常

https://gitee.com/dromara/liteFlow/issues/I6L8YB

支持和赞助LiteFlow

开源一个项目并坚持2年并不容易,所以我也需要一点赞助来给自己充能,如果各位对LiteFlow这个项目有信心并且愿意支持我的的话,可以在官网首先点击给LiteFlow发电按钮。

但不管你是否选择赞助,我仍然会在社区里尽可能的解决你们的问题。

如何加群

LiteFlow的社区群已经有大约2500人以上了。你有任何问题,都可以在群里问。

关于加群的方式,请参考:liteflow.yomahub.com/pages/73c2c…

其他要说的

前几天有个群友问我,LiteFlow已经一个月没发版了,是不是作者你已经弃坑了。

怎么可能,我迭代维护了2年多,LiteFlow现在正被越来越多的人知道,被越来越多的公司选用作为后端核心框架。而且LiteFlow底层的代码越来越优雅和灵活。

我在憋大招呢。正如官网项目介绍所说:我会长期坚持去完善这个项目,希望可以把LiteFlow带入国内顶尖开源项目的行列。

而现在,我们扬起帆,才刚刚启航,期待着这次荣耀之旅。