 
	 博客信息
		博客信息
	因为每个流程定义都可能会有好几个版本,所以有时候我们有这样的需求,查询出最新版本的流程定义的集合;
怎么来实现呢? 我们一般的思路是这样的。
第一步:我们通过Activiti接口来获取根据流程定义Version升序排序的流程定义的集合;
第二步:定义一个有序的Map, Map的key就是我们流程定义的Key,Map的值就是流程定义对象;
第三步:我们遍历第一步的集合,put(key,value) 假如Key相同,后者会覆盖前者;
第四步:我们获取Map的values。即我们需要的最新版本的流程定义的集合;
为了演示,我们搞一个MySecondProcess流程定义;

然后我们部署流程定义三次;

数据库表里对应的添加三条流程定义信息;
下面我们上代码。来实现我们要的功能;
/**
 * 查询最新版本的流程定义
 */
@Test
public void listLastVersion()throws Exception{
	
	// 获取流程定义集合,根据Key升序排序
	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("===================");
	}
}完整代码:http://pan.baidu.com/s/1eSsbe74
 关注Java1234微信公众号
					关注Java1234微信公众号
				 
				 博主信息
					博主信息
				 
				 按日志类别
					按日志类别
				 按日志日期
					按日志日期
				 友情链接
					友情链接