From 0075d19f88f695cc3a0122f3e7d1a05a9514787a Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 7 Jun 2026 19:35:56 +0800 Subject: [PATCH] feat:优化 https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/1554 代码的小排版 --- yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java | 3 ++- yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java | 4 +++- yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java | 7 +++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java index c526ec6..6e2e48c 100644 --- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java +++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java @@ -66,7 +66,8 @@ public class BpmTaskEventListener extends AbstractFlowableEngineEventListener { @Override protected void taskAssigned(FlowableEngineEntityEvent event) { - taskService.processTaskAssigned((Task) event.getEntity()); + Task entity = (Task) event.getEntity(); + FlowableUtils.execute(entity.getTenantId(), () -> taskService.processTaskAssigned(entity)); } @Override diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java index 041eceb..17051c7 100644 --- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java +++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java @@ -478,17 +478,19 @@ public class BpmnModelUtils { if (source == null || source instanceof StartEvent || source instanceof SubProcess) { return; } - + // 获取入口连线 List incomingFlows = getElementIncomingFlows(source); if (CollUtil.isEmpty(incomingFlows)) { return; } + // 循环找到目标元素 for (SequenceFlow incomingFlow : incomingFlows) { // 如果发现连线重复,说明连线已经走过。跳过 if (incomingFlow == null || !visitedSequenceFlowIds.add(incomingFlow.getId())) { continue; } + // 如果 source 是 UserTask,则添加到结果中 FlowElement sourceFlowElement = incomingFlow.getSourceFlowElement(); if (sourceFlowElement instanceof UserTask) { if (resultSequenceFlowIds.add(incomingFlow.getId())) { diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java index 7371ad8..5c6dec5 100644 --- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java @@ -1470,6 +1470,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { log.error("[processTaskAssigned][taskId({}) 没有找到流程实例]", task.getId()); return; } + // 需要基于 instance 设置租户编号,避免 Flowable 内部异步执行时【例如:超时自动通过】 丢失租户编号 FlowableUtils.execute(processInstance.getTenantId(), () -> { // 自动去重,通过自动审批的方式 @@ -1499,10 +1500,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { List sourceTaskIds = convertList(BpmnModelUtils.getElementIncomingUserTaskFlows( // 获取所有的上一个 UserTask 节点连线 BpmnModelUtils.getFlowElementById(bpmnModel, task.getTaskDefinitionKey())), SequenceFlow::getSourceRef); - // 设置 taskIds, 并按创建时间倒序排序 - sameAssigneeQuery.taskDefinitionKeys(sourceTaskIds) - .orderByTaskCreateTime() - .desc(); + sameAssigneeQuery.taskDefinitionKeys(sourceTaskIds).orderByTaskCreateTime().desc(); // 设置 taskIds, 并按创建时间倒序排序 HistoricTaskInstance firstHisTask = CollUtil.getFirst(sameAssigneeQuery.list()); if (firstHisTask != null && StrUtil.equals(firstHisTask.getAssignee(), task.getAssignee())) { getSelf().approveTask(Long.valueOf(task.getAssignee()), new BpmTaskApproveReqVO().setId(task.getId()) @@ -1571,6 +1569,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { } } + // 发送消息 AdminUserRespDTO startUser = adminUserApi.getUser(Long.valueOf(processInstance.getStartUserId())); messageService.sendMessageWhenTaskAssigned(BpmTaskConvert.INSTANCE.convert(processInstance, startUser, task)); }); -- libgit2 0.21.4