流程定义资源文件下载

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

下载流程定义资源文件

有两种方式

方案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)
694 1
|
算法 数据可视化 数据处理
MATLAB内置函数
【10月更文挑战第6天】本文详细介绍了MATLAB的内置函数和自定义函数,涵盖数学计算、矩阵操作、图形绘制等方面。通过具体代码示例,展示了如何使用内置函数和创建自定义函数,以及它们在性能、灵活性和可读性上的优劣。同时,文章还讨论了函数文件与脚本文件的区别,匿名函数和函数句柄的高级应用,帮助读者更好地利用MATLAB解决复杂问题。
|
JavaScript 数据可视化 定位技术
vue项目中mapboxgl的几个经典操作代码示例
vue项目中mapboxgl的几个经典操作代码示例
557 0
|
存储 Java 索引
Java练习题-获取数组元素最大值
Java练习题-获取数组元素最大值
186 2
Java练习题-获取数组元素最大值
|
关系型数据库 MySQL 数据库管理
MySQL:产生大量小relay log的故障一例
能力有限有误请谅解,源码版本5.7.22 欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下: 一、案例来源和现象 这个案例是朋友@peaceful遇到的线上问题,最终线索也是他自己找到的。
1627 0
|
存储 NoSQL 关系型数据库
RocksDB 事务实现和应用场景
RocksDB 事务实现和应用场景
|
人工智能 PyTorch 算法框架/工具
基于Aidlux平台实现ONNX Runtime部署-水果分类-摄像头和视频
基于Aidlux平台的人工智能开发部署全流程
|
人工智能 物联网
AI绘画——Stable Diffusion模型,变分自编码器(VAE)模型 , lora模型——调配设置与分享(二)
AI绘画——Stable Diffusion模型,变分自编码器(VAE)模型 , lora模型——调配设置与分享(二)
|
前端开发 JavaScript Ubuntu
「Web应用架构」5分钟把前端应用程序部署到NGINX
「Web应用架构」5分钟把前端应用程序部署到NGINX
|
监控 Dubbo Java
SpringCloud Sentinel 使用
在以后我们的项目部署上线的时候,会有各种各样的服务突发问题,比如雪崩效应(在分布式系统中,由于网络原因或自身的原因,服务一般无法保证 100% 可用。如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况,此时若有大量的请求涌入,就会出现多条线程阻塞等待,进而导致服务瘫痪。由于服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的雪崩效应)等问题。
341 0
SpringCloud Sentinel 使用