# rule_engine_1 **Repository Path**: Vinton211/rule_engine_1 ## Basic Information - **Project Name**: rule_engine_1 - **Description**: Drule业务规则可视化平台。基于Drools 封装的业务规则可视化平台,用于简化规则开发,将规则表达式、规则条件和规则动作等进行可视化展示,并降低学习和开发成本,帮助用户快速创建业务规则。在原有能力基础上,增加前端代码,提供丰富的配置方式(赋值 函数 嵌套函数 表达式)以及AI直接生成规则等。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 24 - **Created**: 2026-05-18 - **Last Updated**: 2026-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Drule 规则引擎可视化平台 > 基于 Drools 封装的完整业务规则可视化管理平台,提供前后端一体化的规则配置、编译和执行解决方案。 [![Java](https://img.shields.io/badge/Java-17-blue.svg)](https://www.oracle.com/java/) [![React](https://img.shields.io/badge/React-18-blue.svg)](https://react.dev/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-2.7-brightgreen.svg)](https://spring.io/projects/spring-boot) [![Drools](https://img.shields.io/badge/Drools-7.60.0.Final-red.svg)](https://www.drools.org/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ## 项目简介 Drule 规则引擎可视化平台是一个完整的前后端应用,包含: - **Drule 核心库** - 基于 Drools 封装的规则引擎核心模块 - **后端管理平台** - Spring Boot + MyBatis Plus 提供的 RESTful API - **前端管理界面** - React + Ant Design 提供的可视化配置界面 该平台将复杂的规则定义和业务流程通过图形化界面进行管理,降低业务人员和开发人员的使用门槛。 ## 核心特性 ### 可视化规则配置 - 🎨 **规则块编辑器** - 3 层嵌套条件、图形化规则配置 - 📝 **DRL 代码编辑器** - 支持直接编写和编辑 DRL 规则文件 - 🔄 **BPMN 流程编辑器** - 支持 BPMN 2.0 业务流程编排 - 📖 **中文转译** - 自动将规则内容转换为中文描述 ### 规则引擎能力 - 🔥 **规则编译执行** - 支持规则块、DRL 文件、BPMN 流程三种模式 - ⚡ **热更新支持** - 无需重启服务即可更新规则 - 📊 **执行监控** - 规则执行日志、性能统计、错误追踪 - 🔌 **脚本引擎** - 集成 Groovy 脚本引擎,支持变量加工 - 🏗️ **模块化架构** - drule-core 可独立作为规则引擎库使用 ### 数据管理 - 📦 **对象管理** - 规则输入输出对象定义和字段绑定 - 🏷️ **字段管理** - 字段元数据配置和属性管理 - 📋 **版本管理** - 规则版本历史记录和对比 - 💾 **多数据库支持** - H2 / MySQL / SQLite 灵活切换 ### 开发友好 - 📡 **RESTful API** - 完整的 HTTP API 接口 - 📖 **Swagger 文档** - 自动生成的接口文档 - 🎯 **在线测试** - 规则执行测试和调试 ## 项目结构 ``` rule_engine_1/ ├── pom.xml # 父 POM ├── README.md # 项目说明 ├── LICENSE # 开源协议 │ ├── drule-core/ # Drule 核心库模块 │ ├── pom.xml │ ├── drule-models/ # 规则对象模型 │ ├── drule-compile/ # 规则编译模块 │ ├── drule-execute/ # 规则执行模块 │ ├── drule-script/ # 脚本引擎 API │ ├── drule-parse/ # 规则解析模块 │ └── drule-jbpm/ # BPMN 流程模块 │ ├── drule-spi/ # SPI 实现模块 │ ├── pom.xml │ └── drule-groovy/ # Groovy 脚本引擎实现 │ ├── backend/ # Spring Boot 后端 │ ├── pom.xml │ ├── src/main/ │ │ ├── java/cn/ahaoweb/drule/ │ │ │ ├── controller/ # REST 控制器 │ │ │ ├── service/ # 业务逻辑服务 │ │ │ ├── entity/ # 数据库实体 │ │ │ ├── mapper/ # MyBatis Plus Mapper │ │ │ ├── config/ # 配置类 │ │ │ ├── dto/ # 数据传输对象 │ │ │ └── DruleAdminApplication.java │ │ └── resources/ │ │ ├── application.yml # Spring Boot 配置 │ │ ├── application-h2.yml # H2 数据库配置 │ │ ├── application-sqlite.yml # SQLite 数据库配置 │ │ └── schema.sql # 数据库表结构 │ └── data/drule.db # SQLite 数据库文件 │ └── frontend/ # React 前端 ├── package.json ├── vite.config.ts ├── src/ │ ├── components/ # React 组件 │ ├── pages/ # 页面组件 │ ├── services/api.ts # API 服务封装 │ ├── utils/ # 工具函数 │ └── App.tsx # 主应用 └── dist/ # 构建产物 ``` ## 技术栈 ### 后端技术栈 | 技术 | 版本 | 说明 | | ------------ | ------------ | ------- | | Java | 17 | 运行环境 | | Spring Boot | 2.7.18 | Web 框架 | | MyBatis Plus | 3.5.4 | ORM 框架 | | Drools | 7.60.0.Final | 规则引擎核心 | | jBPM | 7.60.0.Final | 工作流引擎 | | Groovy | 2.5.23 | 脚本引擎 | | SQLite | 3.x | 数据库(默认) | | Lombok | 1.18.30 | 简化代码 | ### 前端技术栈 | 技术 | 版本 | 说明 | | ---------- | ------- | -------- | | React | 18.2.0 | 前端框架 | | TypeScript | 5.2.2 | 类型系统 | | Ant Design | 5.12.0 | UI 组件库 | | Vite | 5.0.0 | 构建工具 | | ECharts | 5.4.3 | 图表库 | | Axios | 1.6.2 | HTTP 客户端 | | Day.js | 1.11.10 | 日期时间库 | ## 快速开始 ### 环境要求 - JDK 17+ - Node.js 18+ - Maven 3.8+ ### 1. 克隆项目 ```bash git clone cd rule_engine_1 ``` ### 2. 编译核心库 ```bash mvn clean install -DskipTests ``` ### 3. 启动后端服务 #### 方式一:使用 Maven 启动 ```bash cd backend mvn spring-boot:run ```
#### 方式二:修改数据库配置 编辑 `backend/src/main/resources/application.yml` 选择数据库: ```yaml spring: profiles: active: sqlite # 可选 h2, sqlite ``` 后端服务将在 `http://localhost:8080` 启动 ### 4. 启动前端服务 ```bash cd frontend npm install npm run dev ``` 前端服务将在 `http://localhost:5173` 启动 ### 5. 访问应用 - 前端界面: - Swagger API 文档: ### 6. 初始化数据 项目包含示例数据初始化脚本,可按需执行: ```bash cd backend bash insert-test-data.sh ``` ## 核心功能模块 ### 首页仪表板 - 规则总数、已发布、待发布统计 - 规则执行次数趋势图表 - 最近规则变更记录 - 快捷操作入口 ### 字段管理 - 字段定义和属性配置 - 字段搜索、筛选、排序、分页 - 字段启用/禁用管理 ### 对象管理 - 对象结构定义和字段绑定 - 对象属性和元数据管理 - 字段搜索和绑定操作 ### 规则管理 - 规则列表和元数据管理 - 规则状态管理和版本控制 - 规则复制和快速创建 ### 可视化配置 #### 规则块配置 - 3 层嵌套条件配置(超级组 → 条件组 → 条件) - 规则动作配置(字段赋值、函数调用、脚本执行) - 实时中文转译预览 - 规则校验和编译预览 #### 规则文件配置 - Monaco Editor 代码编辑器 - DRL 语法高亮和格式化 - 版本对比和变更历史 #### BPMN 流程配置 - BPMN 2.0 流程图编辑器 - 多种节点类型支持(开始/结束/任务/网关) - 并行网关和排他网关支持 - 流程验证和编译预览 ### 执行监控 - 规则执行日志查询 - 执行详情和错误信息查看 - 性能统计和执行耗时分析 ### 规则调用 - HTTP API 接口配置 - 在线测试和调试 - 响应结果查看和验证 ## API 接口说明 ### 核心接口 | 接口 | 方法 | 说明 | | ----------------------- | ---- | ------ | | `/api/rules` | GET | 获取规则列表 | | `/api/rules/{id}` | GET | 获取规则详情 | | `/api/rules` | POST | 创建规则 | | `/api/rules/{id}` | PUT | 更新规则 | | `/api/compile/validate` | POST | 验证规则 | | `/api/execute/test` | POST | 测试执行规则 | | `/api/fields` | GET | 获取字段列表 | | `/api/objects` | GET | 获取对象列表 | ### Swagger 文档 启动后端服务后,访问: ``` http://localhost:8080/swagger-ui.html ``` ## 核心模块使用 ### 1. 使用 Drule 核心库 ```xml cn.ahaoweb.drule.core drule-execute 2.1 cn.ahaoweb.drule.spi drule-groovy 2.1 ``` ### 2. 创建规则服务 ```java RuleService ruleService = new DruleServiceHelper() .identifier("order_rule") .addContent(RuleType.RULE_BLOCK, ruleBlockJson) .addConfig(RuleServiceConfiguration.EXECUTE_MODE.DEBUG) .getRuleService(); // 创建会话并执行 RuleSession session = ruleService.createSession(); FactInfo result = session.execute(input, output); ``` ### 3. 调用平台 API ```javascript // 前端示例代码 import { ruleApi } from '@/services/api'; // 获取规则列表 const rules = await ruleApi.getRules({ page: 1, size: 20 }); // 创建规则 await ruleApi.createRule({ code: 'test_rule', name: '测试规则', type: 'RULE_BLOCK' }); ``` ## 配置说明 ### 数据库配置 #### SQLite(默认) ```yaml spring: datasource: url: jdbc:sqlite:data/drule.db driver-class-name: org.sqlite.JDBC ``` #### H2 数据库 ```yaml spring: datasource: url: jdbc:h2:mem:testdb driver-class-name: org.h2.Driver ``` ### MyBatis Plus 配置 ```yaml mybatis-plus: type-handlers-package: cn.ahaoweb.drule.config mapper-locations: classpath:mapper/*.xml ``` ## 开发指南 ### 后端开发 ```bash cd backend mvn clean compile mvn spring-boot:run ``` ### 前端开发 ```bash cd frontend npm install npm run dev # 开发模式 npm run build # 生产构建 ``` ### 核心库开发 ```bash cd drule-core mvn clean install -DskipTests ``` ## 项目文档 - [产品需求文档](./docs/prd.md) - [项目结构说明](./docs/PROJECT_STRUCTURE.md) - [开发计划](./docs/DEVELOPMENT_PLAN.md) - [数据库配置指南](./backend/README_DATABASE.md) ## 版本历史 | 版本 | 主要更新 | | --- | --------------------------- | | 2.1 | 完成 SQLite 迁移、日期格式统一、前端界面优化 | | 2.0 | 完整前后端平台、规则块编辑器、BPMN 流程、执行监控 | | 1.x | Drule 核心库基础版本 | ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! *** **最后更新:2026-06-02**