From 155537c130050d943f25852ce37abff939d689da Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 6 Sep 2024 18:31:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-2924)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E8=BD=AC=E4=BA=A4=E5=8A=9F=E8=83=BD=E7=9A=84=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/cmd/CustomTransferUserTaskCmd.java | 35 ++++++++++--------- .../entity/type/TaskEntityEventHandle.java | 2 +- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java index bc51f1f04..51778165d 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java @@ -15,7 +15,6 @@ import org.flowable.task.api.Task; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstanceQuery; import org.flowable.task.service.impl.persistence.entity.TaskEntity; -import org.springframework.util.StringUtils; import java.io.Serializable; import java.util.HashMap; @@ -76,9 +75,9 @@ public class CustomTransferUserTaskCmd extends AbstractCommand implements @Override public Void execute(CommandContext commandContext) { ProcessEngineConfigurationImpl processEngineConfiguration = - CommandContextUtil.getProcessEngineConfiguration(commandContext); + CommandContextUtil.getProcessEngineConfiguration(commandContext); HistoricTaskInstanceQuery taskQuery = - processEngineConfiguration.getHistoryService().createHistoricTaskInstanceQuery(); + processEngineConfiguration.getHistoryService().createHistoricTaskInstanceQuery(); HistoricTaskInstance historicTaskInstance = taskQuery.taskId(originTaskId).singleResult(); TaskService taskService = processEngineConfiguration.getTaskService(); @@ -88,16 +87,19 @@ public class CustomTransferUserTaskCmd extends AbstractCommand implements validTaskAssignerDuplicated(commandContext, task, Lists.newArrayList(targetTaskAssignee)); + // 修改节点对应的审批人集合快照信息 processAssignee(processEngineConfiguration, task); + // 对被转交的任务进行建议和附件的处理 resolveOriginTask(commandContext, taskService, task); - batchAddAttachment(commandContext, task.getProcessInstanceId(), task.getId(), attachmentList, - originTaskAssignee); + originTaskAssignee); - addMultiTask(commandContext, (TaskEntity) task, targetTaskAssignee); - ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), TRANSFER.getStatus()); - deleteMultiTask(commandContext, (TaskEntity) task); + // 生成转交任务 + addMultiTask(commandContext, task, targetTaskAssignee); + task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), TRANSFER.getStatus()); + // 结束被转交任务 + deleteMultiTask(commandContext, task); return null; } @@ -105,23 +107,22 @@ public class CustomTransferUserTaskCmd extends AbstractCommand implements private void resolveOriginTask(CommandContext commandContext, TaskService taskService, TaskEntity task) { BpmnTaskDelegateAssigner assigner = buildDummyAssigner("transfer", TASK_ASSIGNEE_SKIP_FLAT, "dummyApprover"); task.setAssignee(assigner.buildAssigneeId()); - ((TaskEntity) task).setScopeType("TRANSFER"); - taskService.saveTask(task); + task.setScopeType("TRANSFER"); Authentication.setAuthenticatedUserId(originTaskAssignee.buildAssigneeId()); addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "转交给" + targetTaskAssignee.getAssignerName()); - if (StringUtils.hasLength(advice)) { - addComment(commandContext, task, COMMENT_TYPE_ADVICE, advice); - } + addComment(commandContext, task, COMMENT_TYPE_ADVICE, advice); Authentication.setAuthenticatedUserId(null); + + taskService.saveTask(task); } public void processAssignee(ProcessEngineConfigurationImpl processEngineConfiguration, Task task) { RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); List originAssingeeList = runtimeService.getVariable(task.getProcessInstanceId(), - INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), List.class); + INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), List.class); Optional exists = originAssingeeList.stream() - .filter(i -> Objects.equals(i.buildAssigneeId(), targetTaskAssignee.buildAssigneeId())).findAny(); + .filter(i -> Objects.equals(i.buildAssigneeId(), targetTaskAssignee.buildAssigneeId())).findAny(); if (exists.isPresent()) { throw new WorkflowEngineException(ASSIGNEE_HAS_BEEN_EXISTS); } @@ -134,8 +135,8 @@ public class CustomTransferUserTaskCmd extends AbstractCommand implements } originAssingeeList.add(targetTaskAssignee); runtimeService.setVariable(task.getProcessInstanceId(), - INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), - originAssingeeList); + INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), + originAssingeeList); } } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/entity/type/TaskEntityEventHandle.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/entity/type/TaskEntityEventHandle.java index 7df816d11..a852e0786 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/entity/type/TaskEntityEventHandle.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/entity/type/TaskEntityEventHandle.java @@ -45,7 +45,7 @@ import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApprova import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getNodeType; /** - * TODO + * 评论、加签、转交 * * @author wangli * @since 2024-09-06 00:02