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;