业务表单相关表
引用文件
目录
简介
本文件聚焦于业务表单相关表,特别是 OA 请假表(bpm_oa_leave)及其在工作流中的集成方式。文档从表结构设计、业务数据存储策略、与流程状态的同步机制、审批流程中的作用,以及通用设计模式与具体场景实现等方面进行全面阐述,帮助读者快速理解并应用该模式。
项目结构
围绕 OA 请假业务表单,系统采用“控制层-服务层-数据访问层-工作流 API”的分层架构,并通过流程实例与业务数据双向关联,确保审批状态与业务状态一致。
图表来源
- BpmOALeaveController.java
- BpmOALeaveServiceImpl.java
- BpmOALeaveMapper.java
- BpmOALeaveDO.java
- BpmProcessInstanceApi.java
- BpmProcessInstanceCreateReqDTO.java
- bpm.sql
章节来源
核心组件
- 控制器层:提供 REST 接口,负责接收请求、鉴权与响应封装。
- 服务层:实现业务逻辑,包含业务数据持久化与流程实例发起。
- 数据访问层:基于 MyBatis 的 Mapper,提供分页查询与条件查询能力。
- 工作流集成:通过 Feign 调用流程实例 API,完成流程启动与状态同步。
- 数据模型:业务表单实体与数据库表结构一一映射,包含流程实例关联字段。
章节来源
- BpmOALeaveController.java
- BpmOALeaveServiceImpl.java
- BpmOALeaveMapper.java
- BpmOALeaveDO.java
- BpmProcessInstanceApi.java
架构总览
OA 请假业务表单与工作流的集成遵循“业务数据先行、流程实例随后”的模式:先保存业务表单数据,再启动流程实例并将流程实例 ID 回写到业务表单,从而实现双向关联。
图表来源
- BpmOALeaveController.java
- BpmOALeaveServiceImpl.java
- BpmProcessInstanceApi.java
- BpmProcessInstanceCreateReqDTO.java
详细组件分析
业务表单实体与表结构
- 实体类 BpmOALeaveDO 映射 bpm_oa_leave 表,包含用户 ID、请假类型、原因、起止时间、天数、审批状态、流程实例 ID 等字段。
- 表结构设计支持多租户、软删除与审计字段,便于扩展与维护。
- 审批状态字段复用流程任务状态枚举,简化状态管理。
图表来源
章节来源
控制器与请求/响应 VO
- 控制器提供创建、查询与分页接口,使用 VO 封装请求与响应,保证接口清晰与参数校验。
- 创建 VO 包含起止时间、类型、原因及发起人自选审批人映射;响应 VO 包含业务表单与流程状态信息。
图表来源
章节来源
服务层:业务数据存储与流程集成
- 服务层在事务内完成业务数据插入与流程实例创建,并将流程实例 ID 写回业务表单。
- 通过流程实例创建 DTO 设置流程定义 Key、业务 Key(即业务表单 ID)、变量(如请假天数)与发起人自选审批人映射。
图表来源
章节来源
数据访问层:分页与条件查询
- Mapper 提供按用户、状态、类型、原因、创建时间范围的分页查询,支持条件动态拼接与排序。
- 通过 BaseMapperX 提供的便捷方法,减少重复 SQL 编写。
章节来源
工作流状态与业务状态同步
- 业务表单的审批状态字段复用流程任务状态枚举,便于统一管理。
- 服务层在创建流程实例时设置初始状态为“审批中”,后续通过流程回调或轮询更新业务状态。
章节来源
流程定义与表单关联
- 流程定义信息表包含表单类型、表单 ID、自定义创建/查看路径等字段,支持 OA 请假流程与业务表单的绑定。
- 通过流程定义 Key 与业务表单 Key(业务表单 ID)建立关联,实现流程与业务数据的解耦。
章节来源
依赖关系分析
- 控制器依赖服务层;服务层依赖 Mapper 与流程实例 API;实体类映射数据库表。
- 流程实例 API 通过 Feign 进行远程调用,DTO 承载流程启动所需的关键信息。
- 审批状态枚举贯穿业务与流程,确保状态一致性。
图表来源
- BpmOALeaveController.java
- BpmOALeaveServiceImpl.java
- BpmProcessInstanceApi.java
- BpmProcessInstanceCreateReqDTO.java
- BpmTaskStatusEnum.java
章节来源
性能考虑
- 事务边界:业务数据插入与流程实例创建在同一事务内,确保一致性与原子性。
- 分页查询:Mapper 提供条件过滤与排序,建议在高频查询场景下为常用过滤字段建立索引。
- 流程变量:仅传递必要变量(如请假天数),避免冗余数据影响性能。
- 状态枚举:统一状态管理,减少跨模块状态转换的复杂度与错误风险。
[本节为通用指导,无需列出具体文件来源]
故障排查指南
- 创建失败:检查请求参数校验(起止时间先后、必填项)与权限校验。
- 流程未启动:确认流程定义 Key 正确、业务 Key(业务表单 ID)有效、流程实例 API 可用。
- 状态不同步:核对流程回调或轮询逻辑是否正确更新业务表单状态。
- 数据不一致:检查事务边界与异常处理,确保异常时业务数据与流程状态回滚一致。
章节来源
结论
OA 请假表单与工作流的集成以“业务先行、流程随后”为核心策略,通过明确的实体映射、清晰的分层架构与统一的状态枚举,实现了业务数据与流程状态的可靠同步。该模式可作为其他业务表单与流程集成的参考范式,具备良好的可扩展性与可维护性。
[本节为总结性内容,无需列出具体文件来源]
附录
业务表单设计通用模式
- 表单字段设计:区分业务字段与流程字段,业务字段用于展示与统计,流程字段用于驱动流程。
- 状态管理:统一使用流程任务状态枚举,避免多套状态体系导致的混乱。
- 关联策略:通过业务 Key 与流程实例 ID 建立双向关联,支持流程查询与业务查询。
- 权限控制:结合用户权限与流程角色,控制业务表单的创建、查看与操作。
[本节为概念性内容,无需列出具体文件来源]