activiti7 导出bpmn文件
阅读原文时间:2023年07月10日阅读:3

最近在学习springboot+activiti7整合,想做一个导出bpmn文件的功能,查了相关资料,最后没有实现。最后查看了一下代码 找到了方法 如下所示

@GetMapping("export")
@Transactional
public void export(@RequestParam("definitionId") String processInstanceId, HttpServletResponse response) {
BufferedOutputStream bos = null;
try {

    try {  
        RepositoryService repositoryService = ProcessEngines.getDefaultProcessEngine().getRepositoryService();  
        //  
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processInstanceId).singleResult();  
        InputStream inputStream = repositoryService  
                .getProcessModel(processInstanceId);  
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();  
        byte\[\] bpmnBytes = new byte\[1024\]; //buff用于存放循环读取的临时数据  
        int rc = 0;  
        while ((rc = inputStream.read(bpmnBytes, 0, 100)) > 0) {  
            swapStream.write(bpmnBytes, 0, rc);  
        }  
        byte\[\] in\_b = swapStream.toByteArray(); //in\_b为转换之后的结果  
        // 封装输出流  
        bos = new BufferedOutputStream(response.getOutputStream());  
        bos.write(in\_b);// 写入流

        String filename = processDefinition.getName() + ".bpmn";  
        response.setContentType("application/x-msdownload;");  
        response.setHeader("Content-Disposition",  
                "attachment; filename=" + filename);  
        response.flushBuffer();

    } finally {  
        bos.flush();  
        bos.close();  
    }

} catch (Exception e) {  
    System.out.println("导出文件失败");  
    e.printStackTrace();  
}  

}
其中

InputStream inputStream = repositoryService
.getProcessModel(processInstanceId); 可以获取bpmn文件流 直接操作导出即可