一、查看最新版本的流程定义

  • 因为每个流程定义都可能会有好几个版本,所以有时候我们有这样的需求,查询出最新版本的流程定义的集合
  1. 第一步:我们通过Activiti接口来获取根据流程定义Version升序排序的流程定义的集合;
  2. 第二步:定义一个有序的Map, Map的key就是我们流程定义的Key,Map的值就是流程定义对象;
  3. 第三步:我们遍历第一步的集合,put(key,value)  假如Key相同,后者会覆盖前者;
  4. 第四步:我们获取Map的values。即我们需要的最新版本的流程定义的集合;
package com.shyroke.activiti.firstActiviti;

import java.io.File;
import java.io.InputStream;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map; import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.io.FileUtils;
import org.junit.Test; public class ProcessDefineTest2 { /**
* 获取默认流程引擎实例,会自动读取activiti.cfg.xml文件
*/
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 查看最新版本的流程定义
*/
@Test
public void listLastProcDef() { List<ProcessDefinition> listAll=processEngine.getRepositoryService() // 获取service
.createProcessDefinitionQuery() // 创建流程定义查询
.orderByProcessDefinitionVersion().asc() // 根据流程定义版本升序
.list(); // 返回一个集合 // 定义有序Map,相同的Key,假如添加map的值 后者的值会覆盖前面相同的key的值
Map<String,ProcessDefinition> map=new LinkedHashMap<String,ProcessDefinition>();
// 遍历集合,根据key来覆盖前面的值,来保证最新的key覆盖前面所有老的key的值
for(ProcessDefinition pd:listAll){
map.put(pd.getKey(), pd);
} List<ProcessDefinition> pdList=new LinkedList<ProcessDefinition>(map.values());
for(ProcessDefinition pd:pdList){
System.out.println("ID_"+pd.getId());
System.out.println("NAME_"+pd.getName());
System.out.println("KEY_"+pd.getKey());
System.out.println("VERSION_"+pd.getVersion());
System.out.println("=========");
}
}
}

结果:

最新文章

  1. slf4j的简单介绍
  2. Linux LVM硬盘管理之一:概念介绍
  3. .net 动态代理的泛型方法支持问题
  4. 【WEB API项目实战干货系列】- 导航篇(十足干货分享)
  5. Process启动.exe,当.exe内部抛出异常时,总会弹出一个错误提示框,阻止Process进入结束
  6. UITableView详解(2)
  7. Why doesn&#39;t Genymotion run on Windows 10?
  8. Windows 7妙用 笔记本变无线AP轻松共享
  9. JDK7 LinkedList源代码分析
  10. php实现json
  11. HTML5中a标签的锚点使用
  12. 自己动手修改Robotium代码(上)
  13. c#之异步Socket通信
  14. 【转】Android-Input 按键字符映射文件&amp;输入设备配置文件
  15. Hadoop记录-hadoop和hbase监控有那些比较好的工具
  16. 理解面向过程(OPP)、面向对象(OOP)、面向切面(AOP)
  17. linux iptables详解(转)
  18. vue之v-model
  19. 常用AT指令集 (转)
  20. where EXISTS (子查询)多对多中通过中间表查对方列表

热门文章

  1. MySQL 中视图和表的区别以及联系是什么?
  2. linux下安装pm2,pm2: command not found
  3. E: dpkg was interrupted, you must manually run &#39;dpkg --configure -a&#39; to correct the problem. 爆错解决办法
  4. MS-MSMQ:百科
  5. 总结解决 Android-Studio 编译耗时(好久、太长)问题
  6. nginx+lua 设置跨域
  7. 016-mac下ps
  8. 阶段5 3.微服务项目【学成在线】_day18 用户授权_03-方法授权-jwt令牌包含权限
  9. fetch jsonp请求接口
  10. 【c# 学习笔记】索引器