Activiti工作流学习笔记入门(四)——流程实例的构建、判断状态、历史流程实例查询和历史活动查询
第一节:构建学生请假审批流程
第二节:执行对象概念
第三节:判断流程实例状态
第四节:历史流程实例查询
第五节:历史活动查询
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("=================================");
}
}
}