Activiti之历史活动查询和历史任务查询和流程状态查询

下图的流程从学生请假到班主任审批都已经完成,本章用来测试查询历史活动和历史任务的
在这里插入图片描述
activiti5的历史活动包括所有节点(上图的圆圈)和任务(上图的矩形),而历史任务只包含任务。所以一般开发中查询历史活动比较常用。

一、历史活动查询

/**
     * 历史活动查询
     */
    @Test
    public void historyActInstanceList(){
        List<HistoricActivityInstance>  list=processEngine.getHistoryService() // 历史相关Service
            .createHistoricActivityInstanceQuery() // 创建历史活动实例查询
            .processInstanceId("2501") // 执行流程实例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("=================================");
        }
    }

在这里插入图片描述

二、历史任务查询

activiti5的历史活动包括所有节点(上图的圆圈)和任务(上图的矩形),而历史任务只包含任务。所以一般开发中查询历史活动比较常用。

/**
     * 历史任务查询
     */
    @Test
    public void historyTaskList(){
        List<HistoricTaskInstance> list=processEngine.getHistoryService() // 历史相关Service
            .createHistoricTaskInstanceQuery() // 创建历史任务实例查询
            .processInstanceId("2501") // 用流程实例id查询
            .finished() // 查询已经完成的任务
            .list(); 
        for(HistoricTaskInstance hti:list){
            System.out.println("任务ID:"+hti.getId());
            System.out.println("流程实例ID:"+hti.getProcessInstanceId());
            System.out.println("任务名称:"+hti.getName());
            System.out.println("办理人:"+hti.getAssignee());
            System.out.println("开始时间:"+hti.getStartTime());
            System.out.println("结束时间:"+hti.getEndTime());
            System.out.println("=================================");
        }
    }

在这里插入图片描述

三、查询流程状态

/**
     * 查询流程状态(正在执行 or 已经执行结束)
     */
    @Test
    public void processState(){
        ProcessInstance pi=processEngine.getRuntimeService() // 获取运行时Service
            .createProcessInstanceQuery() // 创建流程实例查询
            .processInstanceId("2501") // 用流程实例id查询
            .singleResult();
        if(pi!=null){
            System.out.println("流程正在执行!");
        }else{
            System.out.println("流程已经执行结束!");
        }
    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti中,我们可以使用相应的API来查询有效的历史节点。有效的历史节点是指已经完成或终止的任务节点,这些节点的执行状态已经结束,不再需要进一步的处理。 要查询有效的历史节点,我们可以使用`HistoryService`提供的方法。其中,`createHistoricActivityInstanceQuery()`用于创建一个历史节点查询对象。通过该对象,我们可以设置查询的条件、排序规则和分页参数等。 在设置查询条件时,我们可以使用`finished()`方法来指定只查询已完成的历史节点。这样,返回的结果集中只包含已完成的任务节点。 示例代码如下: ```java HistoryService historyService = processEngine.getHistoryService(); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery() .finished(); List<HistoricActivityInstance> historyList = query.list(); for (HistoricActivityInstance activity : historyList) { System.out.println("Activity ID: " + activity.getActivityId()); System.out.println("Activity Name: " + activity.getActivityName()); System.out.println("Activity Type: " + activity.getActivityType()); System.out.println("Execution ID: " + activity.getExecutionId()); System.out.println("Process Instance ID: " + activity.getProcessInstanceId()); } ``` 通过以上代码,我们可以获取已完成的历史节点,并显示节点的相关信息,如节点ID、节点名称、节点类型、执行ID和流程实例ID等。 需要注意的是,如果我们想要查询已完成的历史节点以外的其他类型的节点,可以根据具体的需求使用`activityType()`方法进行筛选。 总结起来,通过Activiti的API,我们可以很方便地查询有效的历史节点,从而了解已完成的任务节点的相关信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值