下载流程定义资源文件
有两种方式
方案1 使用activiti提供的api来下载资源文件 方案2 自己写代码从数据库中下载文件,使用jdbc对blob和clob类型数据读取出来,保存到文件目录 需要解决io操作:使用commons-io.jar
网络异常,图片无法展示
|
因为上面已经把我们的流程删除了,我们需要重新执行代码部署一个新的流程,重新执行部署和启动(实例化)
网络异常,图片无法展示
|
这里我们选择使用activiti提供的api进行操作
首先引入commons-io解决io操作
<!--通过commons-io解决io问题--> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency>
然后就可以写代码了,我们直接在代码指定输出目录.即D盘
// 下载流程资源文件 // 方案1 使用activiti提供的api来下载资源文件 // 方案2 自己写代码从数据库中下载文件,使用jdbc对blob和clob类型数据读取出来,保存到文件目录 // 需要解决io操作:使用commons-io.jar // 这里我们选择使用方案1去操作 @Test public void downloadProcessFile() throws Exception { // 获取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 获取RepositoryService RepositoryService repositoryService = processEngine.getRepositoryService(); // 获取查询对象ProcessDefinitionQuery,查询流程定义信息 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() .processDefinitionKey("myEvection") .singleResult(); // 通过流程定义信息,获取部署ID String deploymentId = processDefinition.getDeploymentId(); // 通过RepositoryService,传递ID参数,读取资源文件(png和bpmn) // 从流程定义中,获取图片png图片的目录和名字 String pngResourceName = processDefinition.getDiagramResourceName(); // 通过部署id和文件名称获取png图片的流 InputStream pngInInputStream = repositoryService.getResourceAsStream(deploymentId, pngResourceName); // 获取bpmn文件的流 String bpmnResourceName = processDefinition.getResourceName(); InputStream bpmnInputStream = repositoryService.getResourceAsStream(deploymentId, bpmnResourceName); // 构造OutputStream输出流 输出路径 File pngFile = new File("d:/evectionFlow01.png"); File bpmnFile = new File("d:/evectionFlow01.bpmn"); FileOutputStream pngOutputStream = new FileOutputStream(pngFile); FileOutputStream bpmnOutputStream = new FileOutputStream(bpmnFile); // 输出流,和输出流的转换 IOUtils.copy(pngInInputStream,pngOutputStream); IOUtils.copy(bpmnInputStream,bpmnOutputStream); // 关闭流 pngOutputStream.close(); bpmnInputStream.close(); pngInInputStream.close(); bpmnInputStream.close(); }
运行代码 效果展示 在d盘找到了这两个文件 打开也是一样的
网络异常,图片无法展示
|