• (七)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("=================================");
            }
        }
    • 结果,下图的数据来源于表act_hi_actinst

     二、历史任务查询

    •  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("=================================");
            }
        }
        
    • 结果,下图的数据来源于act_hi_taskinst表

     三、查询流程状态

        /**
         * 查询流程状态(正在执行 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("流程已经执行结束!");
            }
        }
    • 如果流程已经处理完下图中的“学生请假”和“班长审批”和“班主任审批”,那么流程已经执行结束。

  • 相关阅读:
    centos7安装gitlab
    jenkins 部署k8s-jar包项目
    jenkins部署k8s项目-CICD
    pipeline
    jenkins打包
    jenkins 按角色设置管理权限
    1 jenkins的介绍和安装
    PyTables的下载和安装
    解决python报错:ImportError: No module named shutil_get_terminal_size 的方法
    nodejs安装失败
  • 原文地址:https://www.cnblogs.com/shyroke/p/7994931.html
Copyright © 2020-2023  润新知