需求是这样的,查询一个流程,图形化显示流程,并能标识当前流程的哪个节点
流程图:

子流程:

代码:
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
//创建流程引擎
ProcessEngine processEngine = createProcessEngine();
//部署流程文件
ProcessDefinition processDefinition = deployProcessDefinition(processEngine);
//启动流程
ProcessInstance processInstance = startProcessInstance(processEngine,processDefinition);
//处理任务
//dealTask(processEngine,null);
Task task = processEngine.getTaskService().createTaskQuery().singleResult();
log.info("taskName:【{}】",task.getName());
processEngine.getTaskService().complete(task.getId());
InputStream image = generateProcessDiagram(processEngine,processInstance.getId());
try {
FileUtils.copyInputStreamToFile(image, new File("D:/d.png"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static InputStream generateProcessDiagram(ProcessEngine processEngine, String processInstanceId) {
// TODO Auto-generated method stub
//获取历史流程实例
HistoricProcessInstance historicProcessInstance = processEngine.getHistoryService().createHistoricProcessInstanceQuery()
.processInstanceId(processInstanceId).singleResult();
log.info("历史流程id:【{}】",historicProcessInstance.getId());
//获取历史流程定义
ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl)
processEngine.getRepositoryService()).getDeployedProcessDefinition(historicProcessInstance
.getProcessDefinitionId());
//查询历史节点
List<HistoricActivityInstance> historicActivityInstanceList = processEngine.getHistoryService().createHistoricActivityInsta