本文建议你熟悉Activiti之后在阅读,是Activiti的应用篇。直接上应用代码,包含生成流程跟踪图功能。Springboot搭建Activiti整合流程设计器 请查看这篇博客https://blog.csdn.net/yy756127197/article/details/101211510
后台服务基于Springboot2 + Mybatis-plus3 + Lombok + Swagger + Hutool工具类
1. 代码
/**
* ActivitiConstant.LEAVE_BUSINESSKEY = "leave." 是businessKey前缀
*
* @param id 业务ID
* @param response
* @throws Exception
*/
@ApiOperation(value = "读取带跟踪的图片", notes = "读取带跟踪的图片")
@GetMapping(value = "/process/trace/auto/{id}")
public void readResource(@PathVariable("id") String id, HttpServletResponse response)
throws Exception {
// 流程businessKey
String businessKey = ActivitiConstant.LEAVE_BUSINESSKEY + id;
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceBusinessKey(businessKey)
.singleResult();
InputStream imageStream;
// 存活
if (processInstance != null) {
BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
List<String> activeActivityIds = runtimeService.getActiveActivityIds(processInstance.getId());
// 不使用spring请使用下面的两行代码
// ProcessEngineImpl defaultProcessEngine = (ProcessEngineImpl) ProcessEngines.getDefaultProcessEngine();
// Context.setProcessEngineConfiguration(defaultProcessEngine.getProcessEngineConfiguration());
// 使用spring注入引擎请使用下面的这行代码
ProcessEngineConfiguration processEngineConfiguration = processEngine.getProcessEngineConfiguration();
Context.setProcessEngineConfiguration((ProcessEngineConfigurationImpl) processEngineConfiguration);
ProcessDiagramGenerator diagramGenerator = processEngineConfiguration.getProcessDiagramGenerator();
imageStream = diagramGenerator.generateDiagram(bpmnModel, "png", activeActivityIds,
Collections.<String>emptyList(), "宋体", "宋体", "宋体", null, 1.0);
} else {
HistoricProcessInstance historyProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceBusinessKey(businessKey)
.singleResult();
imageStream = actReProcdefService.readResource(historyProcessInstance.getProcessDefinitionId(),
null, ActivitiConstant.IMAGE);
}
// 输出资源内容到相应对象
byte[] b = new byte[1024];
int len;
while ((len = imageStream.read(b, 0, 1024)) != -1) {
response.getOutputStream().write(b, 0, len);
}
}
源码地址
IT-CLOUD :IT服务管理平台,集成基础服务,中间件服务,监控告警服务等。
开源项目,持续更新中,喜欢请 Star~