zoukankan      html  css  js  c++  java
  • (五)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("=========");
                    }
        }
    }

    结果:

     

  • 相关阅读:
    在win2003中发布部署vs2010b2写的mvc2网站
    安装blender2.5Alpha0
    Win7下虚拟机个人使用小结:Virtual PC,VMware和VirtualBox
    ASP.NET AJAX Control Toolkit Beta 0911 发布[再增两控件]
    Camtasia 6录屏时鼠标闪烁问题解决
    为XNA制做安装程序(四)WIX Toolset 3.0 for Visual Studio 2008
    Oracle EM 12c
    无题
    从徐汇到虹口
    近况
  • 原文地址:https://www.cnblogs.com/shyroke/p/7993946.html
Copyright © 2011-2022 走看看