Skip to content

guanqiao/web_rules

Repository files navigation

业务规则配置系统

一个基于React的可视化业务规则配置系统,支持拖拽操作、节点连线,并将配置编译为Drools规则文件。

功能特性

  • 🎨 可视化编辑器: 类似DIFY的拖拽式流程编辑器
  • 🔗 节点连线: 支持多种节点类型和连线操作
  • 📝 属性配置: 完整的节点属性编辑面板
  • 🔄 实时编译: 将可视化配置编译为Drools DRL规则
  • 📦 打包下载: 一键下载包含规则文件的ZIP包
  • 🎯 多种节点类型: 开始、结束、条件、动作、决策、分组节点
  • 🌍 国际化支持: 内置中英文双语界面,支持语言切换

技术栈

  • React 18 + TypeScript
  • ReactFlow (流程编辑器)
  • Ant Design (UI组件库)
  • Zustand (状态管理)
  • i18next + react-i18next (国际化)
  • JSZip (文件打包)
  • FileSaver.js (文件下载)

快速开始

安装依赖

npm install

启动开发服务器

npm run dev

构建生产版本

npm run build

使用说明

  1. 创建节点: 从左侧节点库拖拽节点到画布
  2. 连接节点: 点击节点的连接点并拖动到另一个节点
  3. 编辑属性: 点击节点后在右侧面板编辑属性
  4. 编译规则: 点击工具栏的"编译"按钮生成Drools规则
  5. 下载规则包: 点击"下载"按钮获取包含规则文件的ZIP包
  6. 切换语言: 点击工具栏的"语言"选项切换中英文界面

节点类型

  • 开始节点: 规则流程的起点
  • 结束节点: 规则流程的终点
  • 条件节点: 定义规则条件(字段比较、逻辑运算)
  • 动作节点: 定义规则动作(设置值、调用方法等)
  • 决策节点: 复杂的决策逻辑
  • 分组节点: 规则分组和优先级设置

Drools规则生成

系统会自动将可视化配置转换为标准的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

About

web rules config json rule auto gen drools rule

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages