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

This commit is contained in:
YunaiV 2024-06-06 20:17:53 +08:00
parent 1ec94e5bbc
commit dff1ff90a7
2 changed files with 12 additions and 7 deletions

View File

@ -16,9 +16,9 @@ public enum BpmApproveMethodEnum {
SINGLE_PERSON_APPROVE(1, "单人审批"), SINGLE_PERSON_APPROVE(1, "单人审批"),
ALL_APPROVE(2, "多人会签(需所有审批人同意)"), // 会签 ALL_APPROVE(2, "多人会签(需所有审批人同意)"), // 会签
APPROVE_BY_RATIO(3, "多人会签(按比例投票)"), APPROVE_BY_RATIO(3, "多人会签(按比例投票)"), // 会签按比例投票
ANY_APPROVE_ALL_REJECT(4, "多人会签(通过只需一人,拒绝需要全员)"), // 通过只需一人拒绝需要全员 ANY_APPROVE_ALL_REJECT(4, "多人会签(通过只需一人,拒绝需要全员)"), // 会签通过只需一人拒绝需要全员
ANY_APPROVE(5, "多人或签(一名审批人通过即可)"), // 或签 ANY_APPROVE(5, "多人或签(一名审批人通过即可)"), // 或签通过只需一人拒绝只需一人
SEQUENTIAL_APPROVE(6, "依次审批"); // 依次审批 SEQUENTIAL_APPROVE(6, "依次审批"); // 依次审批
/** /**

View File

@ -353,22 +353,26 @@ public class BpmTaskServiceImpl implements BpmTaskService {
return; return;
} else if (userTaskRejectHandlerType == BpmUserTaskRejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO) { } else if (userTaskRejectHandlerType == BpmUserTaskRejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO) {
// 3.3 按拒绝人数比例终止流程 // 3.3 按拒绝人数比例终止流程
// TODO @jason建议抛出系统异常
if (!flowElement.hasMultiInstanceLoopCharacteristics()) { if (!flowElement.hasMultiInstanceLoopCharacteristics()) {
throw exception(TASK_REJECT_HANDLER_TYPE_BY_REJECT_RATIO_ERROR); throw exception(TASK_REJECT_HANDLER_TYPE_BY_REJECT_RATIO_ERROR);
} }
Execution execution = runtimeService.createExecutionQuery().processInstanceId(task.getProcessInstanceId()) Execution execution = runtimeService.createExecutionQuery().processInstanceId(task.getProcessInstanceId())
.executionId(task.getExecutionId()).singleResult(); .executionId(task.getExecutionId()).singleResult();
// 获取并行任务总数 // 获取并行任务总数 TODO @jason这个注释其实挪到 Execution execution 前面好更有整体性
Integer nrOfInstances = runtimeService.getVariable(execution.getParentId(), "nrOfInstances", Integer.class); Integer nrOfInstances = runtimeService.getVariable(execution.getParentId(), "nrOfInstances", Integer.class);
// 获取未完成任务列表 // 获取未完成任务列表
List<Task> taskList = getAssignedTaskListByConditions(task.getProcessInstanceId(), null, task.getTaskDefinitionKey()); List<Task> taskList = getAssignedTaskListByConditions(task.getProcessInstanceId(), null,
task.getTaskDefinitionKey());
// 获取已经拒绝的任务数 // 获取已经拒绝的任务数
int rejectNumber = 0; int rejectNumber = 0;
// TODO @jason: CollectionUtils.getSumValue() 替代
for (Task item : taskList) { for (Task item : taskList) {
if (Objects.equals(BpmTaskStatusEnum.REJECT.getStatus(), FlowableUtils.getTaskStatus(item))) { if (Objects.equals(BpmTaskStatusEnum.REJECT.getStatus(), FlowableUtils.getTaskStatus(item))) {
rejectNumber ++; rejectNumber ++;
} }
} }
// TODO @jason如果这样的话后续会不会在已完成里面查询不到哈重要
// 拒绝任务后,任务分配人清空但不能完成任务 // 拒绝任务后,任务分配人清空但不能完成任务
taskService.setAssignee(task.getId(), ""); taskService.setAssignee(task.getId(), "");
// 不是所有人拒绝返回 TODO 后续需要做按拒绝人数比例来判断 // 不是所有人拒绝返回 TODO 后续需要做按拒绝人数比例来判断
@ -478,6 +482,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
return taskService.createTaskQuery().taskId(id).includeTaskLocalVariables().singleResult(); return taskService.createTaskQuery().taskId(id).includeTaskLocalVariables().singleResult();
} }
// TODO @jason改成 getTaskListByProcessInstanceIdAndAssigned其它条件就不写了主要考虑还是动名词
@Override @Override
public List<Task> getAssignedTaskListByConditions(String processInstanceId, String executionId, String defineKey) { public List<Task> getAssignedTaskListByConditions(String processInstanceId, String executionId, String defineKey) {
Assert.notNull(processInstanceId, "processInstanceId 不能为空"); Assert.notNull(processInstanceId, "processInstanceId 不能为空");