Browse Source

fix: 存在子流程情况下的取消逻辑优化

Lesan 4 months ago
parent
commit
b471dc55c3

+ 1 - 1
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmReasonEnum.java

@@ -18,7 +18,7 @@ public enum BpmReasonEnum {
     REJECT_TASK("审批不通过任务,原因:{}"), // 场景:用户审批不通过任务。修改文案时,需要注意 isRejectReason 方法
     CANCEL_PROCESS_INSTANCE_BY_START_USER("用户主动取消流程,原因:{}"), // 场景:用户主动取消流程
     CANCEL_PROCESS_INSTANCE_BY_ADMIN("管理员【{}】取消流程,原因:{}"), // 场景:管理员取消流程
-    CANCEL_CHILD_PROCESS_INSTANCE_BY_MAIN_PROCESS("子流程自动取消,原因:流程已取消"),
+    CANCEL_CHILD_PROCESS_INSTANCE_BY_MAIN_PROCESS("子流程自动取消,原因:流程已取消"),
 
     // ========== 流程任务的独有原因 ==========
 

+ 4 - 4
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java

@@ -853,10 +853,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
                 BpmProcessInstanceStatusEnum.CANCEL.getStatus());
         runtimeService.setVariable(id, BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_REASON, reason);
 
-        // 2. 结束流程
-        taskService.moveTaskToEnd(id, reason);
-
-        // 3. 取消所有子流程
+        // 2. 取消所有子流程
         List<ProcessInstance> subProcessInstances = runtimeService.createProcessInstanceQuery()
                 .superProcessInstanceId(id)
                 .list();
@@ -864,6 +861,9 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
             updateProcessInstanceCancel(processInstance.getProcessInstanceId(),
                     BpmReasonEnum.CANCEL_CHILD_PROCESS_INSTANCE_BY_MAIN_PROCESS.getReason());
         });
+
+        // 3. 结束流程
+        taskService.moveTaskToEnd(id, reason);
     }
 
     @Override