From 5d3ea2f47843b0a383798196a86022975a9e9729 Mon Sep 17 00:00:00 2001 From: wanggeng <450292408@qq.com> Date: Sun, 26 Sep 2021 15:16:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=81=E7=A8=8B=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B=E5=9B=BE=E4=B8=AD=E6=B5=81=E8=BD=AC=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ActivitiModelServiceImpl.java | 44 +++++++------------ 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/ActivitiModelServiceImpl.java b/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/ActivitiModelServiceImpl.java index 8070b9c6..4e43759d 100644 --- a/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/ActivitiModelServiceImpl.java +++ b/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/ActivitiModelServiceImpl.java @@ -188,8 +188,7 @@ public class ActivitiModelServiceImpl extends DefaultBaseService implements IAct List highLightedActivitiIds = new ArrayList<>(); if (processInstance != null) { List activeActivityIds = runtimeService.getActiveActivityIds(processInstance.getId()); - highLightedActivitiIds.addAll(activeActivityIds); - // 获取历史节点 + // 先添加历史节点 List historicActivityInstances = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).list(); if (!historicActivityInstances.isEmpty()) { for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) { @@ -199,6 +198,8 @@ public class ActivitiModelServiceImpl extends DefaultBaseService implements IAct highLightedActivitiIds.add("#" + historicActivityInstance.getActivityId()); } } + // 添加现有节点 + highLightedActivitiIds.addAll(activeActivityIds); } List listSequenceFlows = listSequenceFlows(bpmnModel, highLightedActivitiIds); CustomProcessDiagramGenerator customProcessDiagramGenerator = new CustomProcessDiagramGenerator(); @@ -238,12 +239,12 @@ public class ActivitiModelServiceImpl extends DefaultBaseService implements IAct List flowElementsOfType = bpmnModel.getProcesses().get(0).findFlowElementsOfType(FlowNode.class); List activitiFlowNode = new ArrayList<>(); // 加载高亮的节点 - for (FlowNode flowNode : flowElementsOfType) { - for (String highLightedActivitiId : highLightedActivitiIds) { - String activitiId = highLightedActivitiId; - if (activitiId.startsWith("#")) { - activitiId = highLightedActivitiId.substring(1); - } + for (String highLightedActivitiId : highLightedActivitiIds) { + String activitiId = highLightedActivitiId; + if (activitiId.startsWith("#")) { + activitiId = highLightedActivitiId.substring(1); + } + for (FlowNode flowNode : flowElementsOfType) { if (StringUtils.equals(flowNode.getId(), activitiId)) { activitiFlowNode.add(flowNode); break; @@ -253,26 +254,15 @@ public class ActivitiModelServiceImpl extends DefaultBaseService implements IAct // 找出高亮节点之间的连线 for (int i = 0; i < activitiFlowNode.size() - 1; i++) { FlowNode flowNode = activitiFlowNode.get(i); - List incomingFlows = flowNode.getIncomingFlows(); List outgoingFlows = flowNode.getOutgoingFlows(); - for (int j = 0; j < activitiFlowNode.size(); j++) { - FlowNode nextFlowNode = activitiFlowNode.get(j); - List nextIncomingFlows = nextFlowNode.getIncomingFlows(); - List nextOutgoingFlows = nextFlowNode.getOutgoingFlows(); - // 前节点的出与后节点的入相同,则有关系 - for (SequenceFlow outgoingFlow : outgoingFlows) { - for (SequenceFlow nextIncomingFlow : nextIncomingFlows) { - if (StringUtils.equals(outgoingFlow.getId(), nextIncomingFlow.getId())) { - flowSet.add(outgoingFlow.getId()); - } - } - } - // 前节点的入与后节点的出相同,则有关系 - for (SequenceFlow incomingFlow : incomingFlows) { - for (SequenceFlow nextOutgoingFlow : nextOutgoingFlows) { - if (StringUtils.equals(incomingFlow.getId(), nextOutgoingFlow.getId())) { - flowSet.add(incomingFlow.getId()); - } + + FlowNode nextFlowNode = activitiFlowNode.get(i + 1); + List nextIncomingFlows = nextFlowNode.getIncomingFlows(); + // 前节点的出与后节点的入相同,则有关系 + for (SequenceFlow outgoingFlow : outgoingFlows) { + for (SequenceFlow nextIncomingFlow : nextIncomingFlows) { + if (StringUtils.equals(outgoingFlow.getId(), nextIncomingFlow.getId())) { + flowSet.add(outgoingFlow.getId()); } } }