Activiti 查询历史流程实例

2 篇文章 0 订阅
1 篇文章 0 订阅

需求

用户和管理员有时候需要统计,有多少个业务实例通过了审核,这个时候需要查询指定流程下的已完成的流程实例,用做后期的统计

根据流程定义key,依赖historyservice服务来完成

代码

 public Map processState(@RequestParam Integer num,@RequestParam String  processDefinitionKey,
            @RequestParam Integer size ){
    	SearchStartedProcess searchStartedProcess = new SearchStartedProcess();
    	searchStartedProcess.setProcessDefinitionKey(processDefinitionKey);
    	//searchStartedProcess.setProcessDefinitionName(processDefinitionName);
    	
    	if (num <= 1)
    		num = 1;
        if (size <= 1)
        	size = 0xf423f;
        int start = (num - 1) * size;
        int limit = size*num;
        HistoryService historyService = processEngine.getHistoryService();
        //创建历史流程实例,查询对象
//        HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery();
//        List<HistoricProcessInstance> lists = historicProcessInstanceQuery.list();
        HistoricProcessInstanceQuery taskQuery = getTaskQuery(searchStartedProcess);
        //数据列表
       
        List<HistoricProcessInstance> list = taskQuery.list();
        for (HistoricProcessInstance historicProcessInstance : list) {
            System.out.println("===================");
            System.out.println("流程实例所属流程定义id:" + historicProcessInstance.getProcessDefinitionId());
            System.out.println("流程实例id:"+ historicProcessInstance.getId());
            System.out.println("业务标识:" + historicProcessInstance.getBusinessKey());
            System.out.println("开始执行时间:" + historicProcessInstance.getStartTime());
            System.out.println("结束执行时间:" + historicProcessInstance.getEndTime());
            System.out.println("执行时长:" + historicProcessInstance.getDurationInMillis());
        }
        total  = list.size();
        List listss = new ArrayList();
        listss=list.subList(start, (limit>total?total:(limit)));
        Map map = new HashMap();
        map.put("list",listss);
        map.put("total",total);
        map.put("pageSize",size);
        map.put("pageNum",num);
        return map;

    }
    //流程实例查询条件的过滤
     private HistoricProcessInstanceQuery getTaskQuery(SearchStartedProcess searchStartedProcess) {
    	HistoryService historyService = processEngine.getHistoryService();
    	 HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery();
        if (searchStartedProcess != null) {
            Authentication auth= SecurityContextHolder.getContext().getAuthentication();
            String creator=auth.getName();
          
            String processDefinitionKey = searchStartedProcess.getProcessDefinitionKey();
            if (StringUtils.isNotEmpty(processDefinitionKey)) {
            	historicProcessInstanceQuery = historicProcessInstanceQuery.processDefinitionKey(processDefinitionKey);
            }
//            String processDefinitionName = searchStartedProcess.getProcessDefinitionName();
//            if (StringUtils.isNotEmpty(processDefinitionName)) {
//            	historicProcessInstanceQuery = historicProcessInstanceQuery.processDefinitionName(processDefinitionName);
//            }


            /*taskQuery.taskCreatedBefore();
            taskQuery.taskCreatedAfter()
            */

        }
        return historicProcessInstanceQuery;
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值