Commit dff1ff90a7c5eb1fbde851b6640735c4a9f07664

Authored by YunaiV
1 parent 1ec94e5b

【代码评审】BPM:review 快搭的实现

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 不能为空");