第一节:构建学生请假审批流程
第二节:执行对象概念
第三节:判断流程实例状态
第四节:历史流程实例查询
第五节:历史活动查询
package com.java1234.activiti.flow; 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(); /** * 部署流程定义 */ @Test public void deploy() { 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()); } /** * 启动流程实例 */ @Test public void start() { ProcessInstance pi = processEngine.getRuntimeService()//运行时Service .startProcessInstanceByKey("studentLeaveProcess");// System.out.println("流程实例ID:"+pi.getId()); System.out.println("流程部署Name:"+pi.getProcessDefinitionId()); } /** * 查看任务 */ @Test public void findTask() { String assignee = "学生"; List<Task> taskList = processEngine.getTaskService() .createTaskQuery() .taskAssignee(assignee) .list(); for (Task task : taskList) { System.out.println("任务ID:"+task.getId()); System.out.println("任务名称:"+task.getName()); System.out.println("任务创建时间:"+task.getCreateTime()); System.out.println("任务为派人:"+task.getAssignee()); System.out.println("流程实例ID:"+task.getProcessDefinitionId()); } } /** * 完成任务 */ @Test public void completeTask() { processEngine.getTaskService() .complete("15004"); } /** * 查询流程状态(正在执行or已经执行结束) */ @Test public void processState() { ProcessInstance pi = processEngine.getRuntimeService() .createProcessInstanceQuery() .processInstanceId("15001") .singleResult(); if(pi!=null){ System.out.println("流程正在执行!"); }else{ System.out.println("流程已经执行结束!"); } } /** * 历史任务查询 */ @Test public void historyTaskList() { List<HistoricTaskInstance> list = processEngine.getHistoryService() .createHistoricTaskInstanceQuery() .processInstanceId("15001") .finished() .list(); for (HistoricTaskInstance hti : list) { 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("================================="); } } /** * 历史活动查询 */ @Test public void historyActInstantceList() { List<HistoricActivityInstance> list = processEngine.getHistoryService()//历史相关Service .createHistoricActivityInstanceQuery()//创建历史活动实例查询 .processInstanceId("15001")//执行流程实例id .finished() .list(); for (HistoricActivityInstance hai : list) { System.out.println("活动ID:"+hai.getId()); System.out.println("流程实例ID:"+hai.getProcessInstanceId()); System.out.println("活动名称:"+hai.getActivityName()); System.out.println("办理人:"+hai.getAssignee()); System.out.println("开始时间:"+hai.getStartTime()); System.out.println("结束时间:"+hai.getEndTime()); System.out.println("================================="); } } }