一款提供源码,开箱即用的轻量级Java规则引擎!
2025-05-08
生产过程中,线上的业务规则内嵌在系统的各处代码中,每次策略的调整都需要更新线上系统,进行从需求 -> 设计 -> 编码 -> 测试 -> 上线这种长周期的流程,满足不了业务规则的快速变化以及低成本的更新试错迭代。
因此需要有一种解决方案将商业决策逻辑和应用开发者的技术决策分离开,在系统运行时能去更新管理业务规则。
规则引擎 (业务规则管理系统,英文名为Rule Engine)正是这样的解决方案。
规则引擎是什么?规则引擎是一种嵌入式软件组件,它的核心在于将业务规则从应用程序代码中剥离,通过预定义的规则库和推理机制,对输入数据进行实时匹配与计算,最终输出决策结果。这个过程不需要修改代码,只需要调整规则配置就可实现业务逻辑的动态更新。
️1.可视化决策编排
- 拖拽式配置:通过界面化拖拽组件(如开始节点、判断节点、规则节点)构建决策流,支持分组管理(如反欺诈规则、信用评估规则分组)。
- 流程图设计:以逻辑图形式展示规则间的关联,支持条件分支、循环等复杂逻辑,降低业务人员的理解门槛。
- 规则表达,将多个基础因子通过关系组合成有业务价值的逻辑表达式。
️2.变量和数据管理
- 多类型变量支持:包括基础变量、复合变量(如数组对象)、SQL变量,可通过公式映射实现数据加工(如将原始数据转换为决策因子)。
- 数据源集成:无缝对接mysql、mongodb、KingbaseES、PostgreSQL、Oracle、TiDBS、Excel、API、JVS低代码数据模型等数据源,支持动态参数配置与函数式编程加工数据。
️3.规则执行
- 高性能匹配:采用Rete算法优化规则匹配效率,支持高并发、低延迟处理,满足实时决策需求。
- 动态更新与回滚:支持规则热部署及多版本无感发布,修改规则时自动生成新版本(如v2),可通过发布操作无缝切换,避免业务中断。
️4.权限与审计
- 细粒度权限控制:为不同角色/部门设置操作权限(如规则编辑、执行、查看),保障数据安全性。
- 日志监控:记录规则执行详情(触发次数、结果、执行路径),支持故障排查、性能评估及审计追踪。
️5.函数库
JVS规则引擎内置八大类函数,分别为脱敏函数、对象函数、数学函数、时间函数、转换函数、集合函数、文字函数、逻辑函数。支持自定义扩展。
- 数学函数:如power()计算复利、round()精度控制。
- 集合函数:计算两个集合的差集,例1:DIFFERENCE([5,6,7,7],[4,4,3,2,5,7]),结果:[6, 4, 3, 2]词。
- 逻辑函数:两个参数比较,相同返回 true,默认忽略大小写,若不忽略,则填写第三个参数true。例:EQ("aaa","bbb"),结果:false。
- 转换函数:将金钱数转换为人民币大写形式。例1:CONVERTDIGIT(7888.65)结果:肆万捌仟陆佰肆拾捌元伍角陆分。
️6. 规则的导入导出
- 导出:系统会把这个决策对应所使用的变量、数据源等配置一起打包,生成一个以“.risk”结尾的离线文件。
- 导入:系统提示会让用户选择是新增导入还是覆盖导入,如果覆盖,那么系统会去找所有数据对应的历史配置,在原有的数据上做更新,如果选择是全新导入,那么不管历史数据是否存在,都以新增的方式进行导入。
JVS采用“规则引擎+组件仓库+执行器”三层架构:
- 规则层:负责解析配置文件,构建有向无环图(DAG)表示流程拓扑。
- 组件层:管理所有业务组件的生命周期,支持AOP切面注入(如日志、重试、熔断)。
- 执行层:基于事件驱动模型,支持单线程顺序执行、多线程并发、响应式编程等多种模式。
- 高动态性业务:如电商促销规则、金融风控策略,需频繁调整逻辑且无法承受代码发布周期。
- 复杂计算引擎:保险核保、物流路由等需要多步骤并行计算的场景。
- 技术债重构:将遗留系统的“意大利面条代码”解耦为可插拔组件。
决策流
调用示例
变量
规则表达