From 768b55c58ffd19fdf31074bb0b42ec9ac9f83e86 Mon Sep 17 00:00:00 2001 From: wanggeng <450292408@qq.com> Date: Sun, 26 Sep 2021 17:25:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=AE=9E=E4=BE=8B=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=9B=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ActivitiModelServiceImpl.java | 18 +++++++++++++++--- .../impl/CustomProcessDiagramGenerator.java | 4 ++-- 2 files changed, 17 insertions(+), 5 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 4e43759d..2fdd3be2 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 @@ -166,10 +166,11 @@ public class ActivitiModelServiceImpl extends DefaultBaseService implements IAct public InputStream getRuntimeProcessImageInputStream(String processInstanceId) { //获得流程实例 ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + HistoricProcessInstance processInstanceHistory; String processDefinitionId; if (processInstance == null) { //查询已经结束的流程实例 - HistoricProcessInstance processInstanceHistory = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + processInstanceHistory = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); if (processInstanceHistory == null) { return null; } else { @@ -187,6 +188,7 @@ public class ActivitiModelServiceImpl extends DefaultBaseService implements IAct //获取流程实例当前的节点,需要高亮显示 List highLightedActivitiIds = new ArrayList<>(); if (processInstance != null) { + // 正在运行的流程 List activeActivityIds = runtimeService.getActiveActivityIds(processInstance.getId()); // 先添加历史节点 List historicActivityInstances = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).list(); @@ -195,11 +197,21 @@ public class ActivitiModelServiceImpl extends DefaultBaseService implements IAct if (isActiveActivityId(historicActivityInstance.getActivityId(), activeActivityIds)) { continue; } - highLightedActivitiIds.add("#" + historicActivityInstance.getActivityId()); + highLightedActivitiIds.add(historicActivityInstance.getActivityId()); } } // 添加现有节点 - highLightedActivitiIds.addAll(activeActivityIds); + for (String activeActivityId : activeActivityIds) { + highLightedActivitiIds.add("#" + activeActivityId); + } + } else { + // 历史流程 + List historicActivityInstances = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).list(); + if (!historicActivityInstances.isEmpty()) { + for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) { + highLightedActivitiIds.add(historicActivityInstance.getActivityId()); + } + } } List listSequenceFlows = listSequenceFlows(bpmnModel, highLightedActivitiIds); CustomProcessDiagramGenerator customProcessDiagramGenerator = new CustomProcessDiagramGenerator(); diff --git a/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/CustomProcessDiagramGenerator.java b/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/CustomProcessDiagramGenerator.java index f4d395ab..f5d8a3bb 100644 --- a/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/CustomProcessDiagramGenerator.java +++ b/module-activiti/src/main/java/ink/wgink/module/activiti/service/activiti/impl/CustomProcessDiagramGenerator.java @@ -555,11 +555,11 @@ public class CustomProcessDiagramGenerator implements ProcessDiagramGenerator { } // Draw highlighted activities - if (highLightedActivities.contains(flowNode.getId())) { + if (highLightedActivities.contains("#" + flowNode.getId())) { drawHighLight(processDiagramCanvas, bpmnModel.getGraphicInfo(flowNode.getId())); } // Drow highlighted history activities - if (highLightedActivities.contains("#" + flowNode.getId())) { + if (highLightedActivities.contains(flowNode.getId())) { drawHighLightHistory(processDiagramCanvas, bpmnModel.getGraphicInfo(flowNode.getId())); } }