Commit f0c26d5b5ac7fcc44d8a9f807c9ca49a6988219b

Authored by YunaiV
1 parent 2cf5e17f

【代码评审】BPM:子流程的代码

yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java
... ... @@ -42,7 +42,7 @@ public interface ErrorCodeConstants {
42 42 ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_ALLOW = new ErrorCode(1_009_004_005, "流程取消失败,该流程不允许取消");
43 43 ErrorCode PROCESS_INSTANCE_HTTP_TRIGGER_CALL_ERROR = new ErrorCode(1_009_004_006, "流程 Http 触发器请求调用失败");
44 44 ErrorCode PROCESS_INSTANCE_APPROVE_USER_SELECT_ASSIGNEES_NOT_CONFIG = new ErrorCode(1_009_004_007, "下一个任务({})的审批人未配置");
45   - ErrorCode CHILD_PROCESS_INSTANCE_CANCEL_FAIL_NOT_ALLOW = new ErrorCode(1_009_004_008, "子流程取消失败,子流程不允许取消");
  45 + ErrorCode PROCESS_INSTANCE_CANCEL_CHILD_FAIL_NOT_ALLOW = new ErrorCode(1_009_004_008, "子流程取消失败,子流程不允许取消");
46 46  
47 47 // ========== 流程任务 1-009-005-000 ==========
48 48 ErrorCode TASK_OPERATE_FAIL_ASSIGN_NOT_SELF = new ErrorCode(1_009_005_001, "操作失败,原因:该任务的审批人不是你");
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO.java
... ... @@ -73,7 +73,7 @@ public class BpmApprovalDetailRespVO {
73 73 private List<UserSimpleBaseVO> candidateUsers; // 只包含未生成 ApprovalTaskInfo 的用户列表
74 74  
75 75 @Schema(description = "流程编号", example = "8761d8e0-0922-11f0-bd37-00ff1db677bf")
76   - private String processInstanceId;
  76 + private String processInstanceId; // 当且仅当,该节点是子流程节点时,才会有值(CallActivity 的 processInstanceId 字段)
77 77  
78 78 }
79 79  
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
... ... @@ -453,6 +453,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
453 453 approvalNodes.add(callActivity);
454 454 }
455 455 });
  456 +
  457 + // 按照时间排序
456 458 approvalNodes.sort(Comparator.comparing(ActivityNode::getStartTime));
457 459 return approvalNodes;
458 460 }
... ... @@ -836,7 +838,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
836 838 }
837 839 // 1.4 子流程不允许取消
838 840 if (StrUtil.isNotBlank(instance.getSuperExecutionId())) {
839   - throw exception(CHILD_PROCESS_INSTANCE_CANCEL_FAIL_NOT_ALLOW);
  841 + throw exception(PROCESS_INSTANCE_CANCEL_CHILD_FAIL_NOT_ALLOW);
840 842 }
841 843  
842 844 // 2. 取消流程
... ... @@ -865,13 +867,10 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
865 867 runtimeService.setVariable(id, BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_REASON, reason);
866 868  
867 869 // 2. 取消所有子流程
868   - List<ProcessInstance> subProcessInstances = runtimeService.createProcessInstanceQuery()
869   - .superProcessInstanceId(id)
870   - .list();
871   - subProcessInstances.forEach(processInstance -> {
872   - updateProcessInstanceCancel(processInstance.getProcessInstanceId(),
873   - BpmReasonEnum.CANCEL_CHILD_PROCESS_INSTANCE_BY_MAIN_PROCESS.getReason());
874   - });
  870 + List<ProcessInstance> childProcessInstances = runtimeService.createProcessInstanceQuery()
  871 + .superProcessInstanceId(id).list();
  872 + childProcessInstances.forEach(processInstance -> updateProcessInstanceCancel(
  873 + processInstance.getProcessInstanceId(), BpmReasonEnum.CANCEL_CHILD_PROCESS_INSTANCE_BY_MAIN_PROCESS.getReason()));
875 874  
876 875 // 3. 结束流程
877 876 taskService.moveTaskToEnd(id, reason);
... ...