六、activiti工作流 |
您所在的位置:网站首页 › 信息查重的流程 › 六、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 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 |