参考https://blog.csdn.net/sessionsong/article/details/104681140
但版本和我用的不一样,这边的用的是7.1.0.M6,应该生成svg格式的图片。补充一下这个版本的做法
- 除了必要的依赖之外还需要:
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-image-generator</artifactId>
<version>7.1.0.M6</version>
</dependency>
- 参考代码:
参考链接中的方法出来的svg中文显示有问题,所以在return generator.generateDiagram
这句的方法参数里要设置一下字体
public void createActivitiImg() throws IOException {
InputStream inputStream = getProcessDiagram("92513");
File file = new File("D://a.svg");
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file, false);//true表示在文件末尾追加
byte[] bList = new byte[100];
while (inputStream.read(bList)!=-1){
fos.write(bList);
}
fos.close();
inputStream.close();
}
/**
* Get Process instance diagram
*/
public InputStream getProcessDiagram(String processInstanceId) {
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId).singleResult();
// null check
if (processInstance != null) {
// get process model
BpmnModel model = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
if (model != null && model.getLocationMap().size() > 0) {
ProcessDiagramGenerator generator = new DefaultProcessDiagramGenerator();
// 生成流程图 已启动的task 高亮
// return generator.generateDiagram(model,
// runtimeService.getActiveActivityIds(processInstanceId));
// 生成流程图 都不高亮
return generator.generateDiagram(model, "宋体","宋体","宋体");
}
}
return null;
}