跳到主要内容

流程定义信息表

目录

  1. 简介
  2. 项目结构与定位
  3. 核心组件总览
  4. 架构概览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与扩展性考虑
  8. 故障排查指南
  9. 结论
  10. 附录:典型配置示例与最佳实践

简介

本文件围绕流程定义核心信息表 bpm_process_definition_info 进行系统化说明,重点阐释其设计理念、关键字段的业务含义与使用约束,并结合枚举类型、数据对象、持久层映射与服务层调用链路,给出表单类型、表单配置、表单项数组、流程分类、图标、描述、自定义表单路径、排序值、可见性控制等高级特性的应用场景与最佳实践。

项目结构与定位

  • 表结构定义位于数据库脚本中,包含字段清单、默认值、注释与索引策略。
  • 数据对象封装了表结构与业务语义,标注了类型处理器与关联关系。
  • Mapper 提供按流程定义/模型编号的查询与更新能力。
  • 服务层提供流程定义信息的获取与校验(如用户是否可发起)。
  • 控制层在查询流程定义详情时,拼装返回对象,包含基础定义、信息表、BPMN 模型等。

Mermaid Diagram Code:

graph TB
DB["数据库表<br/>bpm_process_definition_info"] --> DO["数据对象<br/>BpmProcessDefinitionInfoDO"]
DO --> Mapper["持久层 Mapper<br/>BpmProcessDefinitionInfoMapper"]
Mapper --> Service["服务层接口<br/>BpmProcessDefinitionService"]
Service --> Controller["控制层接口<br/>BpmProcessDefinitionController"]

图表来源

章节来源

核心组件总览

  • 表结构:承载流程定义的扩展信息,弥补 Flowable ProcessDefinition 不支持扩展字段的不足。
  • 数据对象:以强类型封装字段与业务注释,标注 JSON 类型处理器与数组类型处理器。
  • Mapper:提供按流程定义编号批量查询、按流程定义编号精确查询、按模型编号更新的能力。
  • 服务层:提供流程定义信息获取、用户可发起性判断等能力。
  • 控制层:在获取流程定义详情时,组装包含信息表与 BPMN 模型的数据对象。

章节来源

架构概览

下图展示了从数据库到前端返回的关键调用链路,强调信息表在流程定义详情中的作用。

Mermaid Diagram Code:

sequenceDiagram
participant C as "客户端"
participant Ctrl as "BpmProcessDefinitionController"
participant Svc as "BpmProcessDefinitionService"
participant Mapper as "BpmProcessDefinitionInfoMapper"
participant DB as "数据库"
C->>Ctrl : GET /get?id=...
Ctrl->>Svc : 获取流程定义/激活定义
Svc->>Svc : 获取流程定义信息
Svc->>Mapper : 按流程定义编号查询
Mapper->>DB : SELECT ... WHERE process_definition_id=?
DB-->>Mapper : 返回记录
Mapper-->>Svc : 返回信息对象
Svc-->>Ctrl : 返回信息对象
Ctrl-->>C : 组装并返回响应

图表来源

详细组件分析

数据模型与字段语义

  • 基础标识与版本
    • process_definition_id:流程定义编号,对应 Flowable ProcessDefinition 的 id。
    • model_id:流程模型编号,对应 Flowable Model 的 id。
    • model_type:模型类型,枚举值参考 BpmModelTypeEnum。
  • 分类与外观
    • category:流程分类编码,用于业务分类与筛选。
    • icon:流程图标路径或标识。
    • description:流程描述。
  • 表单体系
    • form_type:表单类型,枚举值参考 BpmModelFormTypeEnum。
    • form_id:动态表单编号(当表单类型为 NORMAL 时有效)。
    • form_conf:表单配置(JSON 字符串),冗余自动态表单配置。
    • form_fields:表单项数组(JSON 字符串数组),冗余自动态表单字段。
    • form_custom_create_path:自定义表单提交路径(Vue 路由)。
    • form_custom_view_path:自定义表单查看路径(Vue 路由)。
  • 设计器与展示
    • simple_model:SIMPLE 设计器模型快照(JSON 字符串)。
    • sort:排序值,用于前端列表排序。
    • visible:是否可见,决定是否在“发起流程”列表中展示。
  • 用户权限与行为
    • start_user_ids:可发起用户编号数组(逗号分隔或 JSON 数组,取决于类型处理器)。
    • manager_user_ids:可管理用户编号数组。
    • allow_cancel_running_process:是否允许撤销审批中的申请。
  • 元信息与触发
    • process_id_rule:流程 ID 规则(JSON 对象)。
    • auto_approval_type:自动去重类型(枚举)。
    • title_setting、summary_setting:标题与摘要设置(JSON 对象)。
    • process_before_trigger_setting、process_after_trigger_setting、task_before_trigger_setting、task_after_trigger_setting:前后置通知设置(JSON 对象)。
  • 其他
    • creator/updater/create_time/update_time/deleted/tenant_id:通用审计与多租户字段。

Mermaid Diagram Code:

classDiagram
class BpmProcessDefinitionInfoDO {
+Long id
+String processDefinitionId
+String modelId
+Integer modelType
+String category
+String icon
+String description
+Integer formType
+Long formId
+String formConf
+String[] formFields
+String formCustomCreatePath
+String formCustomViewPath
+String simpleModel
+Boolean visible
+Long sort
+Long[] startUserIds
+Long[] managerUserIds
+Boolean allowCancelRunningProcess
+Object processIdRule
+Integer autoApprovalType
+Object titleSetting
+Object summarySetting
+Object processBeforeTriggerSetting
+Object processAfterTriggerSetting
+Object taskBeforeTriggerSetting
+Object taskAfterTriggerSetting
}

图表来源

章节来源

关键字段业务含义与设计要点

  • process_definition_id
    • 作用:唯一标识一个流程定义实例,与 Flowable 的 ProcessDefinition.id 对应。
    • 设计要点:作为信息表与流程定义的绑定键,确保查询与更新的稳定性。
  • model_id
    • 作用:标识所属流程模型,便于按模型维度进行信息维护与批量更新。
    • 设计要点:支持按模型编号更新信息表记录。
  • model_type
    • 作用:区分 BPMN 设计器与 SIMPLE 设计器两类模型。
    • 设计要点:影响设计器快照与后续渲染策略。
  • category
    • 作用:流程分类编码,弥补 Flowable ProcessDefinition 不支持设置分类的问题。
    • 设计要点:用于前端分类筛选与统计分析。
  • icon、description
    • 作用:流程外观与描述信息,提升用户体验。
    • 设计要点:可为空,不影响流程执行。
  • form_type、form_id、form_conf、form_fields
    • 作用:表单类型与动态表单关联;form_conf 与 form_fields 冗余动态表单配置与字段,提升读取性能。
    • 设计要点:NORMAL 类型时使用动态表单;CUSTOM 类型时使用自定义路径。
  • form_custom_create_path、form_custom_view_path
    • 作用:自定义表单的提交与查看路由,适用于业务自定义表单场景。
    • 设计要点:与 CUSTOM 表单类型配合使用。
  • simple_model
    • 作用:SIMPLE 设计器模型快照,便于发布后仍能回溯设计器状态。
    • 设计要点:JSON 字符串,注意大小限制与序列化一致性。
  • sort、visible
    • 作用:排序与可见性控制,visible 决定是否在“发起流程”列表中展示。
    • 设计要点:visible 为 false 时不应见,但不一定意味着不可发起(start_user_ids 才决定发起权限)。
  • start_user_ids、manager_user_ids
    • 作用:可发起用户与可管理用户的集合,支持空表示全部可发起。
    • 设计要点:与 visible 区分;类型处理器支持 find_in_set 查询。
  • allow_cancel_running_process
    • 作用:是否允许撤销审批中的申请,影响流程生命周期控制。
  • 元信息与触发
    • process_id_rule、auto_approval_type、title_setting、summary_setting、各类 trigger_setting:用于流程元信息与通知集成。

章节来源

表单类型与配置设计思路

  • 表单类型枚举
    • NORMAL:使用动态表单,通过 form_id 关联表单定义,form_conf 与 form_fields 冗余配置与字段。
    • CUSTOM:使用业务自定义表单,通过 form_custom_create_path 与 form_custom_view_path 指向业务页面。
  • 设计思路
    • 通过 form_type 切换不同表单渲染与提交策略,兼顾系统内置表单与业务自定义表单。
    • 冗余字段提升读性能,避免每次加载流程定义时都需联表查询表单定义。

章节来源

流程分类、图标与描述的管理

  • 分类 category:用于业务分类与前端筛选,便于“按分类查看流程”等场景。
  • 图标 icon:可为空,为空时前端可采用默认图标。
  • 描述 description:可为空,为空时前端可隐藏描述区域。

章节来源

自定义表单路径、排序与可见性

  • 自定义表单路径
    • form_custom_create_path:提交路径(Vue 路由)。
    • form_custom_view_path:查看路径(Vue 路由)。
    • 仅在 CUSTOM 表单类型生效。
  • 排序值 sort:用于前端列表排序。
  • 可见性 visible:是否在“发起流程”列表中展示。

章节来源

用户权限与行为控制

  • start_user_ids:可发起用户集合;为空表示全部可发起。
  • manager_user_ids:可管理用户集合。
  • allow_cancel_running_process:是否允许撤销审批中的申请。
  • 与 visible 的区别:visible 只影响可见性,start_user_ids 决定实际发起权限。

章节来源

元信息与触发设置

  • process_id_rule:流程 ID 规则(JSON 对象)。
  • auto_approval_type:自动去重类型(枚举)。
  • title_setting、summary_setting:标题与摘要设置(JSON 对象)。
  • 各类 trigger_setting:流程/任务前置/后置通知设置(JSON 对象)。

章节来源

依赖关系分析

  • 表结构依赖枚举类型与 JSON 类型处理器:
    • model_type 依赖 BpmModelTypeEnum。
    • form_type 依赖 BpmModelFormTypeEnum。
    • form_fields、process_id_rule、title_setting、summary_setting、各类 trigger_setting 使用 JacksonTypeHandler。
    • start_user_ids、manager_user_ids 使用 LongListTypeHandler。
  • 控制层依赖服务层,服务层依赖 Mapper,Mapper 依赖数据库表。

Mermaid Diagram Code:

graph LR
Enum1["BpmModelFormTypeEnum"] --> DO["BpmProcessDefinitionInfoDO"]
Enum2["BpmModelTypeEnum"] --> DO
DO --> Mapper["BpmProcessDefinitionInfoMapper"]
Mapper --> Service["BpmProcessDefinitionService"]
Service --> Controller["BpmProcessDefinitionController"]

图表来源

章节来源

性能与扩展性考虑

  • 冗余字段设计:form_conf 与 form_fields 冗余自动态表单,减少读取时的联表开销。
  • 类型处理器优化:JacksonTypeHandler 与 LongListTypeHandler 提升复杂字段的序列化/反序列化效率。
  • 查询路径:按 process_definition_id 查询信息表,避免跨表扫描。
  • 扩展性:新增元信息字段(如 trigger_setting)时,建议沿用 JSON 结构与 JacksonTypeHandler,保持一致的序列化策略。

[本节为通用指导,无需列出具体文件来源]

故障排查指南

  • 查询不到流程定义信息
    • 检查 process_definition_id 是否正确,确认信息表是否存在对应记录。
    • 若使用批量查询,请确认传入的编号集合与数据库记录一致。
  • 自定义表单路径无效
    • 确认表单类型为 CUSTOM,且 form_custom_create_path/form_custom_view_path 已正确配置。
  • 发起流程按钮不可见
    • 检查 visible 是否为 true;若为 false 则不会显示在“发起流程”列表。
    • 若 visible 为 true,但用户仍看不到,检查 start_user_ids 是否包含当前用户。
  • 用户无法发起流程
    • start_user_ids 为空表示全部可发起;否则需确认当前用户是否在集合内。
  • 表单字段未生效
    • 确认表单类型为 NORMAL,并检查 form_fields 是否正确冗余。
    • 确认 form_conf 的 JSON 结构与前端期望一致。

章节来源

结论

bpm_process_definition_info 通过“扩展字段 + 冗余配置 + 类型处理器”的组合,既弥补了 Flowable 流程定义不支持扩展字段的限制,又提升了读取性能与前端渲染灵活性。合理使用表单类型、分类、图标、描述、自定义表单路径、排序与可见性等字段,可显著改善流程体验与管理效率。

[本节为总结性内容,无需列出具体文件来源]

附录:典型配置示例与最佳实践

典型配置示例

  • 动态表单(NORMAL)
    • 表单类型:NORMAL
    • 关联字段:form_id、form_conf、form_fields
    • 适用场景:使用系统内置表单设计器,流程发起时直接渲染表单。
  • 自定义表单(CUSTOM)
    • 表单类型:CUSTOM
    • 关联字段:form_custom_create_path、form_custom_view_path
    • 适用场景:业务自定义表单,流程发起时跳转到业务页面。
  • SIMPLE 设计器
    • 字段:simple_model
    • 适用场景:发布后仍需保留设计器快照,便于回溯与二次发布。

章节来源

最佳实践建议

  • 表单类型选择
    • 优先使用 NORMAL 动态表单,便于统一管理与复用;仅在业务特殊需求时使用 CUSTOM。
  • 冗余字段维护
    • 更新动态表单时,同步更新 form_conf 与 form_fields,确保读取性能与一致性。
  • 可见性与权限
    • visible 仅控制展示;如需限制发起权限,使用 start_user_ids。
  • 自定义表单路径
    • 路径需为 Vue 路由格式,确保前端可正确导航。
  • 分类与排序
    • 正确填写 category 与 sort,提升前端筛选与排序体验。
  • 元信息与触发
    • 合理配置 process_id_rule、title_setting、summary_setting 与 trigger_setting,确保流程生命周期与通知策略符合预期。

[本节为通用指导,无需列出具体文件来源]

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答