SpringBoot之表达式规则引擎可视化能力平台

0 阅读4分钟

表达式规则引擎

一款基于Aviator封装可以动态配置动态函数和变量来形成表达式的引擎,可通过定义表达式、编排、追踪、搜索等能力完成表达式的可视化处理流程,更直观、更灵活、简单高效的完成复杂的业务规则。

github:[文档地址](https://github.com/liukaixiong/expression-mind-map-engine)

gitee :[文档地址](https://gitee.com/liukaixiong/expression-mind-map-engine)

功能涵盖

  • 表达式实时配置生效、支持动态编排业务规则能力、效率直接翻倍

  • 函数变量标准实现,并支持流程控制函数如:break、return、分支进入即结束,非常适合基础业务能力研发

  • 基于思维导图的可视化表达式配置界面,复杂逻辑可以更灵活更直观的维护

  • 支持表达式内部执行规则分支链路追踪,成功或者失败一目了然

  • 支持表达式模糊搜索、变动、近期是否被执行能力:更直观检索表达式、维护表达式

  • 支持跨服务的调用【服务端负责规则配置以及规则追踪数据收集、客户端负责规则的运算触发】,支持注册中心适配以及指定固定ip直连

  • 支持规则的导入导出功能,支持跨环境一键导入导出

  • 自定义能力的动态开关

  • 版本支持: 支持jdk 8+,spring-boot 2.x , jdk 17 + spring-boot 3.x

仅依赖redis和mysql

应用场景

配置化的能力
  • 一些业务需要动态配置,时用时不用,新建字段又比较浪费

  • 开关能力: 某时某刻(时间纬度)生效,某些业务类型才能触发

  • 通用能力:是否重复、达到多少次触发、变量上下文运算、是否黑白名单内、业务告警.【可自行设计】

  • 前置后置能力处理: 业务方法的前置拦截、参数校验、数据补全;业务方法后置处理:回调触发、短信发送、状态变更

  • • 你可以将业务【接口】局部或者整体接管交给规则引擎,你要做的仅仅只是丰富想要的能力,去做定制化配置。

  • 参数过滤转化: 为一些不规范的数据,做数据过滤、转换

以上场景都可通过设计函数或者变量来形成基础能力,通过表达式配置形成规则。

业务灵活重组编排
  • xxx: 那个功能下掉,又或者下掉5分钟,等处理完再打开?

  • xxx: 去掉其中这个规则,把这个规则挪到其他分支下去

  • xxx: 这个功能只让特定人使用【黑白名单】

通过规则管理来配置,并且实时生效

基础能力的沉淀

【自行研发】

  • 黑白名单

  • 是否可重复执行

  • 业务核心能力

  • 积分发送

  • 短信发送

  • 告警接入

你可以理解为表达式引擎为你打造了一个这样的业务定制平台,你可以按照标准去实现自己的业务能力,前提是这些能力的粒度越小【单一职责】,它复用的可能性就越大,能力建设到一定程度,剩下的就只有配置业务表达式即可。

其实相比于直接写脚本或者单一写表达式的方式,逻辑分支(思维导图)的方式更直观、清晰、好维护,再加上追踪能力更加高效直观定位到哪些逻辑分支被执行了,哪些分支不满足,不满足的原因是什么,都可以更加快速发现问题。

配置表达式

图片

1. 执行器页面

规则列表: http://localhost:20888/template/executor-list.html

图片

规则配置列表

配置规则页面 :

在这里插入图片描述 自定义规则配置详情 在这里插入图片描述 基于分支创建表达式

或者选中节点,按Tab键,即可创建子节点

在这里插入图片描述 创建子节点规则

  • 简单的检索能力:客户端编写的函数,会被搜索到,方便编写不易出错。在这里插入图片描述 搜索当前可用的函数以及变量检索

2. 链路追踪列表

【已经执行过的规则】: http://localhost:20888/template/trace-list.html

在这里插入图片描述 规则追踪能力

  • 点击查看追踪信息【会携带追踪编号,去规则中匹配当时执行的调试日志记录】

在这里插入图片描述 当前规则被执行的调试分支

图片

选择某个分支展示的追踪信息 在这里插入图片描述 在这里插入图片描述

流程图

在这里插入图片描述 规则执行过程

表达式配置玩法
1. 基于执行顺序的优先级【从上到下】
  • 最上层:定义通用基础属性、业务数据初始化

  • 中间层:具象业务事件处理

  • 最下层:通用的回调模型

2. 基于业务模型的分支【从左到右】
  • 业务事件确定

  • 条件规则限制

  • 业务逻辑触发

  • 完成事件回调

🏆 最佳实践案例

| 场景 | 解决方案 | | --- | --- | | 任务系统 | 动态配置积分规则+完成条件 | | 转介绍活动 | 实时调整邀请层级/奖励系数 | | 开屏页接口 | 根据用户标签返回差异化内容 | | 抽奖系统 | 概率权重动态调整+黑名单拦截 | | 后台系统结合案例(待补充) | 产品配置化,后台系统配置 |

开源地址

github: github.com/liukaixiong…

gitee : gitee.com/liukaixiong…