04启动流程实例,任务的查询与完成
一、启动流程实例:根据流程KEY启动(常用,可在启动时带入流程数据)
在绘制流程图时可以指定流程的NAME和KEY。
首先要获取到RuntimeService,使用该对象来完成流程的启动:
@Test
public void startProcess() {
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("LeaveBill");
System.out.println("流程启动成功,流程实例ID为:"+processInstance.getId());
}
流程启动之后,即可以进行任务的查询。
最常用的两种流程实例的启动方式(都是使用流程key启动):
1、runtimeService.startProcessInstanceByKey(key,businesskey,vars);
①key:流程key
②businesskey:业务表ID,例如请假表,包含了请假人,起止时间等。
③vars:流程变量
2、runtimeService.startProcessInstanceByKey(key,businesskey);
二、任务的查询(根据流程办理人查询)
2.1提示:
在activiti中的任何查询都分三块:①条件查询②排序查询③结果集
//任务查询
@Test
public void findTask() {
TaskService taskService = processEngine.getTaskService();
Task task = taskService.createTaskQuery().taskAssignee("张三").singleResult();
System.out.println("张三的任务ID:"+task.getId());
}
三、完成任务(完成任务时可以带入流程变量)
//完成任务
@Test
public void doTask() {
TaskService taskService = processEngine.getTaskService();
taskService.complete("2504");
}
四、判断流程是否结束
应用场景:例如请假表中有一个审批状态,需要判断流程是否结束来改变请假审批的状态,可改变状态是审批中、通过或者未通过。
判断方法:
1、已知流程实例ID,通过流程实例ID在流程实例表中查出实例不为空,则流程未结束。
2、已知的是任务ID,根据任务ID查询实例ID,在按照第一个方法进行查询。