网站首页 > java教程 正文
简介
规则引擎是一种用于管理和执行业务规则的组件。它将业务逻辑从应用程序中剥离出来,以规则的形式进行定义和存储,当需要执行某个业务逻辑时,规则引擎会根据输入的数据(事实),通常是业务类,预定义的规则进行匹配和推理,从而生成相应的操作指令或者决策结果。规则可以以代码实现,但通常规则变更频繁,周期未必与软件同步,因此,规则多用dsl定义,解释执行。
本文解释规则引擎的实现,规则模型,执行和容器部分。
特性
V1.0 规则,规则执行,执行容器
V2.0 规则编写辅助,列表事实(业务类),工具类的方法和参数;展示上下文,上级可用变量
V3.0 可视化构建规则
术语/关键词
规则/事实 事实是执行规则的参数,通常是业务相关的对象,规则使用事实为基础的一系列的运算,逻辑处理,得出结论或决策
参考资料
common-jexl语法 Apache Commons JEXL Syntax ? JEXL
关于选型
最初关注drools,研究后,drools相当重,使用不便,学习曲线陡,放弃。回想起之前datax的基于规则的转换器,cdc权限同步,使用过轻量级的规则引擎common-jexl,如下图
支持if/else,工具类,类似js语法,功能强大,使用简单,因此规则引擎继续选用common-jexl
技术架构
上图规则引擎的技术架构图,两个场景
1. 规则编写与业务同一进程
该情况最方便,业务类已载入jvm,规则引擎可直接使用业务类作为事实
2. 规则编写与业务不同进程
这种情况统一编写规则,独立一个应用,如果规则使用业务类作为事实,需要动态载入业务包
逻辑架构
下图是规则引擎的逻辑架构
spring boot starter spring boot自动配置
rule-executor 执行器,负责构建执行容器,构建规则,执行规则
rule-core 规则模型,规则读写
bean-repository 工具库,工具类的注册,动态加载
实现解释
本节详细介绍各模块的详细设计
工程
工程结构与5 逻辑结构一致,这里不重复解释
设计模型
上图主要的设计类,比较直观
JavaClass 工具类类型,一般是字符串处理,日期处理,数值处理,用户通过配置也可以增加定制的业务相关的,只支持静态方法
JavaJar/方法和参数 支持规则编写辅助,列表搜索可用方法,参数
ExecutorContainer 定制执行环境,包括工具类,适应不同的需要
spring boot starter
自动配置引用两个bean配置,规则和执行器
API
- 执行规则,规则在发布状态,支持一个事实和两个事实
public <R> R executeRule(String ruleName, Object fact)
public <R> R executeRule(String ruleName, Object fact1, Object fact2)
- 测试规则,执行草稿状态规则,支持一个事实和两个事实
public <R> R executeRuleTest(String ruleName, Object fact)
- 预览规则,预览执行在编辑状态的规则,直接传递规则脚本执行,支持一个事实和两个事实
public <R> R executeRulePreview(String ruleScript, Object fact)
开发示例
依赖
规则引擎提供spring-boot-starter,使用spring boot的自动配置机制构建组件
引用
Starter构建规则执行器,直接注入即可使用
配置
上图是规则引擎配置,script是使用xml,后续生产使用数据库,tools配置执行容器的工具类
编写规则
上图是简单规则例子,展示if/else,运算,工具类调用,单事实/两个事实
NEXT
- 规则编写辅助
规则编写使用工具类,事实(业务类),列表类型,类型方法和参数提供辅助
- 可视化构建规则
预置组件,拖拉拽构建规则脚本
猜你喜欢
- 2025-07-01 AI+低代码技术揭秘(三):引擎、提供程序和服务
- 2025-07-01 低代码核心能力,通过逻辑引擎配置化实现流程审批记录查询
- 2025-07-01 马上要高考查分了,你是公司的Java架构师,如何设计系统架构呢?
- 2025-07-01 开源 轻量级 工作流框架(开发一个工作流引擎)
- 2025-07-01 工单系统设计实战(下):数据、协作与权限的终极管控
- 2025-07-01 业务流程引擎:业务流程编排与逻辑自动化的核心
- 2025-07-01 国内最受欢迎的7款项目管理软件推荐(2025年最新版)
- 2025-07-01 自动化工作流神器:告别手工审批,流程引擎效率翻倍!
- 2025-07-01 Solon Flow:轻量级流程编排引擎,让业务逻辑更优雅
- 2025-07-01 Spring Boot3 中整合流程引擎技术全解析
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)