activiti工作流08-processDefinition的CRUD2

江嘉悦
2023-12-01

注:流程定义不可修改,可通过每一次启动最新版本的流程定义来达到修改的目的


/**
     * 查询最新版本的流程定义,可利用map集合的key相同则覆盖值的特性
     *
     * Map<String, ProcessDefinition>
     * map的key,流程定义的key
     * map的value,流程定义本身对象
     */
    public void testGetHigestVersion(){
        Map<String, ProcessDefinition> map=new LinkedHashMap<String, ProcessDefinition>();
        //根据版本升序查询
        List<ProcessDefinition> pList=processEngine.getRepositoryService()
                        .createProcessDefinitionQuery()
                        .orderByProcessDefinitionVersion().asc()
                        .list();
        
        if(pList!=null&&pList.size()>0){
            for (ProcessDefinition processDefinition : pList) {
                map.put(processDefinition.getKey(), processDefinition);
            }
        }
        
        Set<String> set=map.keySet();
        Iterator<String> it=set.iterator();
        while(it.hasNext()){
            String key=it.next();
            ProcessDefinition p=map.get(key);
            
            System.out.println("流程定义的key:"+key);
            System.out.println("流程定义的最高版本:"+p.getVersion());
        }
    }
    
    /**
     * 删除指定的key的所有的流程定义
     */
    public void testDeleteAllProcDefByKey(){
        String processDefinitionKey="helloWorld";
        //通过key找到所有的流程定义
        List<ProcessDefinition> pList=processEngine.getRepositoryService()
                        .createProcessDefinitionQuery()
                        .processDefinitionKey(processDefinitionKey)
                        .list();
        
        //貌似这样也可以获取一个流程定义的最新版本
        System.out.println(processEngine.getRepositoryService()
                .createProcessDefinitionQuery()
                .processDefinitionKey(processDefinitionKey)
                .latestVersion());
        
        if(pList!=null&&pList.size()>0){
            
            for (ProcessDefinition processDefinition : pList) {
                String deploymentId=processDefinition.getDeploymentId();
                processEngine.getRepositoryService().deleteDeployment(deploymentId,true);
            }
            
        }
    }

 类似资料: