From 14b5e5d7556b62e636b0030385f33f86ee8c10ac Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 7 Dec 2023 21:20:00 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E8=B0=83=E6=95=B4=E8=BD=AC?= =?UTF-8?q?=E4=BA=A4=E4=BB=BB=E5=8A=A1=E6=97=B6,=E7=BB=99=E8=BD=AC?= =?UTF-8?q?=E4=BA=A4=E7=9A=84=E4=BA=BA=E5=8F=91=E5=AF=B9=E5=BA=94=E5=BE=85?= =?UTF-8?q?=E5=8A=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BpmnProcessTaskServiceImpl.java | 12 ++++++++++++ .../listener/task/PushPendingTaskEventListener.java | 4 ++++ .../listener/task/RocketMqBpmnTaskEventListener.java | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java index d7158f9ff..44f07bd05 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java @@ -705,6 +705,18 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { taskService.addComment(task.getId(), task.getProcessInstanceId(), COMMENT_TYPE_OPERATION_TRANSFER, "转交给 " + dto.getTargetAssigner().getAssignerName()); + List originAssingeeList = runtimeService.getVariable(task.getProcessInstanceId(), + INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), List.class); + for (BpmnTaskDelegateAssigner assigner : originAssingeeList) { + if (Objects.equals(assigner.buildAssigneeId(), dto.getOriginAssigner().buildAssigneeId())) { + originAssingeeList.remove(assigner); + break; + } + } + originAssingeeList.add(dto.getTargetAssigner()); + runtimeService.setVariable(task.getProcessInstanceId(), + INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), originAssingeeList); + this.createSubTask((TaskEntity) task, task.getId(), dto.getTargetAssigner()); saveAttachment(dto.getAttachmentList(), task.getProcessInstanceId(), task.getId()); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/PushPendingTaskEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/PushPendingTaskEventListener.java index 7083e4abb..1076a9e56 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/PushPendingTaskEventListener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/PushPendingTaskEventListener.java @@ -27,6 +27,7 @@ import java.util.Objects; import java.util.Optional; import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT; +import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_ASSIGNEE_SKIP_FLAT; /** * UserTask 节点被设置审批人时,推送待办消息 @@ -50,6 +51,9 @@ public class PushPendingTaskEventListener implements BpmnTaskEventListener, Orde @Override public void onAssigned(DelegateTask delegateTask) { + if (Objects.equals(TASK_ASSIGNEE_SKIP_FLAT, delegateTask.getAssignee())) { + return; + } pushPending(delegateTask); } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/RocketMqBpmnTaskEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/RocketMqBpmnTaskEventListener.java index 355024250..bde86e0d0 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/RocketMqBpmnTaskEventListener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/RocketMqBpmnTaskEventListener.java @@ -125,7 +125,7 @@ public class RocketMqBpmnTaskEventListener implements BpmnTaskEventListener, Ord .setStartTime(delegateTask.getCreateTime()) .setTenantId(delegateTask.getTenantId()); BpmnMetaParserHelper.getNoticeConfig(mainProcess).ifPresent(dto::setNoticeConf); - BpmnProcessInstanceResultEnum resultEnum = runtimeService.getVariable(delegateTask.getExecutionId(), + BpmnProcessInstanceResultEnum resultEnum = runtimeService.getVariable(delegateTask.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + delegateTask.getId(), BpmnProcessInstanceResultEnum.class); dto.setTaskResult(Objects.nonNull(resultEnum) ? resultEnum : APPROVED); return dto;