Appearance
流程实例管理
**本文引用的文件** - [HisTaskInstanceResp.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/HisTaskInstanceResp.java) - [FlowLogDO.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/FlowLogDO.java) - [FlowClient.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/client/feign/FlowClient.java) - [FlowPendingTaskDTO.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/FlowPendingTaskDTO.java) - [TaskNodeDTO.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/TaskNodeDTO.java) - [BreakInfoDTO.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/BreakInfoDTO.java) - [MaintenanceWorkOrdersService.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/device/MaintenanceWorkOrdersService.java) - [MaintenancePlansServiceImpl.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/device/impl/MaintenancePlansServiceImpl.java) - [MpLevelCloseWotJob.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/handler/MpLevelCloseWotJob.java) - [FlowUserDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/workflow/FlowUserDo.java) - [FlowRoleDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/workflow/FlowRoleDo.java) - [EventLog.java](file://lemes-service-common/lemes-service-common-common/src/main/java/com/lenovo/lemes/service/common/entity/EventLog.java) - [EventLogMapper.xml](file://lemes-service-common/lemes-service-common-server/src/main/resources/mapper/EventLogMapper.xml) - [LemesGlobalFilter.java](file://lemes-cloud/lemes-gateway/src/main/java/com/lenovo/lemes/gateway/filter/LemesGlobalFilter.java) - [maintenance.vue](file://app/devicemate-app/modules/maintain/maintenance.vue) - [execute.vue](file://app/devicemate-app/modules/maintain/execute.vue) - [repair.vue](file://app/devicemate-app/modules/repair/repair.vue) - [checkDetail.vue](file://app/devicemate-app/modules/maintain/checkDetail.vue) - [inspectTasks.vue](file://app/devicemate-app/modules/inspectTasks/inspectTasks.vue) - [execute.vue](file://app/devicemate-app/modules/inspectTasks/execute.vue) - [process.vue](file://dm/lemes-web/src/components/bpmnModeler/components/nodePanel/process.vue) - [task.vue](file://dm/lemes-web/src/components/bpmnModeler/components/nodePanel/task.vue) - [index.vue](file://dm/lemes-web/src/components/bpmnModeler/index.vue) - [BpmData.js](file://dm/lemes-web/src/components/bpmnModeler/BpmData.js) - [showConfig.js](file://dm/lemes-web/src/components/bpmnModeler/flowable/showConfig.js)目录
简介
本文件面向“流程实例管理”的专业文档,围绕流程实例的全生命周期(启动、执行、暂停、恢复、终止)、状态管理与监控、API 接口规范以及典型业务场景(设备维护工单、维修申请、审批流程)进行系统化梳理,并给出最佳实践建议(实例清理策略、查询优化、审计与追踪)。文档同时对关键实体类(如 HisTaskInstanceResp、FlowLogDO)进行结构与职责说明,帮助读者快速理解数据模型与运行机制。
项目结构
该仓库包含前端应用、流程设计器、后端服务与工作流模块、作业调度与设备工单执行等多层能力。与流程实例管理直接相关的关键位置如下:
- 前端应用与流程设计器:用于流程建模、节点属性配置与流程可视化
- 工作流服务(Feign 客户端):对外暴露流程启动等接口
- 执行器与设备工单:负责将流程与具体业务(维护、巡检、维修)结合
- 公共事件日志:提供统一审计与追踪能力
图表来源
章节来源
核心组件
- 工作流服务 Feign 客户端:提供流程启动接口,作为前端与后端工作流引擎的桥梁
- 历史任务实例传输对象:封装历史任务实例的关键字段,便于前端展示与审计
- 流程日志实体:记录流程调用、节点、审批、表单等上下文信息,支撑审计与问题定位
- 设备工单服务与执行器:将流程与设备业务(维护、巡检、维修)绑定,生成工单并推进流程
- 事件日志:统一记录操作行为,支持审计与追踪
- 流程设计器与节点面板:提供流程建模、节点属性配置与可视化
章节来源
- FlowClient.java:22-32
- HisTaskInstanceResp.java:13-65
- FlowLogDO.java:20-82
- MaintenanceWorkOrdersService.java:14-23
- EventLog.java:14-62
架构总览
下图展示了从前端到工作流服务、执行器与审计系统的整体交互路径,体现流程实例的启动、执行与审计追踪。
图表来源
详细组件分析
实体类与数据模型
- HisTaskInstanceResp:用于历史任务实例的传输,包含任务标识、名称、经办人、起止时间等字段,便于前端展示与审计
- FlowLogDO:流程日志实体,记录请求键、接口名、流程实例、节点与审批上下文、表单信息、创建/更新时间等,支撑审计与问题定位
图表来源
章节来源
工作流服务与流程启动
- 工作流客户端提供流程启动接口,前端通过该接口提交启动参数,后端完成流程实例创建与初始节点推进
- 客户端采用 Feign 进行远程调用,具备降级与配置能力
图表来源
章节来源
设备工单与流程实例的结合
- 执行器在生成设备工单的同时,会推进流程实例,确保业务闭环
- 通过定时任务或作业处理器,对同设备的多条工单进行优先级与等级判定,必要时关闭低优先级工单并更新任务完成度
图表来源
章节来源
流程设计器与节点配置
- 流程设计器提供节点面板,支持用户任务、服务任务、脚本任务等多种节点的属性配置
- 支持监听器、多实例、到期时间等高级特性配置,满足复杂审批与执行需求
图表来源
章节来源
审计与追踪
- 事件日志实体与 Mapper 提供统一的审计能力,记录主机名、用户名、动作类型、事件类型、事件来源、事件键值、事件数据、IP 地址等
- 网关过滤器注入 traceId 并统计请求延迟,便于端到端追踪
图表来源
章节来源
依赖关系分析
- 前端页面与执行器/设备工单:前端页面通过接口提交业务数据,执行器保存工单并推进流程
- 工作流客户端与执行器:工作流客户端负责流程启动与推进,执行器负责业务数据落库与流程实例关联
- 审计链路:网关过滤器贯穿请求生命周期,事件日志提供持久化审计
图表来源
章节来源
性能考量
- 请求追踪与延迟统计:通过网关过滤器注入 traceId 并计算请求耗时,有助于定位慢请求与瓶颈
- 审计写入:事件日志写入数据库需关注写入频率与批量策略,避免阻塞主业务路径
- 流程启动与推进:工作流客户端应合理设置超时与重试策略,避免长事务占用资源
- 数据库访问:执行器在保存工单与推进流程时,应使用批量插入与事务控制,减少锁竞争
[本节为通用性能建议,不直接分析具体文件]
故障排查指南
- 审计与追踪
- 使用 traceId 在网关过滤器中定位请求链路,结合事件日志确认关键节点的执行情况
- 若流程未按预期推进,检查工作流客户端返回码与消息,核对 FlowLogDO 中的节点与审批上下文
- 历史任务查看
- 通过 HisTaskInstanceResp 的任务起止时间与经办人信息,快速定位历史节点执行情况
- 工单状态异常
- 若出现同设备多工单冲突,检查 MpLevelCloseWotJob 的逻辑是否正确关闭低优先级工单并更新任务完成度
章节来源
- LemesGlobalFilter.java:83-105
- EventLog.java:14-62
- FlowLogDO.java:20-82
- HisTaskInstanceResp.java:13-65
- MpLevelCloseWotJob.java:51-71
结论
流程实例管理以“工作流服务 + 执行器 + 审计追踪”为核心,结合前端流程设计器与业务页面,形成从流程启动到执行推进再到审计可视化的完整闭环。通过合理的实体设计、接口规范与最佳实践,能够有效支撑设备维护工单、巡检工单与维修申请等场景的高效运转。
[本节为总结性内容,不直接分析具体文件]
附录
API 规范(示例)
- 启动流程
- 方法:POST
- 路径:/flow/startProcess
- 请求体:StartProcessVo
- 响应体:ResultData<StartProcessResp>
- 查询待办任务(示意)
- 方法:GET
- 路径:/flow/pendingTasks
- 响应体:List<FlowPendingTaskDTO>
- 查询流程节点(示意)
- 方法:GET
- 路径:/flow/nodes
- 响应体:List<TaskNodeDTO>
- 回退流程(示意)
- 方法:POST
- 路径:/flow/breakback
- 请求体:BreakInfoDTO
- 响应体:ResultData<Boolean>
章节来源
实际应用场景
- 设备维护工单实例
- 页面:modules/maintain/maintenance.vue、modules/maintain/execute.vue、modules/maintain/checkDetail.vue
- 关键点:提交检查项、指定确认人、推进流程实例
- 巡检工单实例
- 页面:modules/inspectTasks/inspectTasks.vue、modules/inspectTasks/execute.vue
- 关键点:获取当前部门用户、展示设备信息、执行检查
- 维修申请实例
- 页面:modules/repair/repair.vue
- 关键点:填写维修信息、提交申请、推进流程
章节来源
最佳实践
- 实例清理策略
- 对于已完成或超期的工单,定期清理历史数据,避免表膨胀;保留必要的审计字段以便追溯
- 实例查询优化
- 为常用查询条件建立索引(如流程实例 ID、业务键、状态、时间范围),并采用分页与缓存策略
- 实例审计
- 通过事件日志与 FlowLogDO 记录关键节点与审批上下文,确保可审计、可追踪
- 用户与角色
- 使用 FlowUserDo 与 FlowRoleDo 管理用户与角色,确保审批权限与可见性符合组织层级(工厂/部门)
章节来源