From a4354094cf8195758868d97b1a751fddb9b3a771 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 5 Jan 2024 11:05:29 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E9=87=8D=E6=96=B0=E5=88=A9?= =?UTF-8?q?=E7=94=A8=E6=89=A9=E5=B1=95=E7=9A=84=E4=BB=BB=E5=8A=A1=E8=A1=A8?= =?UTF-8?q?=E6=9D=A5=E8=AE=B0=E5=BD=95=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/engine/cmd/CustomApproveTaskCmd.java | 2 +- .../cmd/CustomBizSpecifyAssigneeToTaskCmd.java | 2 +- .../cmd/CustomCancelProcessInstanceCmd.java | 4 ++-- .../engine/cmd/CustomCountersignUserTaskCmd.java | 2 +- .../core/engine/cmd/CustomRejectionTaskCmd.java | 5 +++-- .../engine/cmd/CustomTransferUserTaskCmd.java | 2 +- .../core/engine/cmd/helper/CustomTaskHelper.java | 2 +- .../listener/impl/InternalTaskEventListener.java | 15 ++++++++++++++- .../task/StartNodeAutoCompleteEventListener.java | 3 ++- 9 files changed, 26 insertions(+), 11 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskCmd.java index 0dc555fc4..abdaad64b 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskCmd.java @@ -67,7 +67,7 @@ public class CustomApproveTaskCmd implements Command, Serializable { batchAddAttachment(commandContext, task.getProcessInstanceId(), taskId, attachmentList, approver); - ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, APPROVED.getStatus()); + ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + taskId, APPROVED.getStatus()); if (StringUtils.hasLength(task.getExecutionId())) { // 正常完成流程任务,审批通过 diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomBizSpecifyAssigneeToTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomBizSpecifyAssigneeToTaskCmd.java index f10a4853d..c67743ced 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomBizSpecifyAssigneeToTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomBizSpecifyAssigneeToTaskCmd.java @@ -91,7 +91,7 @@ public class CustomBizSpecifyAssigneeToTaskCmd implements Command, Seri }); taskService.setAssignee(task.getId(), HIDDEN_ASSIGNEE_ID); - ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, DELETED.getStatus()); + ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), DELETED.getStatus()); CustomTaskHelper.deleteMultiTask(commandContext, (TaskEntity) task); } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCancelProcessInstanceCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCancelProcessInstanceCmd.java index 38709f8fa..0edc1823b 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCancelProcessInstanceCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCancelProcessInstanceCmd.java @@ -24,7 +24,6 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_END_TENANT import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_END_USER_ID; import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_END_USER_NAME; import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_PROCESS_TYPE_CANCEL; -import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_COMPLETE_OPERATION_TYPE; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.ABORTED; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.CANCELLED; import static cn.axzo.workflow.core.common.code.BpmnInstanceRespCode.PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS; @@ -108,7 +107,8 @@ public class CustomCancelProcessInstanceCmd implements Command, Serializab // 添加自定义的节点,用于展示最后的操作 Task task = createVirtualTask(commandContext, extAxHiTaskInstService, processInstanceId, "发起人撤销", CANCEL_ID, reason, initiator.buildAssigneeId(), CANCELLED.getStatus()); - runtimeService.setVariable(task.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + task.getId(), CANCELLED); + // runtimeService.setVariable(task.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + task.getId() + // , CANCELLED); return null; } } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java index 9b117ae73..4401469ae 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java @@ -89,7 +89,7 @@ public class CustomCountersignUserTaskCmd implements Command, Serializable CustomTaskHelper.batchAddAttachment(commandContext, task.getProcessInstanceId(), task.getId(), attachmentList, originTaskAssignee); CustomTaskHelper.deleteMultiTask(commandContext, (TaskEntity) task); - ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, COUNTERSIGN.getStatus()); + ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), COUNTERSIGN.getStatus()); return null; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomRejectionTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomRejectionTaskCmd.java index 15ba21958..336c0f1ff 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomRejectionTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomRejectionTaskCmd.java @@ -61,10 +61,11 @@ public class CustomRejectionTaskCmd implements Command, Serializable { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); validTask((TaskEntity) task, approver); - ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, REJECTED.getStatus()); + ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), REJECTED.getStatus()); RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); - runtimeService.setVariable(task.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + task.getId(), REJECTED); + // runtimeService.setVariable(task.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + task.getId() + // , REJECTED); createVirtualTask(commandContext, extAxHiTaskInstService, task.getProcessInstanceId(), task.getName(), task.getTaskDefinitionKey(), advice, approver.buildAssigneeId(), REJECTED.getStatus()); 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 2ab36075f..a708a9626 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 @@ -79,7 +79,7 @@ public class CustomTransferUserTaskCmd implements Command, Serializable { addMultiTask(commandContext, (TaskEntity) task, targetTaskAssignee); deleteMultiTask(commandContext, (TaskEntity) task); - ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, TRANSFER.getStatus()); + ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), TRANSFER.getStatus()); return null; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/helper/CustomTaskHelper.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/helper/CustomTaskHelper.java index c1663c087..72e5c60c5 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/helper/CustomTaskHelper.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/helper/CustomTaskHelper.java @@ -258,7 +258,7 @@ public class CustomTaskHelper { CustomTaskHelper.createExtTaskInst(extAxHiTaskInstService, task.getProcessInstanceId(), task.getId(), task.getTaskDefinitionKey(), userId, extTaskInstStatus); - ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, extTaskInstStatus); + task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), extTaskInstStatus); // 完成临时节点 taskService.complete(task.getId()); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalTaskEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalTaskEventListener.java index 385f7dd66..fae46a623 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalTaskEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalTaskEventListener.java @@ -9,7 +9,10 @@ import lombok.extern.slf4j.Slf4j; import org.flowable.task.service.delegate.DelegateTask; import org.springframework.stereotype.Component; +import java.util.Objects; + import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_COMPLETE_OPERATION_TYPE; +import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.DELETED; /** * Core 包内置的,可共用与 Jar 包集成和微服务集成 @@ -41,9 +44,19 @@ public class InternalTaskEventListener implements BpmnTaskEventListener { @Override public void onDeleted(DelegateTask delegateTask) { + Object operationType = delegateTask.getTransientVariable(TASK_COMPLETE_OPERATION_TYPE + delegateTask.getId()); + if (log.isDebugEnabled()) { + log.debug("taskId:{}, operationType:{}", delegateTask.getId(), operationType); + } + ExtAxHiTaskInst taskInst = hiTaskInstService.getByTaskId(delegateTask.getId(), delegateTask.getProcessInstanceId()); - taskInst.setStatus(String.valueOf(delegateTask.getTransientVariable(TASK_COMPLETE_OPERATION_TYPE))); + if (Objects.nonNull(operationType)) { + taskInst.setStatus(String.valueOf(operationType)); + } else { + // 多实例或签同意时,无法正确区分状态, 所以默认认为这种是无需展示在日志中的 + taskInst.setStatus(DELETED.getStatus()); + } hiTaskInstService.update(taskInst); } } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/StartNodeAutoCompleteEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/StartNodeAutoCompleteEventListener.java index 01749ed21..e4ed58b23 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/StartNodeAutoCompleteEventListener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/StartNodeAutoCompleteEventListener.java @@ -56,7 +56,8 @@ public class StartNodeAutoCompleteEventListener implements BpmnTaskEventListener BpmnTaskDelegateAssigner.class); delegateTask.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + delegateTask.getId(), initiator); - delegateTask.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, APPROVED.getStatus()); + delegateTask.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + delegateTask.getId(), + APPROVED.getStatus()); // 直接完成 taskService.complete(delegateTask.getId(), runtimeService.getVariables(delegateTask.getExecutionId())); }