规则引擎 LiteFlow 发布 v2.12.1 版本,有多猛用过才知道


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

LiteFlow是Gitee的高star项目,截止到发此文章的时候,Gitee star接近6k大关,Github则拥有2.6Kstar。

同时LiteFlow也是国内优秀的社区驱动型开源项目,开源3年多,目前已经被各大一线公司应用在核心系统上,据不完全统计,国内将近千余家公司都在使用。特性以及支持度都非常好。社区人数超过5000人。测试用例将近1800个,质量有保障。

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

项目官网:https://liteflow.cc

以下文章LiteFlow简称为LF。

前言

LF上一次大版本更新是在4月中旬,发布了v2.12.0。推出了版本特性决策路由。

这一次,我们正式发布v2.12.1,推出2个大特性,2个大增强。

希望LF能帮助到更多的开发者,无论你是使用它还是用来学习。我们拥有庞大的社区,近3年多不间断的迭代,已经让LF变成了一款功能完备,生产级别的优秀国产规则引擎框架。

组件注入型参数特性

现在组件的process方法上也可以接受参数了(这个功能仅限于声明式组件),这些个参数通过@LiteflowFact标注,能够自动注入上下文里的数据。

@LiteflowComponent
public class CmpConfig {

    @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeType = NodeTypeEnum.COMMON, nodeId = "a")
    public void processA(NodeComponent bindCmp,
                        @LiteflowFact("user.name") String name,
                        @LiteflowFact("data1") String data1) {
        //do biz
    }
}

这样做的好处是,如果你拥有很多组件,可以省去每个组件每次要去取到上下文然后再去取数据这一套繁琐的过程。

并且@LiteflowFact是支持在上下文里进行自动搜索的,无论你有多少个上下文,利用这一特性,无需关心具体上下文,只需要定义你想获取的数据即可。并且这个特性是支持通过简单的点操作符去获取对象深层次的属性的。

关于这个特性具体请参照官网文档数据上下文->上下文参数注入这一章。

支持Kotlin脚本语言

其实LF在脚本语言方面支持的种类绝对是规则引擎里最多的,没有之一。

这次我们又支持了Kotlin语言,目前总共支持8种脚本语言,你现在可以利用Kotlin语法定义你的业务了。

<node id="s1" type="script" language="kotlin">
    import com.yomahub.liteflow.slot.DefaultContext

    fun sum(a: Int, b: Int) = a + b
    var a = 2
    var b = 3
    // 从 bindings 中获取上下文
    val defaultContext = bindings["defaultContext"] as DefaultContext
    defaultContext.setData("s1", sum(a, b))
    println("Hello Kotlin!")
</node>

和其他脚本语言一样,kotlin也可以和java进行互通,甚至于可以引入spring的bean进行rpc调用也是可以的。这本质上是LF的底层机制比较完善,和用什么脚本语言无关的。

关于这个特性具体请参照官网文档脚本组件->脚本语言种类->Kotlin脚本引擎

决策路由增加Namespace

LF在v2.12.0中推出了决策路由特性,但是社区里很多使用了这一特性的同学反映决策路由是全局匹配,如果决策路由一多会影响其性能。虽然我实测下来并不会影响太多。但是决策路由是得有组的概念,在新版本中我们给其增加了一个命名空间的概念。可以在执行的时候指定其命名空间。

<chain name="r_chain1" namespace="n1">
  <route>
    r1
  </route>
  <body>
    THEN(b,a);
  </body>
</chain>

<chain name="r_chain2" namespace="n1">
  <route>
    OR(r1,r2)
  </route>
  <body>
    THEN(a,b);
  </body>
</chain>

关于这个特性具体请参照官网文档决策路由->决策路由用法

数据库支持决策路由特性

新版本在数据库插件中支持决策路由特性了。如果你配置相应的字段,并在数据库赋值,即可开启决策路由特性的使用。并且决策路由本身也是可以被热更新的哦。

当然对以前的使用方式也是完全无缝兼容的。

完整更新列表

特性 #I9K14C 为process方法提供注入型参数特性

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

特性 #I9H6GN 支持kotlin脚本语言

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

特性 #I9PVQ7 决策路由中增加namespace,可以执行指定命名空间的决策路由

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

特性 #I9RPBK 数据库插件支持决策路由特性

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

修复 #I9JDY1 绝对路径模糊匹配,没对windows的路径做支持

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

修复 #I9N5K8 在自定义组件后,通过getCmpData 获取data的实体对象,data字段与实体类不匹配是会抛异常

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

相關推薦

2024-07-27

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

2023-11-03

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

2023-03-24

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

2023-07-25

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

2023-06-27

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

2023-04-12

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

2023-10-17

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

2022-12-14

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

2024-10-16

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

2023-02-11

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

2023-09-05

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

2022-11-30

周知的事实,问题是比例有多大,作为最大最流行的搜索引擎,Google 给出了它的答案。 当然,大家更想知道 Google 如何定义“重复内容”。是 100% 完全相同的重复?还是标题不同但实际内容一致的重复,比如社交网络中的转载

2023-03-22

设添砖加瓦,功在当代利在千秋! 🚀 增加了内置告警规则 同理,也内置了各类组件的告警规则,极大的增加了便利性。当然了,我们也非全能,期待社区小伙伴一起共建共创,把内置告警规则也搞的多多的,如果不知道如

2024-09-28

ty: 1000 threadNamePrefix: test2   新增规则引擎框架 Liteflow 线程池适配模块 https://github.com/dromara/dynamic-tp/issues/474   引入以下依赖即可 <dependency> <groupId>org.dromara.dynamictp</groupId> <artifactId>dyna