update - 优化流程实例推测 API 的执行可过滤一些节点的查询人

This commit is contained in:
wangli 2024-04-17 18:14:33 +08:00
parent 2f92461d47
commit c01718265b

View File

@ -785,7 +785,6 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
List<ProcessNodeDetailVO> resultList = new ArrayList<>(flowElements.size()); List<ProcessNodeDetailVO> resultList = new ArrayList<>(flowElements.size());
// 发起人节点,也是一个 UserTask 节点, 所以这里默认就包含了发起人节点 // 发起人节点,也是一个 UserTask 节点, 所以这里默认就包含了发起人节点
flowElements.stream() flowElements.stream()
.filter(i -> !nodeDefinitionKeys.contains(i.getId()))
.filter(i -> (i instanceof UserTask || i instanceof ReceiveTask || i instanceof ServiceTask)) .filter(i -> (i instanceof UserTask || i instanceof ReceiveTask || i instanceof ServiceTask))
.forEach(i -> { .forEach(i -> {
ProcessNodeDetailVO node = new ProcessNodeDetailVO(); ProcessNodeDetailVO node = new ProcessNodeDetailVO();
@ -801,18 +800,21 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
node.setNodeMode(GENERAL); node.setNodeMode(GENERAL);
node.setId(i.getId()).setName(i.getName()); node.setId(i.getId()).setName(i.getName());
if (i instanceof UserTask) { if (i instanceof UserTask) {
parseUserTask(processInstanceId, (UserTask) i, node); parseUserTask(processInstanceId, (UserTask) i, node, nodeDefinitionKeys);
} else if (i instanceof ServiceTask) { } else if (i instanceof ServiceTask) {
parseServiceTask(processInstanceId, (ServiceTask) i, node); parseServiceTask(processInstanceId, (ServiceTask) i, node, nodeDefinitionKeys);
} }
resultList.add(node); resultList.add(node);
}); });
return resultList; return resultList;
} }
private void parseServiceTask(String processInstanceId, ServiceTask i, ProcessNodeDetailVO node) { private void parseServiceTask(String processInstanceId, ServiceTask i, ProcessNodeDetailVO node, List<String> skipTaskDefinitionKeys) {
// ServiceTask 主要作用于抄送 // ServiceTask 主要作用于抄送
node.setId(i.getId()).setName(i.getName()); node.setId(i.getId()).setName(i.getName());
if (skipTaskDefinitionKeys.contains(i.getId())) {
return;
}
getCarbonCopyConfigs(i).ifPresent(carbons -> getCarbonCopyConfigs(i).ifPresent(carbons ->
node.setForecastAssigners(springProcessEngineConfiguration.getCommandExecutor() node.setForecastAssigners(springProcessEngineConfiguration.getCommandExecutor()
.execute(new CustomCarbonCopyUserSelectorCmd(processInstanceId, carbons, .execute(new CustomCarbonCopyUserSelectorCmd(processInstanceId, carbons,
@ -820,7 +822,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
historicTaskInstanceConverter, serviceVersion)))); historicTaskInstanceConverter, serviceVersion))));
} }
private void parseUserTask(String processInstanceId, UserTask i, ProcessNodeDetailVO node) { private void parseUserTask(String processInstanceId, UserTask i, ProcessNodeDetailVO node, List<String> skipTaskDefinitionKeys) {
node.setFormKey(i.getFormKey()); node.setFormKey(i.getFormKey());
// 设置审批模式, // 设置审批模式,
if (i.getBehavior() instanceof MultiInstanceActivityBehavior) { if (i.getBehavior() instanceof MultiInstanceActivityBehavior) {
@ -833,6 +835,9 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
node.setNodeMode(BpmnFlowNodeMode.GENERAL); node.setNodeMode(BpmnFlowNodeMode.GENERAL);
} }
if (skipTaskDefinitionKeys.contains(i.getId())) {
return;
}
if (Objects.equals(node.getApprovalMethod(), human)) { if (Objects.equals(node.getApprovalMethod(), human)) {
// 推测当前节点的审批人,并且如果审批人为空,也会根据审批人为空的策略去找人 // 推测当前节点的审批人,并且如果审批人为空,也会根据审批人为空的策略去找人
List<BpmnTaskDelegateAssigner> forecastAssigners = List<BpmnTaskDelegateAssigner> forecastAssigners =