流程定义资源文件下载

简介: 流程定义资源文件下载

下载流程定义资源文件

有两种方式

方案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盘找到了这两个文件 打开也是一样的

网络异常,图片无法展示
|

相关文章
|
弹性计算 运维 安全
带你读《云上自动化运维宝典》——万字长文带你了解 CloudOps自动化运维的奥秘,助力云上业务高效稳定运行(1)
带你读《云上自动化运维宝典》——万字长文带你了解 CloudOps自动化运维的奥秘,助力云上业务高效稳定运行(1)
655 1
|
11月前
|
算法 数据可视化 数据处理
MATLAB内置函数
【10月更文挑战第6天】本文详细介绍了MATLAB的内置函数和自定义函数,涵盖数学计算、矩阵操作、图形绘制等方面。通过具体代码示例,展示了如何使用内置函数和创建自定义函数,以及它们在性能、灵活性和可读性上的优劣。同时,文章还讨论了函数文件与脚本文件的区别,匿名函数和函数句柄的高级应用,帮助读者更好地利用MATLAB解决复杂问题。
|
开发框架 Java 关系型数据库
ThinkPHP
【8月更文挑战第23天】ThinkPHP
193 2
|
JavaScript 数据可视化 定位技术
vue项目中mapboxgl的几个经典操作代码示例
vue项目中mapboxgl的几个经典操作代码示例
433 0
|
存储 NoSQL 关系型数据库
RocksDB 事务实现和应用场景
RocksDB 事务实现和应用场景
|
关系型数据库 MySQL 数据库管理
MySQL:产生大量小relay log的故障一例
能力有限有误请谅解,源码版本5.7.22 欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下: 一、案例来源和现象 这个案例是朋友@peaceful遇到的线上问题,最终线索也是他自己找到的。
1570 0
vue3学习记录(2)
随着vue3的普及我们团队开始全面接纳了vue3。
1185 177
|
前端开发 JavaScript Ubuntu
「Web应用架构」5分钟把前端应用程序部署到NGINX
「Web应用架构」5分钟把前端应用程序部署到NGINX
|
Go 索引 容器
106【GoLand-基础2】(二)
106【GoLand-基础2】
86 0
|
机器学习/深度学习 敏捷开发 移动开发
盘点各大厂商的活体检测服务,哪款更适合应用开发者?
市面上提供活体检测服务的厂商有很多家,我们将结合开发者关注的识别场景、集成便捷性、安全性等问题,对各大厂商的活体检测服务做综合评测。
793 0
盘点各大厂商的活体检测服务,哪款更适合应用开发者?