• 六、activiti工作流-流程定义查询


    本节主要讲流程定义查询、查询某个流程设计图片并保存到本地中、查询最新版本的流程定义集合、删除所有key相同的定义

    先创建一个java类

    package com.java.procdef;

    import java.io.File;
    import java.io.IOException;
    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 ProcessDefinitionTest { 

       //获取默认流程引擎实例,会自动读取avtiviti.cfg.xml文件

    private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();

    //流程定义查询,就是查某个模板被用了多少次,返回流程定义集合对应表act_re_procdef
    @Test
    public void list() {
      String processDefinition="myFirstProcess";
        List<ProcessDefinition> pdList= processEngine.getRepositoryService()
        .createProcessDefinitionQuery() //创建流程定义查询
        .processDefinitionKey(processDefinition) //通过key查询,返回的是集合
        .list();
      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("====");

       }

      }

    //通过流程定义id查询某个流程定义,就是查具体的某一个模板的某一个流程
    @Test
    public void getById() {
      String processDefinitionId = "myFirstProcess:1:4";
      ProcessDefinition pd = processEngine.getRepositoryService().createProcessDefinitionQuery() // 创建流程定义查询
        .processDefinitionId(processDefinitionId).singleResult(); //
        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("====");

      }
      

    /**
    * 根据流程部署id和图片名字查询。查询某个流程定义的流程设计图片;并保存到本地中
    * @throws IOException
    */
    @Test
    public void getImageById() throws IOException {
      InputStream inputStream = processEngine.getRepositoryService()
        .getResourceAsStream("10001", "diagrams/HelloWord.png"); //根据流程部署id和资源名称

      //获得输入流,这个是apache提供的工具类
      FileUtils.copyInputStreamToFile(inputStream, new File("E:/helloWord.png"));
    }

    /**
    * 查询最新版本的流程定义集合
    */
    @Test
    public void selectLastVersion() {

      List<ProcessDefinition> listAll= processEngine.getRepositoryService()
        .createProcessDefinitionQuery() //创建流程定义查询
        .orderByProcessDefinitionVersion().asc() //根据流程定义版本升序
        .list();

      //定义有序的map,相同的key,假如添加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("====");

        }

      }

    /**
    * 删除所有key相同的定义,activiti提供的接口支持级联删除
    *
    */
    @Test
    public void deleteByKey() {
      String processDefinitionKy="HelloWorld2";
      List<ProcessDefinition> pdList= processEngine.getRepositoryService()
        .createProcessDefinitionQuery() //创建流程定义查询
        .processDefinitionKey(processDefinitionKy) //根据流程定义版本升序
        .list();

      for (ProcessDefinition pd : pdList) {
        processEngine.getRepositoryService()
        .deleteDeployment(pd.getDeploymentId(),true);
      }
    }

    }

  • 相关阅读:
    Goal driven performance optimization
    Using SHOW PROCESSLIST and mysqladmin debug Output in Conjunction with SHOW INNODB STATUS
    Concurrent inserts on MyISAM and the binary log
    A better SHOW TABLE STATUS
    show table status
    A Flock Of Tasty Sources On How To Start Learning High Scalability
    PostgreSQL Hardware Performance Tuning
    Choosing proper innodb_log_file_size
    ffmpeg 常用命令
    opencv 知识点笔记
  • 原文地址:https://www.cnblogs.com/binghuaZhang/p/10778034.html
Copyright © 2020-2023  润新知