六、activiti工作流

您所在的位置:网站首页 信息查重的流程 六、activiti工作流

六、activiti工作流

#六、activiti工作流| 来源: 网络整理| 查看: 265

本节主要讲流程定义查询、查询某个流程设计图片并保存到本地中、查询最新版本的流程定义集合、删除所有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 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 listAll= processEngine.getRepositoryService()     .createProcessDefinitionQuery() //创建流程定义查询     .orderByProcessDefinitionVersion().asc() //根据流程定义版本升序     .list();

  //定义有序的map,相同的key,假如添加map的值后者的值会覆盖前面相同key的值,map特点是保证key唯一   Map map=new LinkedHashMap();   //遍历集合,根据key来覆盖前面的值,来保证最新的key覆盖老的key   for (ProcessDefinition pd : listAll) {     map.put(pd.getKey(), pd);

  }

  List pdList=new LinkedList(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 pdList= processEngine.getRepositoryService()     .createProcessDefinitionQuery() //创建流程定义查询     .processDefinitionKey(processDefinitionKy) //根据流程定义版本升序     .list();

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

}



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3