java1234_Activiti_第5讲_后天管理员操做函数

package com.java1234.activiti.procdef;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.junit.Test;

/**
 * 查询  流程定义
 * @author Administrator
 *
 */
public class ProcessDefinitionTest {

	/**
	 * 获取默认流程引擎实例,默认读取配置文件activiti.cfg.xml
	 */
	private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
	
	/**
	 * 全部的流程流程实例和流程版本
	 */
	@Test
	public void find全部的流程流程实例和流程版本(){
		
		//* act_re_deployment 关联这张表
		//查询因此的部署  
		List<Deployment>  deploymentlist= processEngine.getRepositoryService()//获取servi
		 .createDeploymentQuery().list();
	   System.out.println(deploymentlist);
	   
		List<ProcessDefinition>  processDefinitionlist = processEngine.getRepositoryService().createProcessDefinitionQuery().list();
		System.out.println(processDefinitionlist);
		
	}
	
	/**
	 * 查询流程定义,返回流程定义集合,对应表act_re_procdef
	 */	
	@Test
	public void list(){
		String processDefinitionKey="myFirstProcess";
		List<ProcessDefinition> pdList= processEngine.getRepositoryService()//获取servi
		.createProcessDefinitionQuery() //建立流程定义查询
		.processDefinitionKey(processDefinitionKey) //经过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_:myFirstProcess:1:4
name_:My First process
KEY_:myFirstProcess
version_:1
-----------
ID_:myFirstProcess:2:5004
name_:My First process
KEY_:myFirstProcess
version_:2
-----------	
 */
		
	}
	/**
	 * 经过ID查询某个流程定义 ,对应表act_re_procdef
	 */
	@Test
	public void getByid(){
		String processDefinitionId="myFirstProcess:2:5004";
		ProcessDefinition pd= processEngine.getRepositoryService()//获取servi
		.createProcessDefinitionQuery() //建立流程定义查询
		.processDefinitionId(processDefinitionId) //经过key查询
		.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_:myFirstProcess:2:5004
name_:My First process
KEY_:myFirstProcess
version_:2
-----------
 */
		
		
	}
	/**
	 * 根据流程部署id 和 资源流程名称 来查询,资源图片
	 * @throws IOException 
	 */
	@Test
	public void getImageById() throws IOException{
		String processDefinitionId="myFirstProcess:2:5004";
		InputStream inputStream= processEngine.getRepositoryService()//获取servi
				.getResourceAsStream("5001", "HelloWorld.png"); //(String deploymentId, String resourceName)
			
		// 1. 把图片存放到本地路径/		
		FileUtils.copyInputStreamToFile( inputStream, new File("d:/1.png") );
				
	}
	/**
	 * 查询最新流程版本的定义___最高最高的版本
## 流程定义表- 查询最新版本===查询sql
select * from act_re_procdef order by VERSION_ ASC;
	 */
	@Test
	public void findLastVersionDeployment(){
		List<ProcessDefinition> pdList= processEngine.getRepositoryService()//获取servi
		.createProcessDefinitionQuery() //建立流程定义查询
		.orderByProcessDefinitionVersion().asc() ///根据流程版本升序;
		.list();//
		
		// 定义有序Map,相同的Key ,加入添加的Map值后者会覆盖
		Map<String ,ProcessDefinition> map=new LinkedHashMap<String, ProcessDefinition>();
		Map<String ,ProcessDefinition> hsmap=new HashMap<String, ProcessDefinition>();
		
		for(ProcessDefinition pd: pdList){	
			map.put(pd.getKey(), pd); //插入新的
			hsmap.put(pd.getKey(), pd); //测试hashMap
		}
		// map.k
		for(String key : map.keySet() ){
			ProcessDefinition pd=	map.get(key);
			
			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("-----------");
		}
		
		System.out.println("edn");
		
/*
ID_:helloworld2:3:12504
name_:My process
KEY_:helloworld2
version_:3
-----------
ID_:myFirstProcess:2:5004
name_:My First process
KEY_:myFirstProcess
version_:2
-----------		
 */
	}
	/**
	 * 以key查询因此的流程, 而后按id级联删除流程!
	 */
	@Test
	public void deleteByid(){
		String processDefinitionKey="helloworld2";
		List<ProcessDefinition> pdList= processEngine.getRepositoryService()//获取servi
		.createProcessDefinitionQuery() //建立流程定义查询
		.processDefinitionKey(processDefinitionKey) //根据key查询
		.list();//
		
		for(ProcessDefinition pd:pdList){
			processEngine.getRepositoryService()
			.deleteDeployment(pd.getDeploymentId(),true);	
			//级联删除 流程
			//Deletes the given deployment and cascade deletion to process instances, history process instances and jobs.
		}
		
		System.out.println("end");
	}
}
相关文章
相关标签/搜索