本节主要讲流程定义查询、查询某个流程设计图片并保存到本地中、查询最新版本的流程定义集合、删除所有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);
  }
}

}

六、activiti工作流-流程定义查询的更多相关文章

  1. 深入了解Activiti工作流流程定义

    深入了解Activiti工作流流程定义 2016-03-27| 发布: | 浏览: 2363 |保存PDF 部署流程定义 部署流程定义的流程: 1. 先获取流程引擎对象:在创建时会自动加载 class ...

  2. (四)Activiti之流程定义部署之ZIP方式和流程定义查询

    一.流程定义部署之ZIP方式 上一章节我们使用classpath的方式加载流程定义文件,这里我们使用ZIP的方式. 1.1 用activiti插件生成bpmn和png图片之后,压缩到一个zip格式的压 ...

  3. Activiti 删除流程定义

    package com.mycom.processDefinition; import java.io.InputStream; import java.util.List; import java. ...

  4. activiti部署流程定义时出错:INSERT INTO ACT_GE_BYTEARRAY,修改数据库编码

    activiti部署流程定义时出错 // 部署流程定义 Deployment deployment = deploymentBuilder.deploy(); 错误信息:(有乱码的...没留下截图.. ...

  5. Activiti工作流的定义部署和执行

        工作流引擎 个人觉得直接理解工作流引擎概念有点难度,我们可以先通过了解工作流引擎的职责再反过来理解工作流引擎,工作流引擎一般都做两件事情: 1.定义流程,也就是给我们提供某种规范来定义规则,以 ...

  6. activiti--5 -----------------Activiti 工作流 流程各个步骤所涉及到的表

    ACT_RE_*: 'RE'表示repository. 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等). ACT_RU_*: 'RU'表示runtime. 这些运行时的表,包含流程实例 ...

  7. Activiti 部署流程定义及相关的表(classpath部署、zip部署)

    package com.mycom.processDefinition; import org.activiti.engine.ProcessEngine; import org.activiti.e ...

  8. 多数据库下activiti的流程定义缓存问题

    我们使用activiti(5.14版本号)作为流程引擎,今天在产品中发现一个问题,某流程的审批记录中, 活动实例表中记录的活动名称(ACT_HI_ACTINST表的ACT_NAME)居然是该流程中不存 ...

  9. 三、activiti工作流-流程设计工具

    首先在diagrams下面新建一个文件夹 然后在这个文件夹下new一个Activiti Diagram new好后出现bpmn文件, 可以通过右键以xml方式打开bpmn文件查看源码 双击打开文件然后 ...

随机推荐

  1. position在IE下的问题

    盒子设置position:absolute;后,子盒子的浮动可以不做清除浮动处理,同样,使用fixed,子盒子也不需要做清除浮动的处理 在IE7下(据说IE6也不行),盒子设置overflow:hid ...

  2. linux 7安装telnet,设置telnet自启动,使用root telnet登录

    1.安装启动服务 # yum install telnet-server # yum install xinetd # systemctl enable xinetd.service # system ...

  3. Yii2.0 解决“the requested URL was not found on this server”问题

    在你下了 Yii 框架,配置完路由 urlManager 后,路由访问页面会报错“the requested URL was not found on this server”,url类似于这种“ht ...

  4. 涂色(CQOI2007)

    --BZOJ1260_区间dp Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:R ...

  5. 不在sudoer里解决办法 和 RHEL 挂载NTFS硬盘

    输入su 切换到root用户 打开/etc/sudoers sudo vim sudoers 在root    ALL=(ALL:ALL) ALL 下边比着写一个自己的用户名就可以了 下载 可以到ht ...

  6. faster-rcnn 笔记

    2019-02-18,15点00 ''' 下面是别人写的原始的笔记,我在上面自己补充了一些. ''' #https://www.cnblogs.com/the-home-of-123/p/974796 ...

  7. JavaSE 初学系统托盘图标SystemTray类

    文章目录 1.预备知识 2.使系统托盘显示图标 3.添加提示 4.添加弹出菜单 设置Java程序的系统托盘图标,用到SystemTray类和TrayIcon类. 1.预备知识 JavaAPI对于Sys ...

  8. Jquery源码学习日记(1)

    https://jquery.com/  最新源码下载链接:jquery3.0 135-231定义了一些jquery的通用方法 233-301行定义了一些继承的方法 302-477定义了一些工具类方法 ...

  9. Maven学习 七 Maven项目创建(2)war项目

    一.web项目的目录结构 如果手动创建一个java  web项目,其基本的目录结构包括:METE-INF,WEB-INF,以及WEB-INF下必须包含一个web.xml文件 二.使用Maven创建wa ...

  10. 倒谱(Cepstrum)和线性预测倒谱系数(LPCCs)

    倒谱是表示一帧语音数据特征的一个序列.从periodogram estimate of the power spectrum计算得到的倒谱系数,可以用于基音追踪(pitch tracking),然而, ...