(五)Activiti之查看最新版本的流程定义

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

  • 因为每个流程定义都可能会有好几个版本,所以有时候我们有这样的需求,查询出最新版本的流程定义的集合
  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("=========");
                }
    }
}

结果:

 

 

转载于:https://www.cnblogs.com/shyroke/p/7993946.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值