Appearance
工作流数据库架构
**本文引用的文件** - [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)目录
引言
本文件面向工作流管理模块,系统化梳理基于 Flowable 流程引擎的数据库架构设计,覆盖流程部署、流程定义、运行时任务、流程实例、历史数据、流程变量以及业务审计与配置表等核心数据模型。文档同时结合后端实体类映射、前端 BPMN 模型扩展、以及服务端配置,给出流程状态管理、任务分配机制、变量存储与历史归档、配置表结构与扩展字段设计,并提供流程监控、性能优化与数据清理策略建议。
项目结构
工作流模块由“公共层”和“服务层”组成,公共层提供实体、枚举、Feign 客户端与通用工具;服务层提供控制器、Mapper、Service 与流程资源文件;DDL 脚本集中于 docs/ddl 目录,定义了业务审计、流程节点、流程配置、用户与角色、Flowable 内部事件通道等表结构。
图表来源
- application.yml:1-13
- FlowBusinessConfigDo.java:1-30
- FlowAuditLogDo.java:1-44
- FlowNodeConfigDo.java:1-37
- WorkFlowBusinessEnum.java:1-86
- FlowUserMapper.java:1-19
- workflow.sql:1-564
- flowable.json:109-168
- showConfig.js:1-51
章节来源
核心组件
- 业务审计与流程日志
- 审批日志表:记录流程实例在各节点的审批状态、审批人、业务单据等信息,支持按业务类型、流程实例、节点索引查询。
- 工作流日志表:记录流程流转过程中的节点类型、任务名称、审批标志与结果、上一步信息等,便于追踪与审计。
- 流程配置与节点映射
- 业务流程配置表:维护业务码与流程图 KEY 的映射及节点数量,支撑启动流程与节点路由。
- 流程节点配置表:按流程 KEY 与节点序号维护节点 ID、前置节点、节点类型与参数,支撑动态路由与条件判断。
- 用户与角色
- 用户表:存储用户账号、姓名、状态与工厂维度标识,支撑任务分配与审批人识别。
- 用户角色中间表:记录用户的角色、层级(工厂/部门)、组织维度,支撑多级审批与权限控制。
- Flowable 内部事件与通道
- 事件定义、通道定义、数据库变更日志与锁表:支撑 Flowable 的事件驱动与版本迁移。
- 前端 BPMN 扩展
- 自定义属性与节点面板配置:支持优先级、表单键、异步、监听器等扩展属性,提升流程建模能力。
章节来源
- workflow.sql:1-564
- FlowBusinessConfigDo.java:1-30
- FlowAuditLogDo.java:1-44
- FlowNodeConfigDo.java:1-37
- WorkFlowBusinessEnum.java:1-86
- flowable.json:109-168
- showConfig.js:1-51
架构总览
工作流数据库架构围绕“业务配置—流程定义—运行时—历史归档—审计日志”的完整生命周期展开,结合 Flowable 的事件通道与内部表,形成可扩展、可观测、可治理的流程引擎数据层。
图表来源
- workflow.sql:111-146
- workflow.sql:276-325
- workflow.sql:1-71
- workflow.sql:327-363
- workflow.sql:365-411
- workflow.sql:474-487
- workflow.sql:495-511
详细组件分析
业务流程配置表(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 提供节点属性与监听器配置入口。
图表来源
- pom.xml:14-16
- FlowUserMapper.java:15-17
- application.yml:1-13
- workflow.sql:1-564
- flowable.json:109-168
- showConfig.js:1-51
章节来源
性能考量
- 索引策略
- 审批日志: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 下存放流程定义文件,配合前端编辑器进行可视化建模。
章节来源