专业的JAVA编程教程与资源

网站首页 > java教程 正文

规则引擎rule-engine v1.0实现解释(一)-规则,执行,容器

temp10 2025-07-01 23:03:18 java教程 12 ℃ 0 评论

简介

规则引擎是一种用于管理和执行业务规则的组件。它将业务逻辑从应用程序中剥离出来,以规则的形式进行定义和存储,当需要执行某个业务逻辑时,规则引擎会根据输入的数据(事实),通常是业务类,预定义的规则进行匹配和推理,从而生成相应的操作指令或者决策结果。规则可以以代码实现,但通常规则变更频繁,周期未必与软件同步,因此,规则多用dsl定义,解释执行。

本文解释规则引擎的实现,规则模型,执行和容器部分。

规则引擎rule-engine v1.0实现解释(一)-规则,执行,容器

特性

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

  • 规则编写辅助

规则编写使用工具类,事实(业务类),列表类型,类型方法和参数提供辅助

  • 可视化构建规则

预置组件,拖拉拽构建规则脚本

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表