springboot整合activity6_查詢最新版本的流程定義集合(無廢話版)--------------------------------------------(六)

1.源碼地址:https://github.com/heidaodageshiwo/springbootactivity
 

因爲每個流程定義都可能會有好幾個版本,所以有時候我們有這樣的需求,查詢出最新版本的流程定義的集合;

思路是這樣的。

第一步:我們通過Activiti接口來獲取根據流程定義Version升序排序的流程定義的集合;

第二步:定義一個有序的Map, Map的key就是我們流程定義的Key,Map的值就是流程定義對象;

第三步:我們遍歷第一步的集合,put(key,value)  假如Key相同,後者會覆蓋前者;

第四步:我們獲取Map的values。即我們需要的最新版本的流程定義的集合;

 

我們搞一個MySecondProcess流程定義;

然後我們部署流程定義三次;

 

 

數據庫表裏對應的添加三條流程定義信息;

@RequestMapping("/procdef_list_new")
    /**
     * 查詢最新版本的流程定義
     */
     public String listLastVersion()throws Exception{

        // 獲取流程定義集合,根據Key升序排序
        List<ProcessDefinition> listAll=repositoryService // 獲取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("===================");
        }
        return "";
    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章