Activiti 7系列文章目录
Activiti7 工作流设计器【一】
Activiti7 创建表【二】
Activiti7 表结构介绍 【三】
Activiti7 设计器创建流程 【四】
Activiti7 部署流程【五】
Activiti7 查询流程【六】
Activiti7 删除流程【七】
Activiti7 生成SVG图片【八】
Activiti7 发起任务【九】
Activiti7 查询任务执行流程图【十】
Activiti7 完成任务【十一】
Activiti7 历史数据【十二】
Activiti7 任务办理人、委派、转办、持有人、候选人、候选人组、审批意见【十三】
Activiti7 监听器【十四】
Activiti7 流程变量【十五】
Activiti7 网关Gateway【十六】
Activiti7 整合SpringBoot【十七】
Activiti7 多种任务类型【十八】
Activiti7 子流程【十九】
Activiti7 流程回退、流程拒绝【二十】
14、Activiti7 查询历史流程实例、活动、任务
我们可以通过activiti的TaskService以及HistoryService来查询当前任务,以及将当前执行的流程图输出,这样我们在项目中就可以实时查询流程执行到的具体位置
查询当前任务节点
//查询当前任务节点
@Test
public void testQueryCurrentTask(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
List<Task> list = taskService.createTaskQuery().list();
for (Task task : list) {
System.out.println("task.getId() = " + task.getId());
System.out.println("task.getName() = " + task.getName());
}
}
查询当前任务节点图
这里最主要是的是查询到历史的人物活动节点,是开始、过程中、还是结束。。。
/**
* 生成流程图
*/
@Test
public void generateTaskToSvg() throws IOException {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
RuntimeService runtimeService = processEngine.getRuntimeService();
RepositoryService repositoryService = processEngine.getRepositoryService();
HistoryService historyService = processEngine.getHistoryService();
//这里只是返回所有任务最新的一个任务,实际开发中大家可以根据taskid来生成
HistoricTaskInstance historicTaskInstance = historyService
.createHistoricTaskInstanceQuery()
.orderByTaskCreateTime().desc()
.list().get(0);
BpmnModel model = repositoryService.getBpmnModel(historicTaskInstance.getProcessDefinitionId());
ProcessDiagramGenerator generator = new DefaultProcessDiagramGenerator();
//lastTask是当前任务执行到的位置
List<HistoricActivityInstance> lastTasks =
historyService.createHistoricActivityInstanceQuery()
.processInstanceId(historicTaskInstance.getProcessInstanceId())
.orderByHistoricActivityInstanceStartTime()
.desc()
.list();
List<String> lastTask = lastTasks.stream()
.map(HistoricActivityInstance::getActivityId)
.limit(1)
.collect(Collectors.toList());
lastTask.add(lastTasks.get(0).getActivityId());
//七个参数分别是:
// BPMNModel
// 高光节点
// 高光顺序流
// 活动字体名称
// 标签字体名称
// 批注字体名称
// 生成默认关系图
// 默认关系图映像文件名
InputStream inputStream = generator.generateDiagram(
model, lastTask, Collections.emptyList(), "宋体", "宋体", "宋体", true, "test");
String imageName = "image-" + Instant.now().getEpochSecond() + ".svg";
FileUtils.copyInputStreamToFile(inputStream, new File("processes/" + imageName));
}
生成如下图,表示该流程执行到【经理审批】节点