zoukankan      html  css  js  c++  java
  • 六、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);
      }
    }

    }

  • 相关阅读:
    C语言面试题大汇总
    cocos2d-x的win32编译环境
    完美解决Android SDK Manager无法更新
    ADT离线安装教程
    Android开发环境搭建教程
    如何利用dex2jar反编译APK
    Eclipse与Android源码中ProGuard工具的使用
    Proguard语法及常用proguard.cfg代码段
    Android之ProGuard混淆器
    Nutch源码阅读进程2---Generate
  • 原文地址:https://www.cnblogs.com/binghuaZhang/p/10778034.html
Copyright © 2011-2022 走看看