Appearance
任务管理
**本文引用的文件** - [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) - [NextTaskDTO.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/NextTaskDTO.java) - [NodeInfoDTO.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/NodeInfoDTO.java) - [UserDTO.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/UserDTO.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) - [index.vue](file://dm/lemes-web/src/components/bpmnModeler/index.vue) - [task.vue](file://dm/lemes-web/src/components/bpmnModeler/components/nodePanel/task.vue) - [index.js](file://dm/lemes-web/src/components/std/index.js) - [LemesGlobalFilter.java](file://lemes-cloud/lemes-gateway/src/main/java/com/lenovo/lemes/gateway/filter/LemesGlobalFilter.java) - [MpLevelCloseWotJob.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/handler/MpLevelCloseWotJob.java) - [SpDelayRemindJob.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/handler/SpDelayRemindJob.java) - [HjSpDelayRemindJob.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/handler/HjSpDelayRemindJob.java) - [DevicePlanTimeServiceImpl.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/device/impl/DevicePlanTimeServiceImpl.java)目录
简介
本技术文档围绕“任务管理”主题,系统梳理工作流任务从创建、分配、执行到完成的全生命周期管理。重点覆盖以下方面:
- 数据模型:FlowPendingTaskDTO、TaskNodeDTO、NextTaskDTO、NodeInfoDTO、UserDTO 的设计与使用场景
- 任务分配机制:自动分配规则、手动分配策略、任务转办与委托
- 任务管理API:任务查询、任务处理、任务监控等接口规范
- 不同类型任务处理流程:审批任务、执行任务、监控任务
- 最佳实践:任务超时处理、任务优先级设置、任务批量处理
项目结构
任务管理涉及前端流程设计器、后端工作流服务、网关过滤器以及定时作业等多个模块协同:
- 前端:BPMN 流程设计器与节点属性配置,标准化流程处理入口
- 后端:工作流服务通过 Feign 客户端对接流程引擎,提供任务查询与处理能力
- 网关:全局过滤器注入任务追踪与延迟统计
- 作业:定时任务对任务超期与优先级进行处理与告警
图表来源
- index.vue:196-257
- task.vue:247-284
- LemesGlobalFilter.java:83-105
- FlowClient.java:1-32
- SpDelayRemindJob.java:49-94
- MpLevelCloseWotJob.java:1-92
- HjSpDelayRemindJob.java:50-76
- DevicePlanTimeServiceImpl.java:216-242
章节来源
核心组件
- FlowPendingTaskDTO:用于封装待处理任务的关键字段(任务类型、流程实例、任务名称、任务ID),便于前端或服务间传递
- TaskNodeDTO:描述流程节点的任务信息(活动ID、任务名称、节点类型、角色ID、候选人列表、父级活动集合等)
- NextTaskDTO:用于指定下一节点的活动ID、可选的替换审批人与部门ID
- NodeInfoDTO:封装当前节点的活动ID、任务ID、任务名称与候选人用户列表
- UserDTO:用户标识(用户ID、账号、姓名)
这些模型在工作流任务的查询、分配与流转中承担数据载体职责。
章节来源
- FlowPendingTaskDTO.java:1-27
- TaskNodeDTO.java:1-49
- NextTaskDTO.java:1-31
- NodeInfoDTO.java:1-30
- UserDTO.java:1-24
架构总览
任务管理采用前后端分离与微服务架构:
- 前端通过 BPMN 设计器配置任务节点属性(如审批人、候选人、到期时间等),并通过标准化方法提交流程处理
- 网关层注入 traceId 与请求延迟统计,辅助任务链路追踪
- 工作流服务通过 Feign 客户端对外暴露流程启动、任务处理等接口
- 定时作业负责任务超期提醒与优先级控制,保障执行效率与合规性
图表来源
- index.vue:196-257
- task.vue:247-284
- index.js:1-44
- LemesGlobalFilter.java:83-105
- FlowClient.java:1-32
- SpDelayRemindJob.java:49-94
- MpLevelCloseWotJob.java:1-92
- HjSpDelayRemindJob.java:50-76
详细组件分析
数据模型类图
图表来源
- FlowPendingTaskDTO.java:1-27
- TaskNodeDTO.java:1-49
- NextTaskDTO.java:1-31
- NodeInfoDTO.java:1-30
- UserDTO.java:1-24
章节来源
- FlowPendingTaskDTO.java:1-27
- TaskNodeDTO.java:1-49
- NextTaskDTO.java:1-31
- NodeInfoDTO.java:1-30
- UserDTO.java:1-24
任务分配机制
- 自动分配规则:基于流程节点的角色ID与候选人列表,系统可按候选用户集合自动选择执行人
- 手动分配策略:通过 BPMN 节点面板配置“指定审批人/候选人/候选组”,并支持到期时间等属性
- 任务转办与委托:通过替换审批人字段实现,允许在下一节点处理时指定新的审批人
图表来源
章节来源
任务管理API
- 流程启动:通过 Feign 客户端调用流程启动接口,传入流程参数与上下文
- 任务处理:前端通过标准化方法提交处理动作,携带 actionId 与业务数据
- 监控与追踪:网关过滤器注入 traceId 与请求延迟,便于定位慢请求与异常
图表来源
章节来源
不同类型任务处理流程
- 审批任务:通过 FlowPendingTaskDTO 识别审批节点,结合 TaskNodeDTO 的角色与候选人进行审批
- 执行任务:通过 NodeInfoDTO 获取当前节点信息与候选人,进入执行阶段
- 监控任务:定时作业对超期任务进行提醒与优先级处理,确保任务按时完成
图表来源
- FlowPendingTaskDTO.java:1-27
- TaskNodeDTO.java:1-49
- NodeInfoDTO.java:1-30
- SpDelayRemindJob.java:49-94
- MpLevelCloseWotJob.java:1-92
- HjSpDelayRemindJob.java:50-76
章节来源
- FlowPendingTaskDTO.java:1-27
- TaskNodeDTO.java:1-49
- NodeInfoDTO.java:1-30
- SpDelayRemindJob.java:49-94
- MpLevelCloseWotJob.java:1-92
- HjSpDelayRemindJob.java:50-76
依赖分析
- 前端依赖:BPMN 设计器通过节点面板配置任务属性;标准化入口统一处理流程处理请求
- 网关依赖:全局过滤器为请求注入 traceId 与延迟统计
- 服务依赖:工作流服务通过 Feign 客户端对外提供流程启动与任务处理能力
- 作业依赖:定时作业依赖任务服务与工单服务,实现超期提醒与优先级关闭
图表来源
- index.vue:196-257
- task.vue:247-284
- index.js:1-44
- LemesGlobalFilter.java:83-105
- FlowClient.java:1-32
- DevicePlanTimeServiceImpl.java:216-242
章节来源
- index.vue:196-257
- task.vue:247-284
- index.js:1-44
- LemesGlobalFilter.java:83-105
- FlowClient.java:1-32
- DevicePlanTimeServiceImpl.java:216-242
性能考虑
- 请求追踪与延迟统计:网关过滤器注入 traceId 与请求延迟,有助于快速定位慢请求与异常路径
- 任务超时处理:定时作业按业务类型区分超期提醒策略,避免重复提醒与资源浪费
- 优先级控制:定时作业按优先级关闭多余工单,减少无效任务堆积
章节来源
故障排查指南
- 任务状态异常:检查 BPMN 节点面板配置(审批人、候选人、到期时间)是否正确
- 请求延迟过高:查看网关过滤器注入的 traceId 与延迟信息,定位慢请求环节
- 超期未提醒:确认定时作业是否正常运行,检查任务的到期时间与提醒策略配置
- 优先级冲突:核对定时作业的优先级关闭逻辑,确保仅关闭低优先级工单
章节来源
- task.vue:247-284
- LemesGlobalFilter.java:83-105
- SpDelayRemindJob.java:49-94
- MpLevelCloseWotJob.java:1-92
结论
本文档从数据模型、任务分配机制、API 规范、流程处理与最佳实践五个维度,全面阐述了任务管理在本项目中的实现方式。通过 BPMN 设计器、工作流服务、网关过滤器与定时作业的协同,实现了任务的可视化配置、高效处理与智能监控。建议在实际落地中重点关注节点属性配置、超时与优先级策略,以提升整体执行效率与用户体验。
附录
- 前端 BPMN 节点属性配置参考:审批人、候选人、候选组、异步执行、到期时间等
- 工作流服务接口参考:流程启动、任务处理等
- 定时作业参考:超期提醒、优先级关闭等