|
@@ -8,6 +8,7 @@ import org.activiti.engine.ProcessEngineConfiguration;
|
|
|
import org.activiti.engine.RepositoryService;
|
|
|
import org.activiti.engine.history.HistoricActivityInstance;
|
|
|
import org.activiti.engine.history.HistoricProcessInstance;
|
|
|
+import org.activiti.engine.history.HistoricTaskInstance;
|
|
|
import org.activiti.image.ProcessDiagramGenerator;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
@@ -52,26 +53,37 @@ public class ActivitiTracingChart {
|
|
|
}
|
|
|
// 获取历史流程实例
|
|
|
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId)
|
|
|
- .singleResult();
|
|
|
+ .singleResult();
|
|
|
// 获取流程中已经执行的节点
|
|
|
List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery()
|
|
|
- .processInstanceId(processInstanceId)
|
|
|
- .orderByHistoricActivityInstanceStartTime().asc().list();
|
|
|
+ .processInstanceId(processInstanceId)
|
|
|
+ .orderByHistoricActivityInstanceStartTime().asc().list();
|
|
|
+
|
|
|
+
|
|
|
+ List<HistoricTaskInstance> historicTaskInstances = historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).list();
|
|
|
+
|
|
|
+
|
|
|
+ List<HistoricActivityInstance> instanceList = new ArrayList<>();
|
|
|
+
|
|
|
// 高亮已经执行流程节点ID集合
|
|
|
List<String> highLightedActivitiIds = new ArrayList<>();
|
|
|
for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) {
|
|
|
- highLightedActivitiIds.add(historicActivityInstance.getActivityId());
|
|
|
+ if (historicTaskInstances.stream().anyMatch(i -> i.getId().equals(historicActivityInstance.getTaskId()))) {
|
|
|
+ highLightedActivitiIds.add(historicActivityInstance.getActivityId());
|
|
|
+ instanceList.add(historicActivityInstance);
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
ProcessDiagramGenerator processDiagramGenerator = processEngineConfiguration.getProcessDiagramGenerator();
|
|
|
|
|
|
BpmnModel bpmnModel = repositoryService.getBpmnModel(historicProcessInstance.getProcessDefinitionId());
|
|
|
// 高亮流程已发生流转的线id集合
|
|
|
- List<String> highLightedFlowIds = getHighLightedFlows(bpmnModel, historicActivityInstances);
|
|
|
+ List<String> highLightedFlowIds = getHighLightedFlows(bpmnModel, instanceList);
|
|
|
|
|
|
// 使用默认配置获得流程图表生成器,并生成追踪图片字符流
|
|
|
InputStream imageStream = processDiagramGenerator
|
|
|
- .generateDiagram(bpmnModel, "png", highLightedActivitiIds, highLightedFlowIds, "宋体", "微软雅黑", "黑体", null, 2.0);
|
|
|
+ .generateDiagram(bpmnModel, "png", highLightedActivitiIds, highLightedFlowIds, "宋体", "微软雅黑", "黑体", null, 2.0);
|
|
|
|
|
|
// 输出图片内容
|
|
|
byte[] b = new byte[1024];
|