LiteFlow v2.13.1 正式发布,新特性来袭!


前言

新的版本v2.13.1发布啦!

上次发布是2月底,到现在也差不多有一个多月了。这一个月我非常忙碌,闲暇之余,根据社区的反馈修复了大量的2.13.0遗留的问题。

这个版本总共更新了10个Issue。完全兼容v2.13.0版本,可以放心升级。

在这个版本中,新推出的特性就一个,即"表达式取参&设值",这个特性非常之实用,可以完全解决组件和上下文的耦合问题。

下面就来说说这个新特性。

表达式取参&设值

在LiteFlow的设计理念中,组件之所以能随意编排,其核心思想就两个:

1)组件的结构统一,消除了代码片段之间的强依赖

2)把组件和组件之间的逻辑依赖转化为了组件对数据的依赖,而数据则存储在上下文中。

但是很多社区同学在复杂场景使用的时候,则往往会碰到一个问题,想设计一个公用组件供所有链路使用,每个链路有单独的上下文结构。这时候问题来了,这个公用组件到底该引用哪个上下文呢。貌似无论引用哪个上下文,都使这个公用组件有了一定的耦合性。不再那么通用。

之前我在设计LiteFlow上下文的时候,也考虑过这个问题。之前我的推荐是用上下文继承来解决,公用组件用BaseContext,其他业务所用的上下文都继承这个BaseContext,这样公用组件只和BaseContext这一个进行耦合。这样一定程度上可以解决问题。

但是这个方式需要开发者需要很高的抽象能力,而有些实际业务场景,没那么好抽象。所以LiteFlow后来推出了多上下文功能,上下文之间不用继承,单独给公用组件分配一个上下文。进行调用的时候每次都带有这个公用上下文。

这样的好处是上下文物理隔绝,但缺点是,如果业务复杂,公用组件很多,每次调用的时候需要传入很多上下文。

再后来LiteFlow推出了上下文参数注入这个功能,其核心也是利用表达式来取参。但是这个功能有两点限制,第一是只能在声明式组件中使用,第二则是表达式只能用来取参。设值还得取到上下文。

所以很多人实际用这个特性,都是直接注入上下文。等于说这个特性并没有解耦组件和上下文,只是让开发者省了每次取上下文那一句代码。

所以我一直在想,有没有更加简单,通用 ,无脑的方式来达成这一目的。

所以在吸取了之前所有设计的优缺点后,这次的方案应该是一个终极设计方案了。它具有以下优点:

1.利用表达式可以取参,也可以设值,全程不涉及任何上下文对象

2.可以单层获取,也可以深层获取,完全靠表达式

3.完全不用关心从哪个上下文取,会自动匹配

4.表达式语法也极其简单,但是可以变化出非常多的组合

自此,组件和上下文可以完全解耦。真正做到,组件之中无一是上下文,组件之中无一又不是上下文。

具体怎么用,发版公告中不介绍,因为的确篇幅会比较长。可以阅读官网文档中 上下文->用表达式获取上下文参数这一章来获得使用方法。

完整更新列表

特性 #IBW9PC 上下文表达式搜索&设置,摆脱对上下文的依赖

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

增强 #IBWDSA bind关键字机制增强

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

增强 #IBXBVS 给每个chain的运行加入一个runtimeId属性

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

增强 #IBW9UT 升级liquor到1.4.0,获取了更好的性能提升

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

修复 #IBVGGT 13版本groovy脚本中使用_meta.cmp.setIsEnd(true)结束流程不生效

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

修复 #IBV4NA 13版本parse-mode: PARSE_ONE_ON_FIRST_EXEC和SQL轮询查询刷新数据库一起使用不刷新

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

修复 #IBUZEP 2.13.0中刷新FOR(数字)的循环时无法刷新

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

修复 #IBTZIX bind关键字无法反序列化LocalDate类型

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

修复 #IBQVO1 pg数据库启动报错问题,存在反引号

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

修复 #IBMPPW 组件参数中含字符单英文引号"'"时,在构建EL时会解析失败

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

相關推薦

2022-12-14

前言 LiteFlow v2.9.5版本今天正式发布!带来了3个横向扩展特性和诸多增强。 LiteFlow是一个开源编排式规则引擎,能够让你的系统逻辑任意编排,可选用脚本书写逻辑,支持多达5种脚本语言,支持丰富的第三方存储的支持,所

2023-10-17

的前两天),相约开源PHP办公室,我们一起聊 AI!>>> LiteFlow介绍 LiteFlow是一个开源编排式规则引擎,能够让你的系统逻辑任意编排,可选用脚本书写逻辑,支持多达6种脚本语言,支持丰富的第三方存储的支持,所有的逻辑和

2023-09-05

前言 LiteFlow在这一年中的迅速发展大家是有目共睹的,Gitee托管仓库一年猛增3000+ Star,社区人数也从500人迅速扩展到了3000多人。有越来越多的公司的开发部门开始以LiteFlow作为选型来构建自己的业务系统。 喜忧参半,喜的是L

2024-06-05

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

2023-02-11

v2.9.7介绍 2.9.7是LiteFlow 2023年的第一个版本。很抱歉这个版本来的晚了一点。 2.9.7提供了1个特性,5个增强,4个Bug修复,1个开源集成特性,总计11个issue的更新。 其中版本特性为迭代器组件,弥补了循环组件之前的不足。 迭

2023-03-24

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

2024-10-16

前言 LiteFlow的最新版本2.12.4发布了! 在这个版本里,我们带来了2个大特性和诸多的升级。同时这个版本也是向下兼容2.12.X系列的版本的。 JavaX脚本 LF从很早就开始支持Java脚本,让java代码可以像一种脚本语言那样运作,使用j

2023-04-16

今天sms4j迎来了第一个大版本更新,2.0.0版本正式发布! 本次的发布不仅仅项目结构发生了调整和变化,同时还伴随着诸多新的厂商和功能,下面我们来一起简单的看一下吧! 首先是maven的变化 老版本中,groupId为作者的个人

2023-06-27

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

2023-11-03

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

2023-04-12

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

2024-07-27

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

2023-07-25

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

2023-06-16

更新日志 重点说明: 由于 SpringCloudAlibaba 一直未发布正式版 导致系统底层组件可能存在些许问题 故而不建议生产使用 框架也将直接开启后续 2.1.0 的开发工作 重大更新 [不兼容升级] java 版本从 jdk 8 升级到 jdk 17 且需要使用