表达式规则引擎
一款基于Aviator
封装可以动态配置动态函数和变量来形成表达式的引擎,可通过定义表达式、追踪、搜索等能力完成表达式的可视化处理流程,更直观、更灵活、简单高效的完成复杂的业务规则。
功能涵盖
- 标准化的函数定义,同时支持流程控制类似:break、return、分支进入即结束
- 基于思维导图的可视化界面
- 支持表达式内部执行规则链路追踪
- 支持表达式模糊搜索能力
- 支持跨服务的调用【服务端负责规则配置、客户端负责规则的运算触发】, 支持nacos、以及指定固定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: 文档地址
gitee: 文档地址