一个基于React的可视化业务规则配置系统,支持拖拽操作、节点连线,并将配置编译为Drools规则文件。
- 🎨 可视化编辑器: 类似DIFY的拖拽式流程编辑器
- 🔗 节点连线: 支持多种节点类型和连线操作
- 📝 属性配置: 完整的节点属性编辑面板
- 🔄 实时编译: 将可视化配置编译为Drools DRL规则
- 📦 打包下载: 一键下载包含规则文件的ZIP包
- 🎯 多种节点类型: 开始、结束、条件、动作、决策、分组节点
- 🌍 国际化支持: 内置中英文双语界面,支持语言切换
- React 18 + TypeScript
- ReactFlow (流程编辑器)
- Ant Design (UI组件库)
- Zustand (状态管理)
- i18next + react-i18next (国际化)
- JSZip (文件打包)
- FileSaver.js (文件下载)
npm installnpm run devnpm run build- 创建节点: 从左侧节点库拖拽节点到画布
- 连接节点: 点击节点的连接点并拖动到另一个节点
- 编辑属性: 点击节点后在右侧面板编辑属性
- 编译规则: 点击工具栏的"编译"按钮生成Drools规则
- 下载规则包: 点击"下载"按钮获取包含规则文件的ZIP包
- 切换语言: 点击工具栏的"语言"选项切换中英文界面
- 开始节点: 规则流程的起点
- 结束节点: 规则流程的终点
- 条件节点: 定义规则条件(字段比较、逻辑运算)
- 动作节点: 定义规则动作(设置值、调用方法等)
- 决策节点: 复杂的决策逻辑
- 分组节点: 规则分组和优先级设置
系统会自动将可视化配置转换为标准的Drools DRL格式:
package com.rules;
import com.model.*;
rule "Rule_123"
when
$fact: Person(age > 18)
then
$fact.setAdult(true);
end
src/
├── components/
│ ├── RuleEditor/ # 主编辑器组件
│ ├── NodePalette/ # 节点库
│ ├── PropertyPanel/ # 属性配置面板
│ ├── Toolbar/ # 工具栏
│ └── custom-nodes/ # 自定义节点
├── engines/
│ └── DroolsCompiler.ts # Drools编译引擎
├── i18n/
│ ├── index.ts # 国际化配置
│ └── locales/ # 语言文件
│ ├── zh-CN.ts # 中文翻译
│ └── en-US.ts # 英文翻译
├── utils/
│ └── helpers.ts # 工具函数
├── types/
│ └── rule.types.ts # 类型定义
├── App.tsx
└── main.tsx
- 项目搭建和依赖安装
- 基础编辑器框架
- 自定义节点实现
- 属性配置面板
- Drools编译引擎
- 打包下载功能
- 基础功能测试
MIT