Commit f0c26d5b5ac7fcc44d8a9f807c9ca49a6988219b
1 parent
2cf5e17f
【代码评审】BPM:子流程的代码
Showing
3 changed files
with
9 additions
and
10 deletions
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,7 +42,7 @@ public interface ErrorCodeConstants { | ||
| 42 | ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_ALLOW = new ErrorCode(1_009_004_005, "流程取消失败,该流程不允许取消"); | 42 | ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_ALLOW = new ErrorCode(1_009_004_005, "流程取消失败,该流程不允许取消"); |
| 43 | ErrorCode PROCESS_INSTANCE_HTTP_TRIGGER_CALL_ERROR = new ErrorCode(1_009_004_006, "流程 Http 触发器请求调用失败"); | 43 | ErrorCode PROCESS_INSTANCE_HTTP_TRIGGER_CALL_ERROR = new ErrorCode(1_009_004_006, "流程 Http 触发器请求调用失败"); |
| 44 | ErrorCode PROCESS_INSTANCE_APPROVE_USER_SELECT_ASSIGNEES_NOT_CONFIG = new ErrorCode(1_009_004_007, "下一个任务({})的审批人未配置"); | 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 | // ========== 流程任务 1-009-005-000 ========== | 47 | // ========== 流程任务 1-009-005-000 ========== |
| 48 | ErrorCode TASK_OPERATE_FAIL_ASSIGN_NOT_SELF = new ErrorCode(1_009_005_001, "操作失败,原因:该任务的审批人不是你"); | 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,7 +73,7 @@ public class BpmApprovalDetailRespVO { | ||
| 73 | private List<UserSimpleBaseVO> candidateUsers; // 只包含未生成 ApprovalTaskInfo 的用户列表 | 73 | private List<UserSimpleBaseVO> candidateUsers; // 只包含未生成 ApprovalTaskInfo 的用户列表 |
| 74 | 74 | ||
| 75 | @Schema(description = "流程编号", example = "8761d8e0-0922-11f0-bd37-00ff1db677bf") | 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,6 +453,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 453 | approvalNodes.add(callActivity); | 453 | approvalNodes.add(callActivity); |
| 454 | } | 454 | } |
| 455 | }); | 455 | }); |
| 456 | + | ||
| 457 | + // 按照时间排序 | ||
| 456 | approvalNodes.sort(Comparator.comparing(ActivityNode::getStartTime)); | 458 | approvalNodes.sort(Comparator.comparing(ActivityNode::getStartTime)); |
| 457 | return approvalNodes; | 459 | return approvalNodes; |
| 458 | } | 460 | } |
| @@ -836,7 +838,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -836,7 +838,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 836 | } | 838 | } |
| 837 | // 1.4 子流程不允许取消 | 839 | // 1.4 子流程不允许取消 |
| 838 | if (StrUtil.isNotBlank(instance.getSuperExecutionId())) { | 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 | // 2. 取消流程 | 844 | // 2. 取消流程 |
| @@ -865,13 +867,10 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -865,13 +867,10 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 865 | runtimeService.setVariable(id, BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_REASON, reason); | 867 | runtimeService.setVariable(id, BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_REASON, reason); |
| 866 | 868 | ||
| 867 | // 2. 取消所有子流程 | 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 | // 3. 结束流程 | 875 | // 3. 结束流程 |
| 877 | taskService.moveTaskToEnd(id, reason); | 876 | taskService.moveTaskToEnd(id, reason); |