# expression-mind-map-engine
**Repository Path**: liukaixiong/expression-mind-map-engine
## Basic Information
- **Project Name**: expression-mind-map-engine
- **Description**: 一款基于 aviator深度封装的可视化动态规则引擎。它创新性地将思维导图引入规则编排,支持动态配置函数与变量,支持AI问答,提供全链路执行追踪与搜索能力。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/liukaixiong
- **GVP Project**: No
## Statistics
- **Stars**: 14
- **Forks**: 3
- **Created**: 2024-12-24
- **Last Updated**: 2026-06-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 规则引擎, Java, 表达式引擎, SpringBoot, Aviator
## README
---
typora-copy-images-to: doc\images\v1
---
# Expression Mind Map Engine
**基于 Aviator 的可视化表达式规则引擎 | 思维导图编排 + 动态配置 + 实时生效 + 全链路追踪**
> 一款通过表达式动态配置业务规则的引擎,支持思维导图可视化编排、实时生效、全链路追踪,让复杂业务规则变得直观、灵活、高效。
## 架构概览
### 系统架构
系统采用**配置端与执行端分离**架构:服务端提供规则编排 Web UI,客户端 SDK 嵌入业务应用执行表达式规则。支持 HTTP 直连和 Redis 配置同步两种模式,可选集成 Nacos 注册中心。
### 功能架构
系统涵盖 **11 大功能模块**:执行器管理、规则配置与编辑、追踪与监控、导入导出、版本管理、调试与测试、智能提示与文档、登录鉴权、仪表盘统计、客户端 SDK、AI 表达式生成。
### 请求流程
请求从调用层进入,经过配置加载、数据准备、表达式树遍历执行,每一层均提供对应的扩展点接口。
---
## 核心优势
- **逻辑可视化**:思维导图式规则编排,直观清晰
- **动态配置**:表达式实时配置业务规则,无需改代码即时生效
- **全链路追踪**:执行过程可视化追踪,精准定位规则执行情况
- **跨服务联动**:支持注册中心/IP 直连,配置与执行分离部署
- **灵活扩展**:自定义函数、动态变量、流程管控(break/return/分支跳转)
- **AI 辅助生成**:自然语言描述即生成 Aviator 表达式,支持多轮对话、上下文自动注入、多模型切换(GLM/OpenAI/Ollama/DeepSeek)
- **版本管理**:表达式变更历史追踪、版本回溯对比,安全可控
- **客户端调试**:服务端直连客户端调试,真实环境验证规则逻辑
- **双版本兼容**:JDK8 + SpringBoot 2.x / JDK17 + SpringBoot 3.x 全适配
- **轻量部署**:仅需 MySQL + Redis,快速部署
---
## 应用场景
| 场景 | 说明 |
|------|------|
| 动态业务管控 | 活动限时开关、用户分层可见、紧急熔断、接口接管(前置校验→业务执行→后置回调) |
| 业务实时重组 | 营销规则热更新、功能模块插拔、开关场景、内测场景 |
| 原子能力沉淀 | 日期开关、分布式锁、分支缓存、异步执行、黑白名单、消息推送等 |
| 智能参数处理 | 数据格式统一、异常参数拦截、上下文变量运算 |
| 全流程监控 | 执行链路追踪、调试日志实时查看、规则版本对比 |
| AI 辅助编排 | 自然语言生成/修改表达式,自动注入函数变量上下文,支持多轮对话 |
---
## 快速开始
### 服务端部署
**前置条件**:MySQL + Redis
```bash
# 初始化数据库
mysql -u root -p < script/expression_mysql.sql
# JDK17(默认)
mvn clean install
# JDK8
mvn clean install -Pjdk8 -Djava.version=8
# 启动服务端
cd expression-mind-map-server
mvn spring-boot:run
```
启动后访问:
- 规则配置页:`http://localhost:20888/template/executor-list.html`
- 追踪日志页:`http://localhost:20888/template/trace-list.html`
- 提示词管理页:`http://localhost:20888/template/ai-prompt-list.html`
- 登录页:`http://localhost:20888/template/login.html`
### AI 表达式生成(可选)
> 详见 [服务端文档 - AI 表达式生成](./expression-mind-map-server/README.md#ai-表达式生成)
在 `application.yml` 中配置 LLM 即可通过自然语言生成/修改表达式:
```yaml
spring:
expression:
server:
ai:
enabled: true
api-url: https://open.bigmodel.cn/api/paas/v4/chat/completions
api-key: "your-api-key"
model: glm-5.1
```
兼容 OpenAI / Ollama / DeepSeek 等任何 OpenAI API 格式的模型服务。
### 客户端接入
> 📦 详见 [客户端接入指南](./expression-mind-map-client-starter/README.md)
引入 `expression-mind-map-client-starter` 依赖,配置服务端地址即可:
```yaml
spring.plugin.express:
debug: true
remote-engine-url: http://127.0.0.1:20888
expression-config-call: http # http 或 redis
enable-trace-log: true
inject-type-package: com.xxx.service
```
---
## 界面预览
### 规则编排
| 功能 | 预览 |
|------|------|
| 思维导图编排 |
|
| 执行器管理 |
|
| 执行器详情 |
|
| 导入/导出规则 |
|
| 操作表达式分支 |
|
| 编辑业务逻辑表达式 |
|
| 智能检索(函数/变量搜索即用) |
|
| AI 助手 |
|
| 函数变量检索 |
|
| 函数详情 |
|
| 最近改动过的分支 |
|
| 最近未命中过的分支 |
|
| 表达式历史版本 |
|
> `Tab键`秒建子节点 | 思维导图式拖拽编排
### 执行优先级
| 方向 | 层级 | 职责 |
|------|------|------|
| **从左到右** | 行为 → 条件 → 触发 → 回调 | 确定动作 → 确定规则 → 目标触发 → 通知场景 |
| **从上到下** | 上层 → 中层 → 下层 | 数据准备 → 核心业务逻辑 → 通用回调处理 |
### 链路追踪
> 访问 `http://localhost:20888/template/trace-list.html`,实时查看执行日志 + 参数快照(带 traceID 精准定位)
| 功能 | 预览 |
|------|------|
| 追踪列表 |
|
| 追踪详情 |
|
| 请求上下文样本参数 |
|
| 表达式远程验证调用 |
|
### 业务仪表盘
| 功能 | 预览 |
|------|------|
| 执行器统计仪表盘 |
|
---
## 最佳实践案例
| 场景 | 解决方案 |
|------|----------|
| [任务系统](https://blog.csdn.net/lkx444368875/article/details/146173370) | 动态配置积分规则 + 完成条件 |
| [转介绍活动](https://blog.csdn.net/lkx444368875/article/details/146174548) | 实时调整邀请层级/奖励系数 |
| [开屏页接口](https://blog.csdn.net/lkx444368875/article/details/146174957) | 根据用户标签返回差异化内容 |
| [抽奖系统](https://blog.csdn.net/lkx444368875/article/details/146175032) | 概率权重动态调整 + 黑名单拦截 |
---
## 核心扩展点
### 自定义函数
继承 `AbstractSimpleFunction`:
```java
@Component
public class MyFunction extends AbstractSimpleFunction {
@Override
public Object processor(ExpressionEnvContext env,
ExpressionConfigTreeModel config,
ExpressionBaseRequest request,
List