发大水
package com.java1234.activiti.variable; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.TaskService; import org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Test; import com.java1234.activiti.model.Student; public class VariableTest { /** * 获取默认流程引擎实例,默认读取配置文件activiti.cfg.xml */ private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine(); /** * 1.部署流程定义. */ @Test public void deployWidthClassPath(){ Deployment deployment= processEngine.getRepositoryService()// 部署相关service .createDeployment()//创建部署对象 .addClasspathResource("diagrams/StudentLeaveProcess.bpmn")//加载资源文件 .addClasspathResource("diagrams/StudentLeaveProcess.png") //加载资源图片 .name("学生请假流程")//设置名称 .deploy();//部署 System.out.println("流程部署Id:"+deployment.getId()); System.out.println("流程部署Name:"+deployment.getName()); /* 流程部署Id:15001 流程部署Name:学生请假流程 ------------------- ## 流程部署表 select * from act_re_deployment; ## 流程定义表 select * from act_re_procdef; ## 资源文件表 select * from act_ge_bytearray; */ } /** * 1.1查询所以流程部署,名称查询,like查询 */ @Test public void findDeploy(){ // processEngine.getRepositoryService().get } /** * 2.启动流程实例 */ @Test public void start(){ ProcessInstance pi= processEngine.getRuntimeService() //运行服务 .startProcessInstanceByKey("studentLeaveProcess"); //数据库中act_re_procdef的key_字段 System.out.println("流程实例ID:"+pi.getId()); System.out.println("流程定义ID:"+pi.getProcessDefinitionId());//流程定义ID /* 流程实例ID:17501 ,30001 流程定义ID:studentLeaveProcess:1:15004 */ } /** * 3.查询任务 * */ @Test public void findTask(){ List<Task> taskList= processEngine.getTaskService() //任务服务实例 .createTaskQuery()//创建任务查询 .taskAssignee("王五")// 查询 张三 ,李四,后欧洲王五 .list(); for(Task task:taskList){ // act_ru_task; 字段 里面的信息 System.out.println("任务Id:"+task.getId()); System.out.println("任务Name:"+task.getName()); System.out.println("任务创建时间:"+task.getCreateTime()); System.out.println("任务委派人:"+task.getAssignee()); System.out.println("任务实例ID:"+task.getProcessInstanceId()); } /*打印结果: 任务Id:17504, 30004 任务Name:学生请假申请 任务创建时间:Thu Jul 28 15:24:50 CST 2016 任务委派人:张三 任务实例ID:17501 ,30001 */ } /** * 4.完成任务,让张三完成任务 */ @Test public void completeTask(){ processEngine.getTaskService()//任务服务器 .complete("50002"); //使用上面: 任务Id:(17504) System.out.println("任务完成!"); } /** * 设置流程变量数据 * 42504,47502,如果再用42504会出现异常! */ private String taskId="47502"; @Test public void setVariableValues(){ /* # 运行时参数设定 , 先这个表的数据会在任务结束的时候被清空 select * from act_ru_variable; */ TaskService taskService= processEngine.getTaskService(); //任务服务实例 //String taskId=""; taskService.setVariable(taskId, "days", 2); taskService.setVariable(taskId, "date", new Date()); taskService.setVariable(taskId, "reason","发烧了"); Student student=new Student(); student.setId(1); student.setName("张三"); taskService.setVariable(taskId, "student", student); System.out.println("设置完成!"); } @Test public void getVariableValues(){ TaskService taskService= processEngine.getTaskService(); //任务服务实例 //String taskId=""; /** * 当任务提交的时候,下一个人可以根据自己的任务id获取 到这些变量值 * 使用 42504 设置参数,使用47502也可获取到 */ Integer days = (Integer) taskService.getVariable(taskId, "days"); Date date = (Date) taskService.getVariable(taskId, "date"); String reason= (String) taskService.getVariable(taskId, "reason"); Student student=(Student) taskService.getVariable(taskId, "student"); System.out.println("days:"+days+""); System.out.println("date:"+date); System.out.println("reason:"+reason); System.out.println("student:"+student); System.out.println("------查询完成!"); /* days:2 date:Thu Jul 28 17:52:45 CST 2016 reason:发烧了 student:Student [id=1, name=张三] */ } /** * 这种设置会覆盖数据! */ @Test public void setVariableMap(){ TaskService taskService= processEngine.getTaskService(); //任务服务实例 Map<String, Object> variables =new HashMap<String, Object>(); variables.put("days", 3); variables.put("date", new Date()); variables.put("reason","发烧了22"); Student student=new Student(); student.setId(2); student.setName("张三1"); variables.put("student", student); /** *这种设置方法会覆盖task数据! */ taskService.setVariables(taskId, variables); System.out.println("设置完成!"); } @Test public void getVariableMap(){ TaskService taskService= processEngine.getTaskService(); //任务服务实例 //String taskId=""; /** * 当任务提交的时候,下一个人可以根据自己的任务id获取 到这些变量值 * 使用 42504 设置参数,使用47502也可获取到 */ Map<String ,Object> variables = (Map<String, Object>) taskService.getVariables(taskId); System.out.println(variables); System.out.println("------查询完成!"); } }
时间: 2024-10-07 05:09:49