获取资源信息

/**
* 获取资源信息
*
* @throws IOException
*/
@Test
public void getProcessResources() throws IOException { // 1:流程定义ID
String processDefinitionId = "holiday:1:7504"; // 2:获取RepositoryService
RepositoryService repositoryService = defaultProcessEngine.getRepositoryService(); // 3:创建查询对象
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); // 4:查询流程定义
ProcessDefinition processDefinition = processDefinitionQuery.processDefinitionId(processDefinitionId).singleResult(); // 5:获取资源名称
String resourceName = processDefinition.getResourceName(); System.out.println("bpmn名称:" + resourceName); // 6:获取图片名称
String diagramResourceName = processDefinition.getDiagramResourceName(); System.out.println("png名称:" + diagramResourceName); File bpmnFile = new File("E:\\dance\\activiti7\\src\\main\\resources\\cp\\holiday.bpmn");
File pngFile = new File("E:\\dance\\activiti7\\src\\main\\resources\\cp\\holiday.png"); // 7:根据部署ID和资源名称获取资源流
InputStream resourceAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), resourceName); // 8:创建输出流
FileOutputStream fileOutputStream = new FileOutputStream(bpmnFile); // 写文件
writeByte(resourceAsStream, fileOutputStream); // 获取图片
resourceAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), diagramResourceName); fileOutputStream = new FileOutputStream(pngFile); // 写文件
writeByte(resourceAsStream, fileOutputStream); System.out.println("获取资源成功!"); }

写出流方法

private void writeByte(InputStream resourceAsStream, OutputStream fileOutputStream) throws IOException {
int i = -1;
byte[] content = new byte[1024];
while ((i = resourceAsStream.read(content)) != -1) {
fileOutputStream.write(content, 0, i);
}
// 释放资源
fileOutputStream.flush();
fileOutputStream.close();
resourceAsStream.close();
}

查询流程历史信息

/**
* 获取历史信息
*/
@Test
public void testHistoric01() { // 获取历史信息Service
HistoryService historyService = defaultProcessEngine.getHistoryService(); // 启动的流程实例的ID
String processInstanceId = "10001"; // 根据流程实例ID查询 历史记录
List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list(); // 输出信息
list.forEach(historicActivityInstance -> {
System.out.println("---------------------------------------------------");
System.out.println("当前激活ID:" + historicActivityInstance.getActivityId());
System.out.println("当前激活名称:" + historicActivityInstance.getActivityName());
System.out.println("流程定义ID:" + historicActivityInstance.getProcessDefinitionId());
System.out.println("流程实例ID:" + historicActivityInstance.getProcessInstanceId());
System.out.println("---------------------------------------------------");
}); }

作者:彼岸舞

时间:2020\08\31

内容关于:Activiti工作流

本文来源于网络,只做技术分享,一概不负任何责任

Activiti7 获取资源信息及其查询流程历史信息的更多相关文章

  1. Spring Security教程(五):自定义过滤器从数据库从获取资源信息

    在之前的几篇security教程中,资源和所对应的权限都是在xml中进行配置的,也就在http标签中配置intercept-url,试想要是配置的对象不多,那还好,但是平常实际开发中都往往是非常多的资 ...

  2. 使用URLConnection获取网页信息的基本流程

    参考自core java v2, chapter3 Networking. 注:URLConnection的子类HttpURLConnection被广泛用于Android网络客户端编程,它与apach ...

  3. 使用URLConnection获取网页信息的基本流程 分类: H1_ANDROID 2013-10-12 23:51 3646人阅读 评论(0) 收藏

    参考自core java v2, chapter3 Networking. 注:URLConnection的子类HttpURLConnection被广泛用于Android网络客户端编程,它与apach ...

  4. 学习笔记_Java get和post区别(转载_GET一般用于获取/查询资源信息,而POST一般用于更新资源信息)

    转载自:[hyddd(http://www.cnblogs.com/hyddd/)] 总结一下,      Get是向服务器发索取数据的一种请求      而Post是向服务器提交数据的一种请求,在F ...

  5. JavaWeb学习记录(八)——servlet获取配置信息

    jdbc.properties内容如下: jdbcUrl=jdbc\:mysql\://localhost\:3306/animaluser=rootpass=root servlet获取资源信息代码 ...

  6. activiti7查询流程定义的相关信息

    package com.zcc.activiti02; import org.activiti.engine.ProcessEngine;import org.activiti.engine.Proc ...

  7. 使用 C# 开发 Kubernetes 组件,获取集群资源信息

    写什么呢 前段时间使用 C# 写了个项目,使用 Kubernetes API Server,获取信息以及监控 Kubernetes 资源,然后结合 Neting 做 API 网关. 体验地址 http ...

  8. Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息

    Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息 本文目录: 获取手机信息 设置权限 申请权限 查询联系人 获取手机定位信息 调用高德地图,设置显示2个坐标点的位置,以及 ...

  9. linux中uptime命令获取主机运行时间和查询系统负载信息

    系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系 ...

随机推荐

  1. String 的两种实例化方式

    String 的两种实例化方式 隐式实例化:直接赋值 public class Demo { public static void main(String[] args) { String s = & ...

  2. Python笔试——毕业旅行问题

    毕业旅行问题 小明目前在做一份毕业旅行的规划.打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次.由于经费有限,希望能够通过合理的路线安排尽可能的省一些路上的 ...

  3. RabbitMQ 基础概念进阶

    上一篇 RabbitMQ 入门之基础概念 介绍了 RabbitMQ 的一些基础概念,本文再来介绍其中的一些细节和其它的进阶的概念. 一.消息生产者发送的消息不可达时如何处理 RabbitMQ 提供了消 ...

  4. SQL Server2017+SSIS+Python

    1.安装SQL Server2017 https://jingyan.baidu.com/article/76a7e409077997fc3a6e1559.html (1)JRE 7报错 只能安装JR ...

  5. java进阶(6)--访问控制权限

    一.四种访问控制权限   二.举例同包下访问权限

  6. C#设计模式之23-访问者模式

    访问者模式(Vistor Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/431 访问. 访问者模式属于 ...

  7. 9个常用ES6特性归纳(一般用这些就够了)

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应 ...

  8. LeetCode406 queue-reconstruction-by-height详解

    题目详情 假设有打乱顺序的一群人站成一个队列. 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数. 编写一个算法来重建这个队列. 注意: 总人数少于 ...

  9. C++ Templates (1.5 重载函数模板 Overloading Function Templates)

    返回完整目录 目录 1.5 重载函数模板 Overloading Function Templates 1.5 重载函数模板 Overloading Function Templates 和普通函数一 ...

  10. Mybatis_day1

    mybatis框架的引入: JDBC里面 对功能实现的进一步封装,可以按照以下方式操作 Student s = new Student(id,name); util.save(s); ORM: obj ...