flow-design.md 23 KB

Forge Flow 流程管理模块 - 自研设计方案

一、现有模块分析

1.1 技术架构

层级 技术选型 说明
流程引擎 Flowable 6.8.0 开源工作流引擎,符合BPMN 2.0规范
后端框架 Spring Boot 3.x 微服务架构
ORM框架 MyBatis-Plus 数据持久化
前端框架 Vue 3 + Naive UI 现代化UI组件库
流程设计器 bpmn-js BPMN 2.0 建模工具

1.2 现有功能清单

后端模块 (forge-plugin-flow)

实体层

服务层

控制器层

前端模块 (forge-admin-ui)

页面

组件

1.3 数据库表结构

-- 核心表
sys_flow_model       -- 流程模型表
sys_flow_business    -- 流程业务关联表
sys_flow_task        -- 流程任务表
sys_flow_cc          -- 流程抄送表
sys_flow_comment     -- 流程意见表
sys_flow_category    -- 流程分类表
sys_flow_template    -- 流程模板表

1.4 现有功能评估

功能模块 完成度 说明
流程模型管理 ✅ 80% 基本CRUD、部署、启用/禁用
BPMN流程设计 ⚠️ 50% 基础设计器,缺少复杂节点配置
流程任务管理 ✅ 70% 待办、已办、签收、审批、驳回、转办
流程实例管理 ✅ 60% 发起、终止、状态查询
动态表单设计 ❌ 20% 仅有字段配置,无可视化设计器
流程条件设置 ⚠️ 30% 基础条件表达式,无可视化配置
审批节点配置 ⚠️ 40% 支持基本审批人设置,缺少动态层级
组织架构集成 ⚠️ 50% 基本用户/部门关联,缺少深度集成

二、自研功能规划

2.1 整体架构设计

┌─────────────────────────────────────────────────────────────────┐
│                        前端层 (Vue 3)                            │
├─────────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │
│  │ 流程设计器   │  │ 表单设计器   │  │ 流程监控中心 │              │
│  │ (BPMN)      │  │ (Form Builder)│  │ (Dashboard) │              │
│  └─────────────┘  └─────────────┘  └─────────────┘              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │
│  │ 节点配置面板 │  │ 条件规则配置 │  │ 组织选择器   │              │
│  └─────────────┘  └─────────────┘  └─────────────┘              │
├─────────────────────────────────────────────────────────────────┤
│                        API网关层                                 │
├─────────────────────────────────────────────────────────────────┤
│                        后端服务层 (Spring Boot)                   │
├─────────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │
│  │ 流程定义服务 │  │ 表单引擎服务 │  │ 任务管理服务 │              │
│  └─────────────┘  └─────────────┘  └─────────────┘              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │
│  │ 条件规则引擎 │  │ 组织集成服务 │  │ 流程监控服务 │              │
│  └─────────────┘  └─────────────┘  └─────────────┘              │
├─────────────────────────────────────────────────────────────────┤
│                      Flowable引擎层                              │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │ RuntimeService | RepositoryService | TaskService | History...││
│  └─────────────────────────────────────────────────────────────┘│
├─────────────────────────────────────────────────────────────────┤
│                        数据层                                    │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │
│  │ MySQL       │  │ Redis       │  │ Flowable DB │              │
│  └─────────────┘  └─────────────┘  └─────────────┘              │
└─────────────────────────────────────────────────────────────────┘

2.2 核心功能模块设计

2.2.1 可视化表单设计器

功能需求

  • 拖拽式表单组件布局
  • 丰富的表单组件库(输入框、选择器、日期、上传、签名等)
  • 表单字段属性配置(校验规则、默认值、权限控制)
  • 表单数据源绑定
  • 表单预览与导出

技术方案

  • 参考:form-generator、variant-form3-vite、form-create
  • 组件库:基于Naive UI封装
  • 数据结构:JSON Schema标准

新增表结构

-- 表单定义表
CREATE TABLE sys_form_definition (
    id VARCHAR(64) PRIMARY KEY,
    form_key VARCHAR(100) NOT NULL UNIQUE COMMENT '表单标识',
    form_name VARCHAR(200) NOT NULL COMMENT '表单名称',
    form_schema TEXT COMMENT '表单JSON Schema',
    form_config TEXT COMMENT '表单配置',
    version INT DEFAULT 1,
    status TINYINT DEFAULT 1,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 表单组件表
CREATE TABLE sys_form_component (
    id VARCHAR(64) PRIMARY KEY,
    component_type VARCHAR(50) NOT NULL COMMENT '组件类型',
    component_name VARCHAR(100) NOT NULL COMMENT '组件名称',
    component_icon VARCHAR(100) COMMENT '组件图标',
    component_config TEXT COMMENT '组件默认配置JSON',
    sort_order INT DEFAULT 0,
    status TINYINT DEFAULT 1
);

2.2.2 动态审批节点配置

功能需求

  • 支持任意层级审批节点
  • 审批人动态配置(按角色、部门、岗位、指定人员)
  • 会签/或签配置
  • 审批策略配置(依次审批、并行审批、百分比通过)
  • 审批超时设置
  • 审批代理/转办规则

技术方案

  • 扩展BPMN UserTask节点属性
  • 自定义审批策略处理器
  • 监听器实现动态审批人分配

新增表结构

-- 审批节点配置表
CREATE TABLE sys_flow_node_config (
    id VARCHAR(64) PRIMARY KEY,
    model_id VARCHAR(64) NOT NULL COMMENT '流程模型ID',
    node_id VARCHAR(100) NOT NULL COMMENT '节点ID',
    node_name VARCHAR(200) COMMENT '节点名称',
    node_type VARCHAR(50) DEFAULT 'approval' COMMENT '节点类型',
    
    -- 审批人配置
    assignee_type VARCHAR(50) COMMENT '审批人类型(user/role/dept/post/expr)',
    assignee_value TEXT COMMENT '审批人值',
    assignee_expr VARCHAR(500) COMMENT '审批人表达式',
    
    -- 多人审批策略
    multi_instance_type VARCHAR(50) DEFAULT 'sequential' COMMENT '会签类型(sequential/parallel)',
    completion_condition VARCHAR(500) COMMENT '完成条件',
    pass_rate DECIMAL(5,2) COMMENT '通过比例',
    
    -- 超时设置
    due_date_days INT COMMENT '超时天数',
    due_date_hours INT COMMENT '超时小时数',
    timeout_action VARCHAR(50) COMMENT '超时动作(auto_pass/auto_reject/notify)',
    
    -- 其他配置
    allow_delegate TINYINT DEFAULT 1 COMMENT '允许转办',
    allow_transfer TINYINT DEFAULT 1 COMMENT '允许转交',
    allow_add_sign TINYINT DEFAULT 0 COMMENT '允许加签',
    allow_counter_sign TINYINT DEFAULT 0 COMMENT '允许减签',
    
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    UNIQUE KEY uk_model_node(model_id, node_id)
);

-- 审批层级配置表(支持动态层级)
CREATE TABLE sys_flow_approval_level (
    id VARCHAR(64) PRIMARY KEY,
    node_config_id VARCHAR(64) NOT NULL COMMENT '节点配置ID',
    level_index INT NOT NULL COMMENT '层级序号',
    level_name VARCHAR(100) COMMENT '层级名称',
    assignee_type VARCHAR(50) COMMENT '审批人类型',
    assignee_value TEXT COMMENT '审批人值',
    condition_expr VARCHAR(500) COMMENT '层级条件表达式',
    skip_condition VARCHAR(500) COMMENT '跳过条件',
    sort_order INT DEFAULT 0,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

2.2.3 复杂流程条件设置

功能需求

  • 可视化条件规则编辑器
  • 支持表单字段条件判断
  • 支持流程变量条件
  • 支持组织架构条件(部门、角色、职级)
  • 支持复杂逻辑组合(AND/OR/NOT)
  • 条件表达式预览与测试

技术方案

  • 规则引擎:参考JSON Logic规范
  • 表达式语言:Spring EL + Flowable UEL
  • 可视化编辑:条件组配置面板

新增表结构

-- 流程条件规则表
CREATE TABLE sys_flow_condition_rule (
    id VARCHAR(64) PRIMARY KEY,
    model_id VARCHAR(64) NOT NULL COMMENT '流程模型ID',
    sequence_flow_id VARCHAR(100) NOT NULL COMMENT '序列流ID',
    rule_name VARCHAR(200) COMMENT '规则名称',
    rule_type VARCHAR(50) DEFAULT 'expression' COMMENT '规则类型',
    
    -- 条件配置
    condition_groups TEXT COMMENT '条件组配置JSON',
    condition_expr VARCHAR(1000) COMMENT '条件表达式',
    priority INT DEFAULT 0 COMMENT '优先级',
    
    -- 默认分支
    is_default TINYINT DEFAULT 0 COMMENT '是否默认分支',
    
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    UNIQUE KEY uk_model_flow(model_id, sequence_flow_id)
);

-- 条件规则明细表
CREATE TABLE sys_flow_condition_item (
    id VARCHAR(64) PRIMARY KEY,
    rule_id VARCHAR(64) NOT NULL COMMENT '规则ID',
    group_index INT NOT NULL COMMENT '条件组索引',
    item_index INT NOT NULL COMMENT '条件项索引',
    
    -- 条件配置
    field_name VARCHAR(100) COMMENT '字段名',
    operator VARCHAR(50) COMMENT '操作符(eq/ne/gt/lt/ge/le/contains/empty)',
    field_value VARCHAR(500) COMMENT '字段值',
    value_type VARCHAR(50) DEFAULT 'string' COMMENT '值类型',
    
    -- 逻辑关系
    logic_operator VARCHAR(10) DEFAULT 'AND' COMMENT '逻辑操作符(AND/OR)',
    
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

2.2.4 组织架构集成

功能需求

  • 与现有用户、部门、角色、岗位体系深度集成
  • 支持按组织层级查找审批人
  • 支持上级领导、部门负责人动态获取
  • 支持按业务规则动态计算审批人
  • 组织变更自动感知

技术方案

  • 扩展组织服务接口
  • 实现Flowable用户组解析器
  • 缓存优化组织数据查询

新增服务接口

/**
 * 组织架构集成服务
 */
public interface FlowOrganizationService {
    
    /**
     * 获取用户上级领导
     */
    User getLeader(String userId, int level);
    
    /**
     * 获取部门负责人
     */
    User getDeptManager(String deptId);
    
    /**
     * 获取用户所在部门
     */
    Dept getUserDept(String userId);
    
    /**
     * 获取部门所有上级部门
     */
    List<Dept> getParentDepts(String deptId);
    
    /**
     * 获取角色下的用户
     */
    List<User> getUsersByRole(String roleCode);
    
    /**
     * 获取岗位下的用户
     */
    List<User> getUsersByPost(String postCode);
    
    /**
     * 按条件动态计算审批人
     */
    List<User> calculateApprovers(String expression, Map<String, Object> variables);
}

2.2.5 流程监控与管理

功能需求

  • 流程实例监控大屏
  • 任务超时预警
  • 流程效率分析
  • 瓶颈节点识别
  • 流程优化建议

新增表结构

-- 流程监控统计表
CREATE TABLE sys_flow_statistics (
    id VARCHAR(64) PRIMARY KEY,
    process_def_key VARCHAR(100) NOT NULL COMMENT '流程定义KEY',
    stat_date DATE NOT NULL COMMENT '统计日期',
    
    -- 实例统计
    total_instances INT DEFAULT 0 COMMENT '总实例数',
    running_instances INT DEFAULT 0 COMMENT '运行中实例数',
    completed_instances INT DEFAULT 0 COMMENT '已完成实例数',
    terminated_instances INT DEFAULT 0 COMMENT '已终止实例数',
    
    -- 耗时统计
    avg_duration BIGINT COMMENT '平均耗时(毫秒)',
    max_duration BIGINT COMMENT '最大耗时',
    min_duration BIGINT COMMENT '最小耗时',
    
    -- 任务统计
    total_tasks INT DEFAULT 0 COMMENT '总任务数',
    avg_task_duration BIGINT COMMENT '平均任务耗时',
    timeout_tasks INT DEFAULT 0 COMMENT '超时任务数',
    
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    
    UNIQUE KEY uk_process_date(process_def_key, stat_date)
);

三、参考开源项目

3.1 流程设计器

项目名称 GitHub 特点
bpmn-js https://github.com/bpmn-io/bpmn-js Flowable官方推荐,功能强大
bpmn-process-designer https://github.com/moon-studio/vite-vue-bpmn-process Vue3 + BPMN,中文友好
RuoYi-Flowable https://github.com/tony2y/RuoYi-Flowable 若依集成Flowable,完整方案
Flowable UI https://github.com/flowable/flowable-engine Flowable官方设计器

3.2 表单设计器

项目名称 GitHub 特点
form-generator https://github.com/JakHuang/form-generator Vue2/3,功能丰富
variant-form3-vite https://github.com/vform666/variant-form3-vite Vue3表单设计器
form-create https://github.com/xaboy/form-create 低代码表单生成
Avue https://github.com/nmxiaowai/avue 数据驱动视图

3.3 完整工作流方案

项目名称 GitHub 特点
RuoYi-Flowable https://github.com/tony2y/RuoYi-Flowable 若依+Flowable完整方案
Snowy https://github.com/xiaonuobase/snowy Layui+Flowable
芋道源码 https://github.com/YunaiV/ruoyi-vue-pro 微服务+Flowable
JeecgBoot https://github.com/jeecgboot/jeecg-boot 低代码+Flowable

四、实施计划

4.1 阶段一:基础增强(2周)

目标:完善现有功能,提升易用性

任务清单

  • 完善BPMN设计器节点属性配置面板
  • 实现流程模板功能
  • 优化流程部署与版本管理
  • 完善流程分类管理
  • 增加流程导入/导出功能

4.2 阶段二:表单设计器(3周)

目标:实现可视化表单设计

任务清单

  • 设计表单JSON Schema规范
  • 开发表单组件库(15+基础组件)
  • 实现拖拽式表单设计器
  • 表单属性配置面板
  • 表单预览与数据验证
  • 表单与流程关联

4.3 阶段三:审批节点增强(2周)

目标:支持复杂审批场景

任务清单

  • 审批节点配置面板开发
  • 动态审批人计算引擎
  • 会签/或签策略实现
  • 审批超时处理
  • 审批代理/转办功能增强

4.4 阶段四:条件规则引擎(2周)

目标:可视化条件配置

任务清单

  • 条件规则编辑器开发
  • 条件表达式解析引擎
  • 条件规则测试功能
  • 与流程设计器集成

4.5 阶段五:组织架构集成(1周)

目标:深度集成组织体系

任务清单

  • 组织服务接口开发
  • Flowable用户组解析器
  • 审批人计算策略
  • 组织选择器组件

4.6 阶段六:监控与优化(1周)

目标:流程监控与分析

任务清单

  • 流程监控大屏
  • 统计分析功能
  • 超时预警机制
  • 性能优化

五、技术要点

5.1 BPMN扩展属性

<!-- 用户任务扩展配置示例 -->
<userTask id="approveTask" name="审批">
  <extensionElements>
    <flowable:assignee>${initiator}</flowable:assignee>
    <flowable:candidateUsers>${candidateUsers}</flowable:candidateUsers>
    <flowable:taskListener event="create" class="com.mdframe.forge.flow.listener.TaskCreateListener"/>
  </extensionElements>
  <multiInstanceLoopCharacteristics isSequential="false">
    <completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.5}</completionCondition>
  </multiInstanceLoopCharacteristics>
</userTask>

5.2 表单JSON Schema示例

{
  "formKey": "leave_form",
  "formName": "请假申请表",
  "fields": [
    {
      "type": "input",
      "field": "title",
      "label": "申请标题",
      "props": {
        "placeholder": "请输入标题"
      },
      "rules": [
        { "required": true, "message": "请输入标题" }
      ]
    },
    {
      "type": "select",
      "field": "leaveType",
      "label": "请假类型",
      "props": {
        "options": [
          { "label": "事假", "value": "1" },
          { "label": "病假", "value": "2" },
          { "label": "年假", "value": "3" }
        ]
      }
    },
    {
      "type": "datePicker",
      "field": "startDate",
      "label": "开始日期"
    },
    {
      "type": "datePicker",
      "field": "endDate",
      "label": "结束日期"
    },
    {
      "type": "inputNumber",
      "field": "days",
      "label": "请假天数"
    },
    {
      "type": "textarea",
      "field": "reason",
      "label": "请假原因"
    }
  ]
}

5.3 条件规则JSON示例

{
  "conditionGroups": [
    {
      "logic": "AND",
      "conditions": [
        {
          "field": "days",
          "operator": "gt",
          "value": 3
        },
        {
          "field": "leaveType",
          "operator": "eq",
          "value": "1"
        }
      ]
    },
    {
      "logic": "OR",
      "conditions": [
        {
          "field": "deptId",
          "operator": "in",
          "value": ["dept001", "dept002"]
        }
      ]
    }
  ]
}

六、总结

本方案基于现有Flowable流程引擎,通过自研可视化表单设计器、动态审批节点配置、复杂条件规则引擎等核心模块,构建一套完整的企业级流程管理解决方案。方案充分参考了RuoYi-Flowable、芋道源码、JeecgBoot等优秀开源项目的实现经验,确保技术方案的可行性和先进性。

核心优势

  1. 符合Flowable设计规范,兼容性好
  2. 可视化配置,降低使用门槛
  3. 灵活的审批策略,适应复杂业务场景
  4. 深度组织集成,自动感知组织变更
  5. 完善的监控分析,支持流程优化