LiteFlow LiteFlow
💒首页
  • v2.15.0(当前版本)
  • What's New

    • 🌈What' s New In LiteFlow v2.15.0?
  • 历史版本

    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩IDEA插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
💒首页
  • v2.15.0(当前版本)
  • What's New

    • 🌈What' s New In LiteFlow v2.15.0?
  • 历史版本

    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩IDEA插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)
  • 🌈What's New In LiteFlow v2.15.0?
    • 概述
    • 平滑支持JDK8~JDK25的所有版本
    • 全面支持JDK21以及以上版本的虚拟线程特性
    • 支持直接执行EL规则
    • 活跃规则保活策略
    • 隐式子流程的改版
    • 完整更新列表
  • 🌈What's New In LiteFlow v2.13.2?
  • What's New In LiteFlow v2.13.1?
  • What's New In LiteFlow v2.13.0?
  • What's New In LiteFlow v2.12.4?
  • What's New In LiteFlow v2.12.3?
  • What's New In LiteFlow v2.12.2?
  • What's New In LiteFlow v2.12.1?
  • What's New In LiteFlow v2.12.0?
  • What's New In LiteFlow v2.11.4?
  • What's New In LiteFlow v2.11.3?
  • What's New In LiteFlow v2.11.2?
  • What's New In LiteFlow v2.11.0?
  • What's New In LiteFlow v2.10.6?
  • What's New In LiteFlow v2.10.5?
  • What's New In LiteFlow v2.10.2?
  • What's New In LiteFlow v2.10.1?
  • What's New In LiteFlow v2.10.0?
  • What's New In LiteFlow v2.9.7?
  • What's New In LiteFlow v2.9.6?
  • What's New In LiteFlow v2.9.5?
  • What's New In LiteFlow v2.9.4?
  • What's New In LiteFlow v2.9.3?
  • What's New In LiteFlow v2.9.1?
  • What's New In LiteFlow v2.9.0?
  • whats new
铂赛东
2025-08-28
目录

🌈What's New In LiteFlow v2.15.0?

# 概述

距离上一次发版差不多有快4个月了。这几个月来断断续续的迭代终于带来了全新的2.15.0版本。这个版本一共带来了4个特性,7个增强,7个修复。总共18个issue的更新。

如果要问为什么从2.13.2直接就到2.15.0了。那其实也没啥特别的原因,可能是因为风水问题吧。

言归正传,如果你正在使用2.13.X,应该在99%的场景下是能无缝兼容的。具体那1%是哪个场景,下面会讲。

# 平滑支持JDK8~JDK25的所有版本

之前LiteFlow支持了JDK8~JDK17,但是在JDK9以上版本中,是需要额外加入jvm参数的。究其原因就是LF的底层用了一些对sun包下的反射调用,而sun包本身却又是强封装类型的。所以必须要参数来解除这一限制。也许有的社区同学没加参数也能运行起来,那是因为没用到相关的特性。

这次我们替换了一些底层方法的调用实现方式,使得现在在任意版本中使用LiteFlow,都无需再加任何jvm参数了

# 全面支持JDK21以及以上版本的虚拟线程特性

虚拟线程是JDK21中最重要,最大的特性。虚拟线程的调度开销仅仅为平台线程的千分之一,对于高IO的应用来说,虚拟线程可以提升非常多的性能。社区里之前有非常多的小伙伴在询问LF是否支持JDK21,是否支持虚拟线程。现在,全部都已经实现了。

当LF运行在JDK21及以上时,LF中的所有异步线程均会自动的切换到虚拟线程。如果是JDK21以下版本时,那就是普通的平台线程。

并且,不管你是何种版本的JDK,引入的依赖都是同一套,不区分对应的JDK版本。

# 支持直接执行EL规则

对于执行一些简单的规则,有很多小伙伴反馈去xml里定义一个chain太过于繁琐,而用动态构建,每次都去构建,又太耗性能,而且用完还是自己清理chain。

所以这次,LF推出一个直接执行EL规则的能力。

LiteflowResponse response = flowExecutor.execute2RespWithEL("THEN(a, b, c)", requestData, CustomContext.class);

你现在可以直接执行一个规则EL,不用去创建chain了。而且你不用担心每次都去编译构建会耗性能,在新的体系里,如果每个请求都执行相同的EL,只会在第一次时构建1次。

# 活跃规则保活策略

这个特性对系统中有大量规则的场景非常有用,这里的大量规则是指有上万条规则。能有效避免堆内存的持续扩大。

这个策略会在过多的规则下只维持前N条最活跃的规则缓存,而不活跃的规则会被暂时的从系统中卸载掉。被卸载掉的规则,再次被调用时的第一次会重新编译加入活跃的队列。

整个策略使用者无感,默认这个策略的开关在框架中是关闭的,这个策略的打开方式为:

# 是否开启保活策略
liteflow.chain-cache.enabled=true
# 保持活跃chain的数目,默认为10000
liteflow.chain-cache.capacity=10000
# 模式一定得为PARSE_ONE_ON_FIRST_EXEC
liteflow.parse-mode=PARSE_ONE_ON_FIRST_EXEC

# 隐式子流程的改版

隐式子流程这个特性,在LF中是一个非常糟糕的设计。

为了兼容隐式子流程特性,原先的很多特性都在为隐式子流程做妥协。这造就了一些硬代码判断,每次看到这些糟糕的代码时都如鲠在喉。所以我们一度想把这个功能给移除掉,反正作为替代方案,使用者完全可以在组件内另外调起一条流程来实现。

事实上我们也这么做了。但是在移除掉这个特性之后,发现可能使用到隐式子流程的人会非常抓狂,因为毕竟要改一些代码才能用替代方案。所以后面我们专门对隐式子流程做了改版,在保留原先调用方式的基础上,我们更换了底层实现方式。

可能使用到隐式子流程的人,只需要在取请求参数的地方改一下方法名应该就可以了。原先是getSubRequestData,现在统一变成了getDataRequest。

# 完整更新列表

特性 #ICUMKV 全面支持jdk21,以及支持jdk21中的虚拟线程

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

特性 #IBQCWB Liteflow的执行器FlowExecutor支持执行EL表达式,而不需要传入chainId

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

特性 #IAY66T 建立一种机制保证在过多的规则下只维持前N条最活跃的规则缓存

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

特性 #ICM6TX WHEN 并行编排增加关键字实现完成任务达到百分比阈值时方可放行

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

增强 #ICO3IK 在switch节点中,希望能拿到target的列表信息

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

增强 #ICUEG9 JDK支持度更加平滑

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

增强 #ICANTH 隐式子流程改版

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

增强 #IC9GTV 脚本ScriptValidator新增返回ValidationResp的API

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

增强 #ICGGAW redis数据源支持集群模式

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

增强 #ICR1PL AND关键字的逻辑和语意明确点

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

增强 #ICU7Z4 升级liteflow的一些依赖

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

修复 #ICPDU7 Slot的conditionStack在多线程并发时无法保证Condition的弹栈压栈顺序

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

修复 #ICO23A Spring设置BeanFactory的cacheBeanMetadata属性为false时,Liteflow项目无法注册声明式组件,后续解析EL失败,项目无法启动

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

修复 #ICJGIK PARSE_ONE_ON_FIRST_EXEC 模式下 Node 对象执行 Java 脚本 最终 instance.isEnd() 判断空指针问题

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

修复 #IC9ZZ8 reids poll模式代码问题

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

修复 #IC8UPJ 规则EL校验在liteflow.parse-mode=PARSE_ONE_ON_FIRST_EXEC时失效

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

修复 #IC71HA 在线程1的执行过程中线程2去remove chain导致的线程1无法平滑继续执行的bug

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

修复 #IC2F4F 模糊文件路径的监听,添加新的规则文件没有自动加载

https://gitee.com/dromara/liteFlow/issues/IC2F4F
帮助我们改善此文档 (opens new window)
上次更新: 2025/08/28, 22:41:24
🌈What's New In LiteFlow v2.13.2?

🌈What's New In LiteFlow v2.13.2?→

Theme by Vdoing | Copyright © 2020-2025 铂赛东 | MIT License
沪ICP备18012955号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式