package com.java1234.activiti.flow;import static org.junit.Assert.*;import java.util.List;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngines;import org.activiti.engine.history.HistoricActivityInstance;import org.activiti.engine.history.HistoricTaskInstance;import org.activiti.engine.repository.Deployment;import org.activiti.engine.runtime.ProcessInstance;import org.activiti.engine.task.Task;import org.junit.Test;public class StudentLeaveProcess { /** * 获取默认流程引擎实例,默认读取配置文件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; */ } /** * 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(){ ListtaskList= 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("30004"); //使用上面: 任务Id:(17504) System.out.println("任务完成!"); } /** * 5.查询李四的任务,上面有方法 *//** 查询结果!任务Id:20002 ,32502任务Name:班长审批任务创建时间:Thu Jul 28 15:37:04 CST 2016任务委派人:李四任务实例ID:17501,30001 */ /** * 6.完成任务,让李四完成任务 */ @Test public void completeTask6(){ processEngine.getTaskService()//任务服务器 .complete("32502"); //使用上面: 任务Id:(17504) System.out.println("任务完成"); } /** * 7.查询王五任务, 调用findTask, */ /**任务Id:22502任务Name:班主任审批任务创建时间:Thu Jul 28 15:44:36 CST 2016任务委派人:王五任务实例ID:17501 */ /** * 8.完成任务,让王五完成任务 */ @Test public void completeTask8(){ processEngine.getTaskService()//任务服务器 .complete("35002"); //使用上面: 任务Id:(17504) System.out.println("任务完成"); } /** * 查询流程状体(正在执行Or 已经执行结束) * act_ru_excution 的proc_inst_id字段 */ @Test public void processState(){ ProcessInstance pi= processEngine.getRuntimeService()// 获取运行时的service .createProcessInstanceQuery()//创建流程实例查询 .processInstanceId("30001")//act_ru_excution 的proc_inst_id字段 .singleResult(); if(pi!=null){ System.out.println("流程正在执行!"); }else{ System.out.println("流程已经执行结束!"); } } /** * 历史任务查询 */ @Test public void historyTaskList(){ List list = processEngine.getHistoryService()// 历史服务器 .createHistoricTaskInstanceQuery() //历史任务,是列,查询 .processInstanceId("30001")// 流程实例查询! .finished() //查询已经完成的 .list(); for(HistoricTaskInstance hti: list){ // select * from act_hi_taskinst; System.out.println("任务Id:"+hti.getId()); System.out.println("流程实例Id:"+hti.getProcessInstanceId()); System.out.println("任务名称:"+hti.getName()); System.out.println("办理人:"+hti.getAssignee()); System.out.println("开始时间:"+hti.getStartTime()); System.out.println("结束时间:"+hti.getEndTime()); System.out.println("---------------------"); } /*任务Id:30004流程实例Id:30001任务名称:学生请假申请办理人:张三开始时间:Thu Jul 28 16:14:46 CST 2016结束时间:Thu Jul 28 16:16:29 CST 2016---------------------任务Id:32502流程实例Id:30001任务名称:班长审批办理人:李四开始时间:Thu Jul 28 16:16:29 CST 2016结束时间:Thu Jul 28 16:20:56 CST 2016---------------------任务Id:35002流程实例Id:30001任务名称:班主任审批办理人:王五开始时间:Thu Jul 28 16:20:56 CST 2016结束时间:Thu Jul 28 16:22:43 CST 2016--------------------- */ } /** * 历史活动任务查询 */ @Test public void historyActTaskList(){ List list = processEngine.getHistoryService()// 历史服务器 .createHistoricActivityInstanceQuery() //历史任务,是列,查询 .processInstanceId("30001")// 流程实例查询! .finished() //查询已经完成的 .list(); for(HistoricActivityInstance hati: list){ // select * from act_hi_actinst; System.out.println("任务Id:"+hati.getId()); System.out.println("流程实例Id:"+hati.getProcessInstanceId()); System.out.println("活动名称:"+hati.getActivityName()); System.out.println("办理人:"+hati.getAssignee()); System.out.println("开始时间:"+hati.getStartTime()); System.out.println("结束时间:"+hati.getEndTime()); System.out.println("---------------------"); } /*任务Id:30002流程实例Id:30001活动名称:Start办理人:null开始时间:Thu Jul 28 16:14:46 CST 2016结束时间:Thu Jul 28 16:14:46 CST 2016---------------------任务Id:30003流程实例Id:30001活动名称:学生请假申请办理人:张三开始时间:Thu Jul 28 16:14:46 CST 2016结束时间:Thu Jul 28 16:16:29 CST 2016---------------------任务Id:32501流程实例Id:30001活动名称:班长审批办理人:李四开始时间:Thu Jul 28 16:16:29 CST 2016结束时间:Thu Jul 28 16:20:56 CST 2016---------------------任务Id:35001流程实例Id:30001活动名称:班主任审批办理人:王五开始时间:Thu Jul 28 16:20:56 CST 2016结束时间:Thu Jul 28 16:22:43 CST 2016---------------------任务Id:37501流程实例Id:30001活动名称:End办理人:null开始时间:Thu Jul 28 16:22:43 CST 2016结束时间:Thu Jul 28 16:22:43 CST 2016--------------------- */ }}