activity 設定流程變數,查詢流程變數
阿新 • • 發佈:2019-01-04
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=娶媳婦] } }