轻量级规则引擎技术选型深度评测:LiteFlow、EasyRules、JVS-Logic 对比分析

摘要

在业务逻辑频繁变动的企业系统中,轻量级规则引擎(或称逻辑引擎)能有效解耦业务代码与规则配置,实现热部署与业务自维护。本文选取三款Java生态中主流的轻量级规则引擎------LiteFlow、EasyRules、JVS-Logic,从架构设计、规则定义方式、性能表现、可扩展性、学习曲线等维度进行深度对比。所有测试基于相同硬件环境(4核8G,OpenJDK 17)与标准测试用例,数据可复现。

1. 评测对象与版本

引擎 当前版本 开源协议 核心特点
LiteFlow 2.12.1 Apache 2.0 组件化编排,支持并行/子流程/脚本
EasyRules 4.1.0 MIT 极简注解式API,无外部依赖
JVS-Logic 2.1.0 提供源码,商用需授权 可视化流程编排,与低代码生态集成

2. 架构设计与规则定义方式

2.1 LiteFlow

LiteFlow的核心抽象是NodeComponent,通过XML或Java DSL定义组件链,支持串行、并行、条件分支、循环等。规则与逻辑硬编码在Java组件中,适合开发人员主导的场景。

组件定义示例

复制代码
java

@Component("priceCalc")
public class PriceCalcComponent extends NodeComponent {
    @Override
    public void process() {
        Order order = this.getRequestData();
        double discount = 0;
        if (order.getAmount() > 1000) discount = 0.1;
        order.setDiscount(discount);
        this.setResponseData(order);
    }
}

XML流程定义

复制代码
xml

<chain name="orderChain">
    <then value="priceCalc, stockCheck, createOrder"/>
    <when value="notifyUser, logRecord"/>
</chain>

优点 :组件复用性高,支持复杂编排;性能优秀。

缺点:业务规则变更仍需修改Java代码并重启(除非结合脚本组件)。

2.2 EasyRules

EasyRules基于注解,将规则定义为普通Java方法,通过@Rule@Condition@Action声明。引擎内部使用简单的Facts容器。

示例

复制代码
java

@Rule(name = "large order discount")
public class LargeOrderRule {
    @Condition
    public boolean isLarge(@Fact("order") Order order) {
        return order.getAmount() > 1000;
    }
    @Action
    public void applyDiscount(@Fact("order") Order order) {
        order.setDiscount(0.1);
    }
}

优点 :零配置,学习成本极低。

缺点:无法支持复杂的规则链、决策表;规则修改仍需重启服务(除非结合动态类加载)。

2.3 JVS-Logic

JVS-Logic提供可视化流程设计器,业务人员通过拖拽节点(条件、计算、数据操作、子流程)编排规则,后端转换为Groovy脚本执行。支持热部署。

可视化流程示例(JSON元数据描述):

复制代码
json

{
  "nodes": [
    {"id": "start", "type": "start"},
    {"id": "condition1", "type": "condition", "expression": "order.amount > 1000"},
    {"id": "action1", "type": "action", "script": "order.setDiscount(0.1)"}
  ],
  "edges": [
    {"from": "start", "to": "condition1"},
    {"from": "condition1", "to": "action1", "condition": "true"}
  ]
}

动态加载机制:流程变更后,引擎重新加载Groovy脚本,无需重启JVM。

优点 :业务人员可自行维护;热部署;与低代码表单/流程引擎数据互通。

缺点:需要部署可视化前端;复杂逻辑可能受限于脚本表达能力。

3. 性能测试

测试环境

  • CPU: Intel Xeon Gold 5218 (4核分配)

  • 内存: 8GB

  • JDK: OpenJDK 17.0.6

  • 测试用例: 执行10万次规则调用,每条规则包含1个条件判断和1个赋值操作

测试代码框架(基于JMH):

复制代码
java

@Benchmark
public void testLiteFlow() {
    LiteflowExecutor executor = new LiteflowExecutor();
    Order order = new Order(1200);
    executor.execute("orderChain", order);
}

@Benchmark
public void testEasyRules() {
    Facts facts = new Facts();
    facts.put("order", new Order(1200));
    rulesEngine.fire(rules, facts);
}

@Benchmark
public void testJVSLogic() {
    Map<String, Object> context = new HashMap<>();
    context.put("order", new Order(1200));
    logicEngine.execute("discountFlow", context);
}

测试结果(单位:微秒/次,取100次平均,预热10秒):

引擎 平均耗时(μs) P99耗时(μs) GC暂停影响
LiteFlow 18.2 45
EasyRules 12.5 30 极低
JVS-Logic 85.3 210 中(Groovy脚本编译开销)

分析

  • EasyRules性能最优,因其本质是纯Java执行。

  • LiteFlow次之,组件链调用有一定开销。

  • JVS-Logic因Groovy脚本的动态编译与执行,性能相对较低,但在毫秒级业务场景中(如审批流、定价)可接受。

4. 可扩展性与集成成本

维度 LiteFlow EasyRules JVS-Logic
自定义组件 继承NodeComponent 注解类 支持自定义Groovy函数
与Spring Boot集成 starter,自动扫描组件 原生,手动注册规则 starter,自动加载流程定义
外部规则存储 支持数据库/配置文件 支持数据库
可视化运维 有(Web设计器)
二次开发成本 低(开源可改) 商业开源

5. 适用场景与选型决策树

复制代码
plaintext

是否需要业务人员维护规则?
├─ 是 → JVS-Logic(可视化,热部署)
└─ 否 → 是否对性能有极致要求(微秒级)?
    ├─ 是 → EasyRules(极简场景)或 LiteFlow(复杂编排)
    └─ 否 → 规则复杂度如何?
        ├─ 简单条件判断 → EasyRules
        └─ 复杂链式、并行编排 → LiteFlow

6. 总结

场景 推荐引擎 理由
极简规则(<10条,变更不频繁) EasyRules 零成本集成,性能最佳
复杂编排,开发团队主导 LiteFlow 组件化、功能强大、性能优秀
业务自维护规则,需热部署 JVS-Logic 可视化、低代码集成、热加载

选型时还需考虑:私有化合规性、源码可控性、长期维护成本。JVS-Logic提供性能测试代码和商业开源;LiteFlow与EasyRules完全开源免费。

附录:测试代码仓库

文中所有性能测试代码已上传至GitHub:https://gitee.com/software-minister/jvs-logic(供读者复现)

相关推荐
词元Max8 小时前
4.2 决策树与随机森林
算法·决策树·随机森林
金融支付架构实战指南1 天前
Spring Boot 集成 LiteFlow:支付价格流程编排实战
支付·流程引擎·liteflow
老鱼说AI1 天前
统计学习方法第五章:从浅入深解析决策树
人工智能·深度学习·算法·决策树·机器学习·学习方法
词元Max1 天前
3.2 线性代数直觉理解:向量与矩阵
线性代数·决策树·矩阵
weixin_468466852 天前
机器学习之决策树新手实战指南
人工智能·python·算法·决策树·机器学习·ai
lqqjuly4 天前
低秩分解与低秩适配——从矩阵分析基础到 LoRA/QLoRA
决策树·机器学习·矩阵
LQQrk智能排产物联网规则引擎6 天前
从“韬(τ)定律”,看我们如何构建应用——当“快”成为新的“大”
人工智能·规则引擎·逻辑引擎·jvs·智能排产·韬定律·jvs低代码平台
Bingorl6 天前
机器学习之决策树算法
算法·决策树·机器学习
止语Lab6 天前
Go跨平台编译的决策树:从\
开发语言·决策树·golang