Activiti 部分实用功能
helloworld中已经写了关于部署流程图,查询个人任务,完成个人任务部分。现在添加几个新的实用功能
1.判断流程是否完成,代码如下
public void isProcessEnd() { String processInstanceId = "901"; ProcessInstance pi = processEngine.getRuntimeService()//表示正在执行的流程实例和执行对象 .createProcessInstanceQuery()//创建流程实例查询 .processInstanceId(processInstanceId)//使用流程实例ID查询 .singleResult(); if(pi==null){ System.out.println("流程已经结束"); } else{ System.out.println("流程没有结束"); } }
这里根据processInstanceId判断正在执行的任务中是否有该条记录,若有则没有结束,否则已经结束。此外,还可以根据历史任务中是否有endtime来判断
2.查询历史任务,代码如下
public void findHistoryTask(){ String taskAssignee = "张三"; List<HistoricTaskInstance> list = processEngine.getHistoryService()//与历史数据(历史表)相关的Service .createHistoricTaskInstanceQuery()//创建历史任务实例查询 .taskAssignee(taskAssignee)//指定历史任务的办理人 .list(); if(list!=null && list.size()>0){ for(HistoricTaskInstance hti:list){ System.out.println(hti.getId()+" "+hti.getName()+" "+hti.getProcessInstanceId()+" "+hti.getStartTime()+" "+hti.getEndTime()+" "+hti.getDurationInMillis()); System.out.println("################################"); } } }
3.查询历史流程实例
代码如下
public void findHistoryProcessInstance(){ String processInstanceId = "901"; HistoricProcessInstance hpi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service .createHistoricProcessInstanceQuery()//创建历史流程实例查询 .processInstanceId(processInstanceId)//使用流程实例ID查询 .singleResult(); System.out.println(hpi.getId()+" "+hpi.getProcessDefinitionId()+" "+hpi.getStartTime()+" "+hpi.getEndTime()+" "+hpi.getDurationInMillis()+" "+hpi.getEndActivityId()); }