Skip to content

工作流数据库架构

**本文引用的文件** - [workflow.sql](file://docs/ddl/workflow.sql) - [FlowBusinessConfigDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/src/main/java/com/lenovo/lemes/service/dm/workflow/entity/inner/FlowBusinessConfigDo.java) - [FlowAuditLogDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/src/main/java/com/lenovo/lemes/service/dm/workflow/entity/inner/FlowAuditLogDo.java) - [FlowNodeConfigDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/src/main/java/com/lenovo/lemes/service/dm/workflow/entity/inner/FlowNodeConfigDo.java) - [WorkFlowBusinessEnum.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/src/main/java/com/lenovo/lemes/service/dm/workflow/enums/WorkFlowBusinessEnum.java) - [FlowUserMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/workflow/FlowUserMapper.java) - [application.yml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/resources/application.yml) - [pom.xml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/pom.xml) - [flowable.json](file://dm/lemes-web/src/components/bpmnModeler/flowable/flowable.json) - [showConfig.js](file://dm/lemes-web/src/components/bpmnModeler/flowable/showConfig.js)

目录

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

引言

本文件面向工作流管理模块,系统化梳理基于 Flowable 流程引擎的数据库架构设计,覆盖流程部署、流程定义、运行时任务、流程实例、历史数据、流程变量以及业务审计与配置表等核心数据模型。文档同时结合后端实体类映射、前端 BPMN 模型扩展、以及服务端配置,给出流程状态管理、任务分配机制、变量存储与历史归档、配置表结构与扩展字段设计,并提供流程监控、性能优化与数据清理策略建议。

项目结构

工作流模块由“公共层”和“服务层”组成,公共层提供实体、枚举、Feign 客户端与通用工具;服务层提供控制器、Mapper、Service 与流程资源文件;DDL 脚本集中于 docs/ddl 目录,定义了业务审计、流程节点、流程配置、用户与角色、Flowable 内部事件通道等表结构。

图表来源

章节来源

核心组件

  • 业务审计与流程日志
    • 审批日志表:记录流程实例在各节点的审批状态、审批人、业务单据等信息,支持按业务类型、流程实例、节点索引查询。
    • 工作流日志表:记录流程流转过程中的节点类型、任务名称、审批标志与结果、上一步信息等,便于追踪与审计。
  • 流程配置与节点映射
    • 业务流程配置表:维护业务码与流程图 KEY 的映射及节点数量,支撑启动流程与节点路由。
    • 流程节点配置表:按流程 KEY 与节点序号维护节点 ID、前置节点、节点类型与参数,支撑动态路由与条件判断。
  • 用户与角色
    • 用户表:存储用户账号、姓名、状态与工厂维度标识,支撑任务分配与审批人识别。
    • 用户角色中间表:记录用户的角色、层级(工厂/部门)、组织维度,支撑多级审批与权限控制。
  • Flowable 内部事件与通道
    • 事件定义、通道定义、数据库变更日志与锁表:支撑 Flowable 的事件驱动与版本迁移。
  • 前端 BPMN 扩展
    • 自定义属性与节点面板配置:支持优先级、表单键、异步、监听器等扩展属性,提升流程建模能力。

章节来源

架构总览

工作流数据库架构围绕“业务配置—流程定义—运行时—历史归档—审计日志”的完整生命周期展开,结合 Flowable 的事件通道与内部表,形成可扩展、可观测、可治理的流程引擎数据层。

图表来源

详细组件分析

业务流程配置表(flow_business_config)

  • 作用:建立业务码与流程图 KEY 的映射,记录流程节点总数,支撑启动流程与节点路由决策。
  • 关键字段:business_code、wf_key、node_number。
  • 复杂度:按 business_code 唯一检索,插入/更新频率低,适合加唯一索引与业务码过滤。

章节来源

流程节点配置表(flow_node_config)

  • 作用:按流程 KEY 与节点序号维护节点 ID、前置节点、节点类型与参数,支撑动态路由与条件判断。
  • 关键字段:wf_key、node_index、activity_id、pre_activity_id、node_type、node_parameters。
  • 复杂度:复合主键(wf_key, node_index),查询按流程 KEY+序号,适合范围扫描与排序。

章节来源

审批日志表(flow_audit_log)

  • 作用:记录流程实例在各节点的审批状态、审批人、业务单据等,支持审计与追溯。
  • 关键字段:process_instance_id、business_code、node_title、node_index、audit_status、audit_time、task_id、apply_user、apply_time。
  • 复杂度:按流程实例与节点索引查询频繁,建议在 process_instance_id、node_index 上建立索引。

章节来源

用户与角色(flow_user、flow_user_role)

  • 作用:支撑任务分配与审批权限,用户状态与组织层级(工厂/部门)决定审批路径。
  • 关键字段:flow_user.account、flow_user.user_id、flow_user.status;flow_user_role.user_id、role_id、hierarchy。
  • 复杂度:按 user_id 查询频繁,建议在 user_id 上建立索引;按 hierarchy 过滤审批链路。

章节来源

Flowable 内部事件与通道(flw_*)

  • 作用:支撑事件驱动、通道定义、数据库变更迁移与并发锁,保证流程引擎一致性与可观测性。
  • 关键表:flw_event_definition、flw_channel_definition、flw_ev_databasechangelog、flw_ev_databasechangeloglock。
  • 复杂度:DDL 变更与事件订阅场景使用,关注迁移锁与版本唯一约束。

章节来源

前端 BPMN 扩展(flowable.json、showConfig.js)

  • 作用:在前端建模器中启用优先级、表单键、异步、监听器等扩展属性,提升流程可配置性。
  • 关键点:节点面板属性配置与扩展标签映射,确保后端监听器与变量能正确传递到引擎。

章节来源

流程状态管理与任务分配机制

  • 流程状态:通过审批日志与节点配置联动,记录每个节点的审批状态与流转轨迹。
  • 任务分配:结合用户与角色表,依据 hierarchy 与候选用户/组进行任务分派;节点配置表的 node_type 与 node_parameters 支持条件路由。

图表来源

流程变量存储与历史归档

  • 变量存储:流程变量由 Flowable 引擎管理,持久化在运行时与历史表中;前端可通过表单键与监听器注入变量。
  • 历史归档:流程结束后,运行时数据迁移至历史表,审批日志作为补充审计证据,便于离线分析与合规检查。

章节来源

配置表结构与扩展字段设计

  • 业务配置表:扩展字段可用于流程启用标记、默认审批人、超时策略等。
  • 节点配置表:扩展参数支持复杂路由条件、分支权重与并行网关策略。
  • 审计日志表:扩展字段 remark 用于冗余业务参数,便于跨系统对账与回溯。

章节来源

依赖关系分析

  • 后端依赖
    • Flowable 版本:pom 中声明 7.0.0,确保与引擎特性一致。
    • MyBatis-Plus 映射:实体类标注 @TableName,Mapper 使用动态数据源注解,按模块隔离数据源。
    • 应用配置:拦截器规则限定查询/写入范围,避免误操作与性能问题。
  • 前端依赖
    • BPMN 编辑器扩展:flowable.json 与 showConfig.js 提供节点属性与监听器配置入口。

图表来源

章节来源

性能考量

  • 索引策略
    • 审批日志:process_instance_id、node_index、business_code、apply_time。
    • 节点配置:(wf_key, node_index) 已为主键,按流程 KEY 查询高效。
    • 用户/角色:user_id、role_id、hierarchy 组合索引,加速审批链路查询。
  • 查询拦截
    • application.yml 中拦截器规则限制查询与写入范围,减少全表扫描与误操作。
  • 并发与锁
    • Flowable 数据库变更锁表保障迁移一致性,避免并发冲突。
  • 变量与历史
    • 控制流程变量大小与数量,定期归档历史数据,降低运行时表膨胀。

章节来源

故障排查指南

  • 启动失败或流程无法推进
    • 检查业务配置表是否存在对应 business_code 的流程 KEY。
    • 校验节点配置表的节点顺序与前置节点是否正确。
  • 任务无法分配
    • 核对用户/角色表的 user_id 与 hierarchy 是否匹配候选用户/组。
  • 审计缺失
    • 确认审批日志表的插入逻辑与节点监听器是否生效。
  • 数据迁移异常
    • 查看 Flowable 变更锁表状态与迁移日志,确认无并发冲突。

章节来源

结论

本架构以 Flowable 7.0.0 为核心,结合业务配置、节点映射、用户角色与审计日志,构建了可扩展、可审计、可治理的工作流数据层。通过前端 BPMN 扩展与服务端拦截器配置,进一步提升了流程建模灵活性与运行稳定性。建议持续完善索引策略、变量治理与历史归档,保障系统长期高性能与高可用。

附录

  • 业务枚举与类型映射:WorkFlowBusinessEnum 提供业务键与类型的双向映射,便于跨模块统一处理。
  • 流程资源:服务端 resources/processes 下存放流程定义文件,配合前端编辑器进行可视化建模。

章节来源