轻量级规则引擎技术选型深度评测: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(供读者复现)

相关推荐
言乐61 天前
Python体现逻辑回归和决策树的区别
开发语言·python·算法·决策树·逻辑回归
LQQrk智能排产物联网规则引擎5 天前
设计即使用:JVS-Logic如何用柔性配置重构交付周期
低代码平台·api集成·运维自动化·流程编排·jvs-logic·企业级治理·可视化调试
jonyleek6 天前
JVS-Rules三步分离法:用规则引擎实现风控逻辑的权责解耦与可审计落地
低代码·规则引擎·风控系统·jvs-rules·jvs·可审计架构·权责解耦
jonyleek8 天前
不是所有APS都叫‘智能’:交期预估准确率背后的动态变量逻辑
规则引擎·制造业·aps系统·jvs-aps·动态排产·制造执行·交期预测
jonyleek8 天前
JVS-Rules vs Drools:业务人员零编码配置风控规则的可行性分水岭
低代码·规则引擎·drools·风控系统·jvs-rules·jvs·jvs软开企服
RuoyiOffice8 天前
SpringBoot3 企业薪酬核算:考勤、绩效与薪资规则如何算出一张可解释的工资单
spring boot·vue3·规则引擎·hrm·ruoyi office·薪酬核算·薪资试算
jonyleek15 天前
JVS-IOT 数字孪生实战指南:作为容错缓冲层的工程实现与规则安全调用
边缘计算·数字孪生·规则引擎·工业物联网·容错设计·物模型·jvs-iot
毕业设计70316 天前
(免费领源码) SpringBoot 游戏交易平台17600-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·spring boot·mysql·决策树·mybatis·idea·推荐算法
jonyleek18 天前
企业级自动化落地实践:为什么JVS-Logic用确定性逻辑引擎替代AI编排?
低代码·私有化部署·流程引擎·可观测性·jvs-logic·企业自动化·确定性计算
土司大王23 天前
LeetCode hot100 回溯专题总结:Java 通用模板、决策树模型
java·算法·leetcode·决策树