Skip to content

流程定义管理

**本文引用的文件** - [ProcessController.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/controller/ProcessController.java) - [ProcessService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/service/ProcessService.java) - [ProcessServiceImpl.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/service/impl/ProcessServiceImpl.java) - [ProcessInfoResp.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/outer/ProcessInfoResp.java) - [ActivityDTO.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/dto/ActivityDTO.java) - [NextTaskNodeDTO.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/dto/NextTaskNodeDTO.java) - [FlowRepositoryService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/service/FlowRepositoryService.java) - [FlowRuntimeService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/service/FlowRuntimeService.java) - [FlowTaskService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/service/FlowTaskService.java) - [UserService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/service/UserService.java) - [McsFormService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/service/McsFormService.java) - [FlowLogService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/service/FlowLogService.java) - [BreakService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/service/BreakService.java) - [workflow.sql](file://docs/ddl/workflow.sql) - [demo.bpmn20.xml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/resources/processes/demo.bpmn20.xml) - [store_check.bpmn20.xml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/resources/processes/store_check.bpmn20.xml) - [part_scrap.bpmn20.xml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/resources/processes/part_scrap.bpmn20.xml)

目录

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

引言

本文件面向流程定义管理的技术文档,聚焦于流程定义的创建、部署、查询与删除等核心能力,系统阐述流程定义的数据结构(如 ProcessInfoResp、ActivityDTO、NextTaskNodeDTO 等),解释版本管理机制(流程版本控制、升级策略、向后兼容性处理),并给出流程定义相关 API 的规范说明(REST 接口、请求参数、响应格式、错误码)。同时,结合实际应用场景(设备维护流程、维修申请流程、审批流程等)提供落地示例与最佳实践。

项目结构

流程定义管理位于 lemes-cloud 的 lemes-service-dm-workflow 子模块中,采用分层架构:

  • 控制层:ProcessController 提供 REST 接口
  • 服务层:ProcessService 及其实现 ProcessServiceImpl 执行业务逻辑
  • 集成层:调用 FlowRuntimeService、FlowTaskService、FlowRepositoryService、UserService、McsFormService、FlowLogService、BreakService 等服务
  • 数据模型:位于 workflow-common 模块的 entity 包中

图表来源

章节来源

核心组件

  • 流程启动与审批接口:由 ProcessController 提供,支持启动流程实例、审批并替换审批人、查询待办任务列表、获取流程图
  • 流程服务实现:ProcessServiceImpl 组织 FlowRuntimeService、FlowTaskService、FlowRepositoryService、UserService、McsFormService、FlowLogService、BreakService 完成完整流程生命周期管理
  • 数据模型:ProcessInfoResp、ActivityDTO、NextTaskNodeDTO 等用于封装流程信息、活动节点与下一任务节点等

章节来源

架构总览

流程定义管理基于 Flowable 引擎,通过 REST Starter 提供流程引擎能力,并以服务化方式组合运行时、任务、仓库、用户、表单、日志、打断等功能模块,形成完整的流程生命周期管理。

图表来源

详细组件分析

流程启动与审批(ProcessController)

  • 启动流程实例:POST /process/startProcess
  • 审批并替换审批人:POST /process/approveProcess
  • 查询待办任务列表:GET /process/getPendingTaskList
  • 获取流程图:GET /process/getPicture

图表来源

章节来源

流程审批与回退(ProcessServiceImpl)

  • 审批结果分支:同意、拒绝、回退(驳回至指定节点)
  • 回退校验:检查流程变量中是否允许回退至目标节点
  • 任务绑定与替换:根据角色与部门绑定候选用户或替换用户

图表来源

章节来源

数据模型与实体类

  • ProcessInfoResp:封装流程实例的开启人、开启时间、流程定义 Key、历史任务实例列表
  • ActivityDTO:流程活动节点的基础信息(活动 ID、活动名称)
  • NextTaskNodeDTO:下一任务节点信息(活动 ID、活动名称、节点类型、角色 ID)

图表来源

章节来源

版本管理机制

  • 流程版本控制:通过流程定义 Key 与版本标签进行区分;同一 Key 的不同版本可并存
  • 升级策略:新版本发布时保留旧版本,对新流程定义 Key 进行迁移或灰度发布
  • 向后兼容性:在审批逻辑中通过节点映射与角色绑定实现跨版本的任务承接与替换

图表来源

章节来源

API 规范与示例场景

  • 启动流程实例(POST /process/startProcess)

    • 请求体:StartProcessAccessVO(包含流程 Key、发起人、业务编码、流程变量、下一节点配置等)
    • 响应体:FlowStartProcessResp(包含流程实例 ID、待审批节点列表等)
    • 场景:设备维护流程、维修申请流程、审批流程等
  • 审批并替换审批人(POST /process/approveProcess)

    • 请求体:ApproveProcessVO(包含流程实例 ID、任务 ID、审批结果、意见、流程变量、下一节点列表、替换用户等)
    • 响应体:ApproveProcessResp(包含审批标志、节点信息列表等)
    • 场景:多级审批、跨部门会签、替换审批人
  • 查询待办任务列表(GET /process/getPendingTaskList)

    • 参数:userId、wfKey(可选)
    • 响应体:FlowPendingTaskCountResp(包含待办任务计数与列表)
  • 获取流程图(GET /process/getPicture)

    • 参数:processInstanceId 或 wfKey
    • 响应:流程图字节流

章节来源

实际应用场景

  • 设备维护流程:通过流程 Key 启动维护流程实例,自动分配下一节点审批人,支持跨部门协作与替换审批人
  • 维修申请流程:在申请阶段收集表单信息,审批阶段按角色与部门绑定候选人,支持回退至指定节点
  • 审批流程:多级审批、加签/会签、替换审批人、流程日志追踪

章节来源

依赖分析

  • 控制器依赖服务接口与实现,服务实现依赖运行时、任务、仓库、用户、表单、日志、打断等服务
  • Flowable 引擎通过 Spring Boot Starter 注入,BPMN 文件放置于 resources/processes 目录

图表来源

章节来源

性能考虑

  • 事务边界:流程启动与审批均使用事务保障一致性
  • 任务查询优化:按用户与流程 Key 过滤待办任务,减少扫描范围
  • 日志写入:审批完成后统一写入日志,便于审计与问题定位
  • 并发控制:Flowable 引擎内部处理并发任务分配与状态变更

故障排查指南

  • 启动失败:检查流程 Key 是否正确、流程变量是否完整、下一节点配置是否存在
  • 审批失败:确认任务 ID 与流程实例 ID 一致、用户是否具备候选权限、审批结果枚举值是否合法
  • 回退失败:检查流程变量中是否配置了允许回退的目标节点
  • 无待办任务:确认用户角色与部门配置、流程 Key 是否匹配

章节来源

结论

流程定义管理通过清晰的分层架构与标准的 API 设计,实现了从流程创建、部署到启动、审批、查询与删除的全生命周期管理。借助 Flowable 引擎与完善的实体模型,系统支持版本控制、升级策略与向后兼容性处理,并提供了丰富的应用场景适配能力。建议在生产环境中遵循命名规范、文件组织与版本控制最佳实践,确保流程定义的可维护性与稳定性。

附录

数据库 DDL(流程相关)

  • 表结构与字段定义参考 workflow.sql

章节来源

示例 BPMN 文件

  • demo.bpmn20.xml
  • store_check.bpmn20.xml
  • part_scrap.bpmn20.xml

章节来源