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 05b3142c8..259d69036 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 @@ -102,14 +102,12 @@ public class CustomRejectionTaskCmd extends AbstractCommand implements Ser validTask(historicTaskInstance, (TaskEntity) task, approver, nodeTypes); ((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), REJECTED.getStatus()); - if (!Objects.equals(operationDesc, "自动驳回")) { - task = createVirtualTask(commandContext, extAxHiTaskInstService, task.getProcessInstanceId(), task.getName(), - task.getTaskDefinitionKey(), advice, approver, REJECTED.getStatus()); - } + Task virtualTask = createVirtualTask(commandContext, extAxHiTaskInstService, task.getProcessInstanceId(), task.getName(), + task.getTaskDefinitionKey(), advice, Objects.equals(operationDesc, "自动驳回") ? null : approver, REJECTED.getStatus()); - addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, operationDesc); + addComment(commandContext, virtualTask, COMMENT_TYPE_OPERATION_DESC, operationDesc); - batchAddAttachment(commandContext, task.getProcessInstanceId(), task.getId(), attachmentList, approver); + batchAddAttachment(commandContext, task.getProcessInstanceId(), virtualTask.getId(), attachmentList, approver); RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); finishProcessInstance(commandContext, runtimeService, task, advice); 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 efad5b23b..0ec02599b 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 @@ -339,23 +339,27 @@ public class CustomTaskHelper { // 创建临时节点 taskService.saveTask(task); - CommandContextUtil.getEntityCache().findInCache(TaskEntity.class).stream() - .filter(i -> Objects.equals(i.getId(), task.getId())).findAny() - .ifPresent(i -> i.setAssignee(assigner.buildAssigneeId())); + if (Objects.nonNull(assigner)) { + CommandContextUtil.getEntityCache().findInCache(TaskEntity.class).stream() + .filter(i -> Objects.equals(i.getId(), task.getId())).findAny() + .ifPresent(i -> i.setAssignee(assigner.buildAssigneeId())); - CommandContextUtil.getEntityCache().findInCache(HistoricTaskInstanceEntity.class).stream() - .filter(i -> Objects.equals(i.getId(), task.getId())).findAny() - .ifPresent(i -> i.setAssignee(assigner.buildAssigneeId())); + CommandContextUtil.getEntityCache().findInCache(HistoricTaskInstanceEntity.class).stream() + .filter(i -> Objects.equals(i.getId(), task.getId())).findAny() + .ifPresent(i -> i.setAssignee(assigner.buildAssigneeId())); + } // 添加审批意见 - addAdvice(commandContext, task, advice, assigner.buildAssigneeId()); + addAdvice(commandContext, task, advice, Objects.nonNull(assigner) ? assigner.buildAssigneeId() : null); CustomTaskHelper.createExtTaskInst(extAxHiTaskInstService, task.getProcessInstanceId(), task.getId(), task.getTaskDefinitionKey(), assigner, extTaskInstStatus); task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), extTaskInstStatus); - // 设置快照信息 - task.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + task.getId(), assigner.toJson()); + if (Objects.nonNull(assigner)) { + // 设置快照信息 + task.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + task.getId(), assigner.toJson()); + } // 完成临时节点 taskService.complete(task.getId()); @@ -384,7 +388,7 @@ public class CustomTaskHelper { entity.setTaskDefinitionKey(taskDefinitionKey); entity.setTaskId(taskId); entity.setStatus(StringUtils.hasLength(status) ? status : PROCESSING.getStatus()); - entity.setAssignee(assignee.buildAssigneeId()); + entity.setAssignee(Objects.nonNull(assignee) ? assignee.buildAssigneeId() : null); extAxHiTaskInstService.save(entity); } }