1.源码地址:https://github.com/heidaodageshiwo/springbootactivity
实际工作流项目中,有一个功能叫做 历史任务查询。
我们其实查询的是历史任务实例表;
当然这个表的话,不管是已经完结的任务 还是正在执行的任务,都会记录下这个表里。Activiti给我们提供了一个接口 finished;
加了之后 就是查询已经完结的任务; 同理还有一个接口unfinished 顾名思义,就是查询未完结的任务;当然这两个都不加,就是把所有任务都查询出来;
@Autowired
HistoryService historyService;
@RequestMapping("/historyActInstanceList")
/**
* 历史活动查询
*/
public String historyActInstanceList(){
List<HistoricActivityInstance> list=historyService // 历史任务Service
.createHistoricActivityInstanceQuery() // 创建历史活动实例查询
.processInstanceId("12998") // 指定流程实例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("===========================");
}
return "historyActInstanceList";
}
历史流程实例
开发中 有时候我们也需要通过流程实例ID来查询历史流程实例。
其实本质就是查询历史流程实例表;
这个表的id和流程实例id始终是一样的。所以Activiti没有提供获取流程实例id的接口;
因为直接getId()获取的值和流程实例Id是一样的;
@Autowired
HistoryService historyService;
@RequestMapping("/getHistoryProcessInstance")
/**
* 查询历史流程实例
*/
public String getHistoryProcessInstance(){
HistoricProcessInstance hpi= historyService // 历史任务Service
.createHistoricProcessInstanceQuery() // 创建历史流程实例查询
.processInstanceId("17505") // 指定流程实例ID
.singleResult();
System.out.println("流程实例ID:"+hpi.getId());
System.out.println("创建时间:"+hpi.getStartTime());
System.out.println("结束时间:"+hpi.getEndTime());
return "getHistoryProcessInstance";
}