Commit dff1ff90a7c5eb1fbde851b6640735c4a9f07664
1 parent
1ec94e5b
【代码评审】BPM:review 快搭的实现
Showing
2 changed files
with
12 additions
and
7 deletions
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmApproveMethodEnum.java
| @@ -16,9 +16,9 @@ public enum BpmApproveMethodEnum { | @@ -16,9 +16,9 @@ public enum BpmApproveMethodEnum { | ||
| 16 | 16 | ||
| 17 | SINGLE_PERSON_APPROVE(1, "单人审批"), | 17 | SINGLE_PERSON_APPROVE(1, "单人审批"), |
| 18 | ALL_APPROVE(2, "多人会签(需所有审批人同意)"), // 会签 | 18 | ALL_APPROVE(2, "多人会签(需所有审批人同意)"), // 会签 |
| 19 | - APPROVE_BY_RATIO(3, "多人会签(按比例投票)"), | ||
| 20 | - ANY_APPROVE_ALL_REJECT(4, "多人会签(通过只需一人,拒绝需要全员)"), // 通过只需一人,拒绝需要全员 | ||
| 21 | - ANY_APPROVE(5, "多人或签(一名审批人通过即可)"), // 或签 | 19 | + APPROVE_BY_RATIO(3, "多人会签(按比例投票)"), // 会签(按比例投票) |
| 20 | + ANY_APPROVE_ALL_REJECT(4, "多人会签(通过只需一人,拒绝需要全员)"), // 会签(通过只需一人,拒绝需要全员) | ||
| 21 | + ANY_APPROVE(5, "多人或签(一名审批人通过即可)"), // 或签(通过只需一人,拒绝只需一人) | ||
| 22 | SEQUENTIAL_APPROVE(6, "依次审批"); // 依次审批 | 22 | SEQUENTIAL_APPROVE(6, "依次审批"); // 依次审批 |
| 23 | 23 | ||
| 24 | /** | 24 | /** |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
| @@ -353,26 +353,30 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -353,26 +353,30 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 353 | return; | 353 | return; |
| 354 | } else if (userTaskRejectHandlerType == BpmUserTaskRejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO) { | 354 | } else if (userTaskRejectHandlerType == BpmUserTaskRejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO) { |
| 355 | // 3.3 按拒绝人数比例终止流程 | 355 | // 3.3 按拒绝人数比例终止流程 |
| 356 | - if(!flowElement.hasMultiInstanceLoopCharacteristics()) { | 356 | + // TODO @jason:建议抛出系统异常 |
| 357 | + if (!flowElement.hasMultiInstanceLoopCharacteristics()) { | ||
| 357 | throw exception(TASK_REJECT_HANDLER_TYPE_BY_REJECT_RATIO_ERROR); | 358 | throw exception(TASK_REJECT_HANDLER_TYPE_BY_REJECT_RATIO_ERROR); |
| 358 | } | 359 | } |
| 359 | Execution execution = runtimeService.createExecutionQuery().processInstanceId(task.getProcessInstanceId()) | 360 | Execution execution = runtimeService.createExecutionQuery().processInstanceId(task.getProcessInstanceId()) |
| 360 | .executionId(task.getExecutionId()).singleResult(); | 361 | .executionId(task.getExecutionId()).singleResult(); |
| 361 | - // 获取并行任务总数 | 362 | + // 获取并行任务总数 TODO @jason:这个注释,其实挪到 Execution execution 前面好,更有整体性。 |
| 362 | Integer nrOfInstances = runtimeService.getVariable(execution.getParentId(), "nrOfInstances", Integer.class); | 363 | Integer nrOfInstances = runtimeService.getVariable(execution.getParentId(), "nrOfInstances", Integer.class); |
| 363 | // 获取未完成任务列表 | 364 | // 获取未完成任务列表 |
| 364 | - List<Task> taskList = getAssignedTaskListByConditions(task.getProcessInstanceId(), null, task.getTaskDefinitionKey()); | 365 | + List<Task> taskList = getAssignedTaskListByConditions(task.getProcessInstanceId(), null, |
| 366 | + task.getTaskDefinitionKey()); | ||
| 365 | // 获取已经拒绝的任务数 | 367 | // 获取已经拒绝的任务数 |
| 366 | int rejectNumber = 0; | 368 | int rejectNumber = 0; |
| 369 | + // TODO @jason: CollectionUtils.getSumValue() 替代 | ||
| 367 | for (Task item : taskList) { | 370 | for (Task item : taskList) { |
| 368 | if (Objects.equals(BpmTaskStatusEnum.REJECT.getStatus(), FlowableUtils.getTaskStatus(item))) { | 371 | if (Objects.equals(BpmTaskStatusEnum.REJECT.getStatus(), FlowableUtils.getTaskStatus(item))) { |
| 369 | rejectNumber ++; | 372 | rejectNumber ++; |
| 370 | } | 373 | } |
| 371 | } | 374 | } |
| 375 | + // TODO @jason:如果这样的话,后续会不会在【已完成】里面查询不到哈?【重要!!!!】 | ||
| 372 | // 拒绝任务后,任务分配人清空。但不能完成任务 | 376 | // 拒绝任务后,任务分配人清空。但不能完成任务 |
| 373 | taskService.setAssignee(task.getId(), ""); | 377 | taskService.setAssignee(task.getId(), ""); |
| 374 | // 不是所有人拒绝返回。 TODO 后续需要做按拒绝人数比例来判断 | 378 | // 不是所有人拒绝返回。 TODO 后续需要做按拒绝人数比例来判断 |
| 375 | - if(!Objects.equals(nrOfInstances, rejectNumber)) { | 379 | + if (!Objects.equals(nrOfInstances, rejectNumber)) { |
| 376 | return; | 380 | return; |
| 377 | } | 381 | } |
| 378 | } | 382 | } |
| @@ -478,6 +482,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -478,6 +482,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 478 | return taskService.createTaskQuery().taskId(id).includeTaskLocalVariables().singleResult(); | 482 | return taskService.createTaskQuery().taskId(id).includeTaskLocalVariables().singleResult(); |
| 479 | } | 483 | } |
| 480 | 484 | ||
| 485 | + // TODO @jason:改成 getTaskListByProcessInstanceIdAndAssigned;其它条件就不写了。主要考虑,还是动名词 | ||
| 481 | @Override | 486 | @Override |
| 482 | public List<Task> getAssignedTaskListByConditions(String processInstanceId, String executionId, String defineKey) { | 487 | public List<Task> getAssignedTaskListByConditions(String processInstanceId, String executionId, String defineKey) { |
| 483 | Assert.notNull(processInstanceId, "processInstanceId 不能为空"); | 488 | Assert.notNull(processInstanceId, "processInstanceId 不能为空"); |