最近要把Activiti6集成到系统中,遇到了生成追踪流程图片的问题,在5.x版本中可以使用历史流程节点查找ActivityImpl,升级到6.0版本后,pvm包被移除,所以要实现新的图片生成办法。
生成追踪流程图要完成两件事情:已执行的Activity高亮和已流转的Flow高亮。
以下方法是生成完整的追踪图片:博文来源:http://www.fhadmin.org/webnewsdetail1.html
public InputStream getResourceDiagramInputStream(String id) { try { // 获取历史流程实例 HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult(); // 获取流程中已经执行的节点,按照执行先后顺序排序 List<HistoricActivityInstance> historicActivityInstanceList = historyService.createHistoricActivityInstanceQuery().processInstanceId(id).orderByHistoricActivityInstanceId().asc().list(); // 构造已执行的节点ID集合 List<String> executedActivityIdList = new ArrayList<String>(); for (HistoricActivityInstance activityInstance : historicActivityInstanceList) { executedActivityIdList.add(activityInstance.getActivityId()); } // 获取bpmnModel BpmnModel bpmnModel = repositoryService.getBpmnModel(historicProcessInstance.getProcessDefinitionId()); // 获取流程已发生流转的线ID集合 List<String> flowIds = this.getExecutedFlows(bpmnModel, historicActivityInstanceList); // 使用默认配置获得流程图表生成器,并生成追踪图片字符流 ProcessDiagramGenerator processDiagramGenerator = processEngine.getProcessEngineConfiguration().getProcessDiagramGenerator(); InputStream imageStream = processDiagramGenerator.generateDiagram(bpmnModel, "png", executedActivityIdList, flowIds, "宋体", "微软雅黑&