LiteFlow v2.10.6 发布!一款社区驱动型优秀的规则引擎框架
LiteFlow介绍
LiteFlow是一个开源编排式规则引擎,能够让你的系统逻辑任意编排,可选用脚本书写逻辑,支持多达6种脚本语言,支持丰富的第三方存储的支持,所有的逻辑和规则均可热变更。设计系统和重构系统的神器。
LiteFlow也是Gitee的高star项目,过去一年来保持了非常快的增长趋势。
同时LiteFlow也是国内优秀的社区驱动型开源项目,开源将近3年,目前已经被各大公司应用在核心系统上。特性以及支持度都非常好。社区人数超过3000人。
如果你是第一次知道这个项目,可以去官网或相关的主页进行了解:
项目官网:
gitee托管仓库:
https://gitee.com/dromara/liteFlow
github托管仓库:
前言
v2.10.6版本是一个进行诸多增强的版本。总计有11个issue的增强,3个issue的修复。
全面支持JDK17
其实LiteFlow在2.10.0的时候,已经支持了JDK17。但是项目并未对JDK17进行完整的测试。导致很多小伙伴实际在JDK17环境中跑起来,出现了一些问题。
这是由于LiteFlow的900多个测试用例全部都是针对于JDK8来跑的。并未在JDK17下进行完整的测试。
而2.10.6这个版本,我们系统的针对JDK17进行了完整的测试。通过了全部的测试用例。所以大家可以放心的使用。
当然,LiteFlow也是支持Springboot3的。
有的同学可能会问,JDK20支持不支持?其实连作者自己也不知道是否支持JDK20,因为没有进行系统的测试过。这版本太新了。
支持SQL插件使用自己定义的数据源
LiteFlow支持将EL表达式,脚本存放在所有的关系型数据库中。但是之前的版本,LiteFlow有自己的一套数据库连接配置,这就导致了往往使用者同一套数据库配置要配置2遍,还有一些使用者在实际的环境中,可能数据源是加密的,或者数据源是从外部获取的。这就没法使用LiteFlow提供的数据源配置了。
所以,这次我们支持了让SQL插件能够使用项目内的数据源来获取数据。更加优雅和方便。
甚至于我们还考虑到了多数据源的场景,让LiteFlow能够智能的挑选正确的数据源。
LiteFlow的测试用例全面转向Junit5
这也许和使用者没啥太大关系。
LiteFlow这个框架功能点非常多,使用人数也非常庞大。所以每一次发版,我都需要补很多测试用例。测试用例是LiteFlow整个框架质量的命脉。甚至于测试用例成为了和核心代码一样重要的存在。所以LiteFlow目前有将近1000个测试用例。
在2.10.6版本的源代码中,所有的测试用例从原先的Junit4全部转向了Junit5。更加稳定。更加有保障。
对脚本和Java的联动进行加强
主要加强点在@ScriptBean
这个注解,这个是脚本和Java联动的关键注解,在社区群里,有同学报出这个注解有时无法正常的工作,导致脚本拿不到Java的对象。对这个问题,我进行了深入研究。在2.10.6版本中,对这个注解进行了很多的优化,应该能彻底解决之前的问题。
对声明式组件增加了组件名称的设定
在2.10.6版本中,声明式组件支持了声明nodeName
这个属性了。
错误事件通知的改造
原先错误事件回调通知是这样定义的:
public void onError() throws Exception;
这样定义导致有些同学不知道如何取Exception
,为了使api更加友好,这次这个回调方法改成了如下形式:
public void onError(Exception e) throws Exception;
全局拦截器的改造
原先全局拦截器的定义如下:
@Component public class CmpAspect implements ICmpAroundAspect { @Override public void beforeProcess(String nodeId, Slot slot) { YourContextBean context = slot.getContextBean(YourContextBean.class); //before business } @Override public void afterProcess(String nodeId, Slot slot) { YourContextBean context = slot.getContextBean(YourContextBean.class); //after business } }
这种方式无法直观的拿到很多信息,为了api更加友好,这次我们改造了这个接口的实现参数:
@Component public class CmpAspect implements ICmpAroundAspect { @Override public void beforeProcess(NodeComponent cmp) { YourContextBean context = cmp.getContextBean(YourContextBean.class); //before business } @Override public void afterProcess(NodeComponent cmp) { YourContextBean context = cmp.getContextBean(YourContextBean.class); //after business } }
布尔表达式中OR
的短路判断
在社区中有同学反应,如果有以下EL语句:
IF(OR(a,b,c), x);
如果a返回true,那其实b和c应该不用执行,而事实情况是LiteFlow把a,b,c都执行了。
所以这次我们也收到了贡献者的PR,把这个问题给优化了。
同一个组件复用时Step的记录问题
LiteflowResponse
的step可以用来回溯整个链路的实际执行情况。但是在相同组件复用的情况下,这个step的记录在之前版本中有些问题。此次我们也修复了这个问题。
日志方面的增强
在2.10.6版本中,系统默认会以info级别打出所有的节点的耗时信息。
如果觉得日志太多的话,可以通过设置liteflow.print-execution-log=false
来进行关闭整个LiteFlow框架的系统日志。
完整更新列表
增强 #I7KR2F 测试用例全面更新为junit5 https://gitee.com/dromara/liteFlow/issues/I7KR2F 增强 #I7J59V java17下进行完整的测试用例测试 https://gitee.com/dromara/liteFlow/issues/I7J59V 增强 #I7KZCZ 希望可以使用配置文件中已经配置的数据源 https://gitee.com/dromara/liteFlow/issues/I7KZCZ 增强 #I7KY2N 非操作符的短路控制优化 https://gitee.com/dromara/liteFlow/issues/I7KY2N 增强 #I7HPAN onError方法增加Exception入参 https://gitee.com/dromara/liteFlow/issues/I7HPAN 增强 #I7KOPV 声明组件增加nodeName的定义 https://gitee.com/dromara/liteFlow/issues/I7KOPV 增强 #I7KHE5 关于注解声明式使用场景LiteFlowMethodEnum增加getDisplayName https://gitee.com/dromara/liteFlow/issues/I7KHE5 增强 #I7K3T1 自带AOP拦截需要增强获取tag等信息 https://gitee.com/dromara/liteFlow/issues/I7K3T1 增强 #I7JZ4D 希望框架有与或非表达式的相关日志 https://gitee.com/dromara/liteFlow/issues/I7JZ4D 增强 #I7J1VJ 希望针对节点执行耗时的打印日志支持控制 https://gitee.com/dromara/liteFlow/issues/I7J1VJ 增强 #I7LGZR 忘记填写 chainName 的错误提示 https://gitee.com/dromara/liteFlow/issues/I7LGZR 修复 #I7L5DX 2.10.5版本中ScriptBean注解注入bean失败 https://gitee.com/dromara/liteFlow/issues/I7L5DX 修复 #I7HTR4 同一组件不同tag,取step时候存在问题 https://gitee.com/dromara/liteFlow/issues/I7HTR4 修复 #I7GMTS 本地文件监听异常会导致监听线程停止 https://gitee.com/dromara/liteFlow/issues/I7GMTS
LiteFlow发展路线
有可能2.10.6版本是2.10.X系列的最后一个版本了。
接下去就是v2.11.0了,v2.11.0会带来超多的新增特性。v2.11.X系列的主旋律将围绕着元数据增强进行展开。也为后续的管理平台系列打下一个基础。
回答个大家最想问的问题,问题省略,答案如下:2.11.0版本没有UI,UI没有那么快。计划今年推出,需要开发的。作者也有工作,需要投入大量业余时间的。但是既然我上次已经调查过了,自然会用心去做这个规划。
支持和赞助LiteFlow
开源一个项目并坚持2年并不容易,如果各位对LiteFlow这个项目有信心并且愿意支持的话,可以在官网首先点击***给LiteFlow发电*
**按钮。
但不管你是否选择赞助,我仍然会在社区里尽可能的解决你们的问题。
社区里的问题太多,如果没回答上,请多艾特我几遍。
如何加群
LiteFlow的社区群已经有大约3000人以上了。你有任何问题,都可以在群里问。
关于加群的方式,请参考:https://liteflow.yomahub.com/pages/73c2c3/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JeeSite 平台 Spring Boot 3 体验版发布,一个 Java 快速开发平台
引言 是时候为 Spring Boot 3 做准备了,2018年2月 Spring Boot 进入 2.0 时代,距今已经 5 年了。2022 年 11 月 Spring Boot 3.0 正式发布,它将基于 Spring Framework 6.0,并且需要 Java 17 版本,同时它也将是 Jakarta EE 9 的第一个 Spring Boot 版本。如今 Spring Boot 3.1 已经发布,也带来了非常好的新特性,同时也支持了 Java 20。 为跟近技术时代,周边生态依赖库大部分也对 Spring Boot 3 做了相应支持,所以JeeSite 是时候发布Spring Boot 3 版本了。 同时 JeeSite 对 Spring Boot 2 的版本将持续更新,请大家放心使用。 技术栈 JDK 17+ Servlet 5.0+ Jakarta 6.0.0 Spring Boot 3.1.1 Apache Shiro 2.0.0 Spring Cloud 2022.0.3 Spring Cloud Alibaba 2022.0.0 Spring Framework ...
- 下一篇
Mageia 9 RC1 发布,Mandriva Linux 发行版的社区分支
Mageia 9 首个 RC 已发布。公告写道,自 2023 年 5 月发布 beta 2 以来,Mageia 团队一直致力于解决许多顽固问题并提供安全修复和新特性。 新版本的控制中心添加了用于删除旧内核的新功能,该功能在 Mageia 9 中默认自动启用,用户也可以手动配置以关闭或启用。此外,Mageia 9 将桌面环境 Plasma 更新到 5.25,以及升级 systemd 后,启动时间也有所改进。 Mageia 9 提供和 Mageia 8 相同介质的 ISO 镜像,适用于 32 位和 64 位系统。其中包括 64 位 live 镜像的 Plasma, GNOME 和 Xfce 桌面环境,以及 32 位 live 镜像的 Xfce 桌面环境。 其他更新亮点包括减少磁盘占用空间和最小安装(禁用推荐安装的软件包)的大小,据称这是自Mageia 4 以来最小的版本。此外 RPM 数据库已迁移到现代的 SQLite,不再使用已放弃维护的 Berkeley DB。 详情查看 Release Notes。 部分重要软件更新: Kernel – 6.4.3 glib – 2.36 gcc –...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19