1.启动流程实例
/**
* 启动流程实例
*/
@Test
public void test1(){
ProcessInstance instance = processEngine.getRuntimeService()
.startProcessInstanceByKey("helloworld");
System.out.println(instance.getId()+" "+instance.getActivityId());
System.out.println(instance.getProcessDefinitionId());
}
如果是单例流程(没有分支和聚合),流程实例id和执行对象id是相同的,
一个流程中流程实例只有一个,执行对象可以有多个
select * from act_ru_execution; #正在执行的执行对象表
select * from act_hi_procinst; #流程实例历史表
select * from act_ru_task; #正在执行的任务表(只有节点是userTask时,该表中有数据)
select * from act_hi_taskinst; #任务历史表(只有节点是userTask时,该表中有数据)
select * from act_hi_actinst; #所有活动节点的历史表
2.查询当前任务节点
/**
* 查询当前任务
*/
@Test
public void test2(){
List<Task> tasks = processEngine.getTaskService()
.createTaskQuery()
.taskAssignee("张三33") //指定个人任务查询
// .taskName("提交申请")//根据任务名称查询
// .executionId("35001") //根据执行对象id查询
// .processDefinitionId("helloworld:4:32504")//根据流程定义id查询
// .processInstanceId("35001") //根据流程实例id查询当前任务
// .singleResult() //唯一结果集
// .count() //数量
.list();
for(Task t:tasks){
System.out.println(t.getAssignee());
System.out.println(t.getExecutionId());
System.out.println(t.getProcessInstanceId());
System.out.println(t.getProcessDefinitionId());
System.out.println(t.getTaskDefinitionKey());
System.out.println(t.getId());
System.out.println(t.getName());
System.out.println();
}
}
3.根据流程实例判断流程是否结束
/**
* 查询流程是否结束 (流程结束会删除act_ru_**表中的数据,成为历史)
*/
@Test
public void test7(){
ProcessInstance processInstance = processEngine.getRuntimeService()
.createProcessInstanceQuery()
.processInstanceId("35001")
.singleResult();
if (processInstance==null){
System.out.println("already ending");
}else {
System.out.println("running");
}
}