有時候爲了方便申請人查看當前流程走到哪個節點,比較直觀的辦法就是高亮當前節點,當然activiti也提供了API供我們調用
生成圖片示例代碼:
public byte[] generateImage(String processInstanceId){
//1.創建核心引擎流程對象processEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
//流程定義
BpmnModel bpmnModel = processEngine.getRepositoryService().getBpmnModel(task.getProcessDefinitionId());
//正在活動節點
List<String> activeActivityIds = processEngine.getRuntimeService().getActiveActivityIds(task.getExecutionId());
ProcessDiagramGenerator pdg = processEngine.getProcessEngineConfiguration().getProcessDiagramGenerator();
//生成流圖片
InputStream inputStream = pdg.generateDiagram(bpmnModel, "PNG", activeActivityIds, activeActivityIds,
processEngine.getProcessEngineConfiguration().getActivityFontName(),
processEngine.getProcessEngineConfiguration().getLabelFontName(),
processEngine.getProcessEngineConfiguration().getActivityFontName(),
processEngine.getProcessEngineConfiguration().getProcessEngineConfiguration().getClassLoader(), 1.0);
try {
//生成本地圖片
File file = new File("D:/test.png");
FileUtils.copyInputStreamToFile(inputStream, file);
return IOUtils.toByteArray(inputStream);
} catch (Exception e) {
throw new RuntimeException("生成流程圖異常!", e);
} finally {
IOUtils.closeQuietly(inputStream);
}
}