diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 91bacba67..84fd56111 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -150,6 +150,13 @@ public class ActTaskServiceImpl implements IActTaskService { taskService.complete(newTask.getId()); return true; } + FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); + String businessStatus = WorkflowUtils.getBusinessStatus(task.getProcessInstanceId()); + if (BusinessStatusEnum.DRAFT.getStatus().equals(businessStatus) || BusinessStatusEnum.BACK.getStatus().equals(businessStatus) || BusinessStatusEnum.CANCEL.getStatus().equals(businessStatus)) { + if (processHandler != null) { + processHandler.handleProcess(processInstance.getId(), businessStatus); + } + } runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.WAITING.getStatus()); String key = processInstance.getProcessDefinitionKey() + "_" + task.getTaskDefinitionKey(); FlowTaskEventHandler taskHandler = flowEventStrategy.getTaskHandler(key); @@ -164,14 +171,6 @@ public class ActTaskServiceImpl implements IActTaskService { } else { taskService.complete(completeTaskBo.getTaskId()); } - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); - - String businessStatus = WorkflowUtils.getBusinessStatus(task.getProcessInstanceId()); - if (BusinessStatusEnum.DRAFT.getStatus().equals(businessStatus) || BusinessStatusEnum.BACK.getStatus().equals(businessStatus) || BusinessStatusEnum.CANCEL.getStatus().equals(businessStatus)) { - if (processHandler != null) { - processHandler.handleProcess(processInstance.getId(), businessStatus); - } - } List list = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list(); if (CollUtil.isEmpty(list)) { UpdateBusinessStatusCmd updateBusinessStatusCmd = new UpdateBusinessStatusCmd(task.getProcessInstanceId(), BusinessStatusEnum.FINISH.getStatus());