跳到主要内容

分类与表单相关表

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件聚焦于工作流模块中的两类核心数据表:流程分类表 bpm_category 与表单定义表 bpm_form,并结合流程定义信息表 bpm_process_definition_info 的关联关系,系统性阐述以下内容:

  • 流程分类的设计理念与字段作用(名称、编码、描述、状态、排序等)
  • 表单定义表的结构设计与核心特性(配置 conf、表单项 fields、状态管理等)
  • 分类与流程定义的关联方式(通过分类编码)
  • 表单与流程实例的绑定机制(普通表单 vs 自定义表单)
  • 最佳实践与设计指导原则

项目结构

围绕分类与表单的相关文件分布如下:

  • 数据库脚本:位于 sql/mysql/bpm.sql,定义了 bpm_category、bpm_form、bpm_process_definition_info 等表结构
  • 后端数据对象:BpmCategoryDO、BpmFormDO 映射数据库表
  • 控制器与服务:BpmCategoryController、BpmFormController 提供 CRUD 与分页能力;BpmCategoryService、BpmFormService 定义业务接口
  • VO 层:BpmCategorySaveReqVO、BpmFormSaveReqVO、BpmFormRespVO 封装请求与响应参数
  • 枚举:BpmModelFormTypeEnum 定义流程模型的表单类型(普通表单/自定义表单)

Mermaid Diagram Code:

graph TB
subgraph "数据库层"
CAT["bpm_category"]
FORM["bpm_form"]
DEF["bpm_process_definition_info"]
end
subgraph "领域模型"
DO_CAT["BpmCategoryDO"]
DO_FORM["BpmFormDO"]
end
subgraph "控制层"
CTRL_CAT["BpmCategoryController"]
CTRL_FORM["BpmFormController"]
end
subgraph "服务层"
SVC_CAT["BpmCategoryService"]
SVC_FORM["BpmFormService"]
end
CAT --> DO_CAT
FORM --> DO_FORM
DEF --> CAT
DEF --> FORM
CTRL_CAT --> SVC_CAT
CTRL_FORM --> SVC_FORM
SVC_CAT --> DO_CAT
SVC_FORM --> DO_FORM

图表来源

章节来源

核心组件

  • 流程分类表 bpm_category
    • 字段要点:id、name、code、description、status、sort、通用审计字段(creator、create_time、updater、update_time、deleted)、tenant_id
    • 作用:为流程模型提供分类维度,支持按分类编码在流程定义中引用
  • 表单定义表 bpm_form
    • 字段要点:id、name、status、conf(表单配置 JSON)、fields(表单项数组,使用 JacksonTypeHandler 持久化为 JSON)、remark、通用审计字段、tenant_id
    • 作用:存储动态表单的配置与表单项定义,供流程模型绑定使用
  • 流程定义信息表 bpm_process_definition_info
    • 关键关联字段:category(分类编码)、form_type(表单类型)、form_id(表单编号)、form_conf、form_fields、form_custom_create_path、form_custom_view_path
    • 作用:将流程模型与分类、表单进行解耦绑定,支持“普通表单”和“自定义表单”两种模式

章节来源

架构总览

分类与表单在系统中的交互关系如下:

Mermaid Diagram Code:

classDiagram
class BpmCategoryDO {
+Long id
+String name
+String code
+String description
+Integer status
+Integer sort
}
class BpmFormDO {
+Long id
+String name
+Integer status
+String conf
+String[] fields
+String remark
}
class BpmCategoryController {
+createCategory()
+updateCategory()
+deleteCategory()
+getCategory()
+getCategoryPage()
+getCategorySimpleList()
}
class BpmFormController {
+createForm()
+updateForm()
+deleteForm()
+getForm()
+getFormPage()
}
class BpmCategoryService {
+createCategory()
+updateCategory()
+deleteCategory()
+getCategory()
+getCategoryPage()
+getCategoryListByCode()
+getCategoryListByStatus()
+updateCategorySortBatch()
}
class BpmFormService {
+createForm()
+updateForm()
+deleteForm()
+getForm()
+getFormList()
+getFormPage()
}
BpmCategoryController --> BpmCategoryService : "依赖"
BpmFormController --> BpmFormService : "依赖"
BpmCategoryService --> BpmCategoryDO : "持久化"
BpmFormService --> BpmFormDO : "持久化"

图表来源

详细组件分析

流程分类表 bpm_category

  • 设计理念
    • 分类编码 code 作为跨模块引用的稳定标识,避免硬编码流程分类
    • status 与 sort 支持启用禁用与排序展示,满足前端下拉与列表排序需求
    • 通用审计字段与 tenant_id 支持多租户与审计追踪
  • 字段作用
    • name:分类名称,用于展示与检索
    • code:分类标志,作为外键关联到流程定义的分类编码
    • description:分类描述,便于理解用途
    • status:分类状态,配合权限与前端过滤
    • sort:排序值,决定展示顺序
  • 控制器与服务
    • 提供创建、更新、删除、分页查询、简单列表(启用且按 sort 排序)等能力
    • 支持批量更新排序(按传入 id 列表顺序依次赋值)

章节来源

表单定义表 bpm_form

  • 结构设计
    • conf:表单配置 JSON,承载布局、校验、按钮等配置
    • fields:表单项数组,采用 JacksonTypeHandler 持久化,兼容复杂表单项定义
    • status:表单状态,配合启用禁用策略
    • remark:备注,便于维护说明
  • 与流程定义的绑定
    • 普通表单:流程定义中 form_type=10,绑定 form_id 并携带 form_conf、form_fields
    • 自定义表单:流程定义中 form_type=20,不绑定 bpm_form,而是通过 form_custom_create_path、form_custom_view_path 指向业务自定义页面
  • 控制器与服务
    • 提供创建、更新、删除、分页查询、列表查询等能力
    • VO 层封装 conf、fields、status、remark 等字段,确保前后端契约清晰

章节来源

分类与流程定义的关联

  • 关联方式
    • 流程定义信息表 bpm_process_definition_info 中的 category 字段存储分类编码 code
    • 通过该编码与 bpm_category.code 建立逻辑关联,实现分类维度的筛选与统计
  • 关联字段说明
    • category:流程分类编码
    • form_type:表单类型(10 普通表单,20 自定义表单)
    • form_id/form_conf/form_fields:普通表单绑定信息
    • form_custom_create_path/form_custom_view_path:自定义表单页面路径

章节来源

表单与流程实例的绑定机制

  • 普通表单(form_type=10)
    • 绑定 bpm_form.id,并复制 conf 与 fields 至流程定义信息,保证流程启动时具备完整的表单渲染与校验数据
  • 自定义表单(form_type=20)
    • 不绑定 bpm_form,流程启动时通过自定义路径进行表单提交与查看
  • 表单生命周期触发
    • 当表单被删除或更新时,可通过表单触发器对相关流程定义进行同步处理(例如禁止使用已删除表单)

章节来源

表单配置与表单项字段解析流程

Mermaid Diagram Code:

flowchart TD
Start(["进入表单配置解析"]) --> LoadConf["加载表单配置 conf(JSON)"]
LoadConf --> LoadFields["加载表单项数组 fields(JSON 数组)"]
LoadFields --> ValidateConf{"配置合法?"}
ValidateConf --> |否| ErrorConf["返回配置错误"]
ValidateConf --> |是| Render["渲染表单界面"]
Render --> ValidateFields{"表单项校验通过?"}
ValidateFields --> |否| ErrorFields["返回表单项错误"]
ValidateFields --> |是| Submit["提交流程实例"]
Submit --> End(["完成"])
ErrorConf --> End
ErrorFields --> End

图表来源

依赖关系分析

  • 控制器依赖服务接口,服务接口依赖数据对象进行持久化
  • 流程定义信息表同时依赖分类表与表单表,形成“分类—流程—表单”的三层关联
  • 表单类型枚举统一约束流程模型的表单绑定策略

Mermaid Diagram Code:

graph LR
CTRL_CAT["BpmCategoryController"] --> SVC_CAT["BpmCategoryService"]
CTRL_FORM["BpmFormController"] --> SVC_FORM["BpmFormService"]
SVC_CAT --> DO_CAT["BpmCategoryDO"]
SVC_FORM --> DO_FORM["BpmFormDO"]
DEF["bpm_process_definition_info"] --> CAT["bpm_category"]
DEF --> FORM["bpm_form"]
ENUM["BpmModelFormTypeEnum"] --> DEF

图表来源

章节来源

性能考量

  • 表单配置与表单项字段的 JSON 存储与解析
    • conf 与 fields 为大字段,建议在查询时按需加载,避免不必要的序列化开销
    • 对 fields 使用 JacksonTypeHandler 进行高效序列化/反序列化
  • 分类与流程定义的关联查询
    • 通过分类编码(code)进行关联,建议在 bpm_process_definition_info 上建立索引以提升筛选性能
  • 分页与排序
    • 分类与表单均提供分页接口,建议结合状态、排序字段进行复合索引优化

故障排查指南

  • 表单无法渲染或校验失败
    • 检查 conf 是否完整、fields 是否为有效 JSON 数组
    • 确认 fields 中各表单项的必填、显示、隐藏等属性配置正确
  • 流程启动时报“表单不存在”
    • 若为普通表单,确认 form_id 指向的 bpm_form 是否存在且状态启用
    • 若为自定义表单,确认 form_custom_create_path 与 form_custom_view_path 是否正确
  • 分类筛选异常
    • 确认流程定义中的 category 编码与 bpm_category.code 一致
    • 检查分类状态与排序是否符合预期

章节来源

结论

  • bpm_category 通过编码与流程定义建立稳定的分类维度,支撑流程的组织与检索
  • bpm_form 以 JSON 形式承载表单配置与表单项,灵活适配动态表单场景
  • 通过 form_type 区分普通表单与自定义表单,既保证标准化流程的可复用性,又保留业务定制空间
  • 建议在实际落地中遵循最佳实践,确保配置一致性与可维护性

附录

  • 最佳实践
    • 分类命名规范:使用语义明确的 code,避免重复与歧义
    • 表单配置规范:统一 conf 的字段命名与默认值,减少前端适配成本
    • 表单项设计:优先使用标准控件,复杂场景再扩展自定义控件
    • 生命周期管理:表单变更时同步评估流程定义,必要时进行灰度发布
  • 设计指导原则
    • 配置与实现分离:conf 仅负责表现与行为,业务逻辑在流程引擎中实现
    • 可观测性:为表单与流程增加必要的日志与埋点,便于问题定位
    • 可扩展性:预留字段与枚举扩展点,支持未来功能演进
用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答