需求
针对每个流程,有时候需要查看项目审核的过程,这个时候,就需要查看指定流程定义下指定流程实例下的任务明细。
涉及到的表
act_hi_taskinst:任务实例表
方案
根据流程定义key,流程实例id,依赖historyservice查询
代码(可以设置任务负责人查询负责人对任务的操作)
public void queryHistoryTask(){
HistoryService historyService = processEngine.getHistoryService();
//创建查询对象,用户查询历史任务
HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery();
//设置查询条件
//设置taskAssignee只查询某个用户的历史任务
//historicTaskInstanceQuery.taskAssignee(taskAssignee);
//指定流程定义key,只查询该流程下所有流程实例所有历史任务
String processDefinitionKey = "purchasingflow";
historicTaskInstanceQuery.processDefinitionKey(processDefinitionKey);
//指定流程实例id,只查询该流程实例执行的历史任务,流程实例的id也可以完成也可以是未完成
String processInstanceId = "902";
historicTaskInstanceQuery.processInstanceId(processInstanceId);
//查询历史任务查询流程变量
historicTaskInstanceQuery.includeTaskLocalVariables();
List<HistoricTaskInstance> list = historicTaskInstanceQuery.list();
for (HistoricTaskInstance historicTaskInstance : list) {
System.out.println("-------------------------");
System.out.println("流程实例id:"+ historicTaskInstance.getProcessInstanceId());
System.out.println("任务id:" + historicTaskInstance.getId());
System.out.println("任务标识:" + historicTaskInstance.getTaskDefinitionKey());
System.out.println("任务负责人:" + historicTaskInstance.getAssignee());
System.out.println("任务名称:" + historicTaskInstance.getName());
System.out.println("任务开始时间:" + historicTaskInstance.getStartTime());
System.out.println("任务结束时间:" + historicTaskInstance.getEndTime());
OrderCustom orderCustom = (OrderCustom)historicTaskInstance.getTaskLocalVariables().get("order");
System.out.println("流程变量:" + orderCustom.getPrice());
}
}