1. 程式人生 > >activity 設定流程變數,查詢流程變數

activity 設定流程變數,查詢流程變數

1  javaBean 需實現Serializable介面

package entity;

import java.io.Serializable;

public class Person  implements Serializable{
/**  
	* @Description: TODO(用一句話描述該檔案做什麼)  
	* @author guochao 
	* @date 2018年6月14日  
	* 
	*/ 
	private static final long serialVersionUID = 1L;
private  String  id;
private String  name;
private int  day;
private String res;
public String getId() {
	return id;
}
public void setId(String id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getDay() {
	return day;
}
public void setDay(int day) {
	this.day = day;
}
public String getRes() {
	return res;
}
public void setRes(String res) {
	this.res = res;
}
@Override
public String toString() {
	return "Person [id=" + id + ", name=" + name + ", day=" + day + ", res=" + res + "]";
}

}

2  流程變數設定 

package activity003;

import java.io.InputStream;
import java.io.Serializable;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.RepositoryService;

import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.Test;

import entity.Person;
import utils.DbUtils;

/**
 * 流程變數  設定流程變數
 * 1  部署新流程  從zip檔案部署流程
 * @Description: TODO(用一句話描述該檔案做什麼)  
* @author guochao 
* @date 2018年6月14日  
*
 */
public class Activtity003 {
	/**
	 * 通過zip檔案部署流程 設定流程名 
	 * 執行結果  部署流程Id	1401	流程名稱	test003
	 * 操作的表為   流程部署act_re_deployment   流程相關檔案 act_re_procdef
	* @Description: TODO(用一句話描述該檔案做什麼)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public  void deployProcess(){
		// 從類 載入目錄下載入zip檔案
		InputStream stream = this.getClass().getClassLoader().getResourceAsStream("helloworld.zip");
		//  獲取流程引擎
		ProcessEngine processEngine = DbUtils.getProcessEngine();
		//  獲取RepositoryService例項物件
		RepositoryService repositoryService = processEngine.getRepositoryService();
		//  獲取流程部署物件
		DeploymentBuilder deployment = repositoryService.createDeployment();
		//  部署流程設定流程名稱為test003
		 Deployment deploy = deployment.addZipInputStream(new ZipInputStream(stream)).name("test003").deploy();
		 //  獲取流程  Id
		System.out.println("部署流程Id"+"\t"+deploy.getId()+"\t"+"流程名稱"+"\t"+deploy.getName());
		// 執行結果    		部署流程Id	1401	流程名稱	test003
	}
	/**
	 *啟動流程例項 
	 *根據欄位ID_啟動流程
	 *表  act_re_procdef  欄位ID_
	 *結果流程例項   1501 
	* @Description: TODO(用一句話描述該檔案做什麼)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public  void  startProcess(){
		String processDefinitionId  ="helloworld:4:1404";
			//  獲取流程引擎
			ProcessEngine processEngine = DbUtils.getProcessEngine();
			ProcessInstance startProcess = processEngine.getRuntimeService().startProcessInstanceById(processDefinitionId);
			System.out.println(startProcess.getId());
	}
	/**
	 * 設定流程例項的變數
	 *  使用基本型別
	 *  引數 涉及 的表  act_ru_variable
	* @Description: TODO(用一句話描述該檔案做什麼)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public  void  setParam(){
	//  獲取流程引擎
		ProcessEngine processEngine = DbUtils.getProcessEngine();
		// 獲取流程執行Service
		TaskService taskService = processEngine.getTaskService();
		// 指定流程辦理人 
		String name ="張三";
		String processInstanceId ="1501";
		// 根據辦理人和流程例項Id查詢出當前流程正在執行的任務
		TaskQuery taskQuery = taskService.createTaskQuery();
		
		Task singleResult = taskQuery.processInstanceId(processInstanceId).taskAssignee(name).singleResult();
		taskService.setVariable(singleResult.getId(), "請假人", "王麻子");
		taskService.setVariable(singleResult.getId(), "請假天數", 5);
		taskService.setVariable(singleResult.getId(), "請假原因", "回家探親");
		
		
	}
	/**
	 * 設定流程例項的變數
	 *  使用基JavaBen  bean實現 implements Serializable 介面
	 *  引數 涉及 的表  act_ru_variable
	* @Description: TODO(用一句話描述該檔案做什麼)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public  void  setParamByJavaBean(){
	//  獲取流程引擎
		ProcessEngine processEngine = DbUtils.getProcessEngine();
		// 獲取流程執行Service
		TaskService taskService = processEngine.getTaskService();
		// 指定流程辦理人 
		String name ="張三";
		String processInstanceId ="1501";
		// 根據辦理人和流程例項Id查詢出當前流程正在執行的任務
		TaskQuery taskQuery = taskService.createTaskQuery();
		
		Task singleResult = taskQuery.processInstanceId(processInstanceId).taskAssignee(name).singleResult();
		Person per = new Person();
		per.setDay(1);
		per.setDay(5);
		per.setName("找錢");
		per.setRes("娶媳婦");
		
		taskService.setVariable(singleResult.getId(), "人員資訊", per);
	}
	/**
	 * 獲取流程變數
	 *結果 王麻子
	 		5
	 	回家探親

	* @Description: TODO(用一句話描述該檔案做什麼)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public void  getParam(){
		//  獲取流程引擎
		ProcessEngine processEngine = DbUtils.getProcessEngine();
		// 獲取流程執行Service
		TaskService taskService = processEngine.getTaskService();
		// 指定流程辦理人 
		String name ="張三";
		String processInstanceId ="1501";
		// 根據辦理人和流程例項Id查詢出當前流程正在執行的任務
		TaskQuery taskQuery = taskService.createTaskQuery();
		// 根據辦理人和流程例項Id查詢出當前流程正在執行的任務
		Task singleResult = taskQuery.processInstanceId(processInstanceId).taskAssignee(name).singleResult();
		String personName = (String)taskService.getVariable(singleResult.getId(), "請假人");
		 Integer day =(Integer)taskService.getVariable(singleResult.getId(), "請假天數");
		String  res =(String)taskService.getVariable(singleResult.getId(), "請假原因");
		System.out.println(personName);
		System.out.println(day);
		System.out.println(res);
		
		//獲取javaBean物件   從而得到流程變數
		Person p  =(Person)taskService.getVariable(singleResult.getId(), "人員資訊");
		System.out.println(p);//Person [id=null, name=找錢, day=5, res=娶媳婦]
	}
}