(五)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("=========");
                }
    }
}

結果:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM