Activiti 部分实用功能

  helloworld中已经写了关于部署流程图,查询个人任务,完成个人任务部分。现在添加几个新的实用功能

  1.判断流程是否完成,代码如下

public void isProcessEnd()
    {
        String processInstanceId = "901";
        ProcessInstance pi = processEngine.getRuntimeService()//表示正在执行的流程实例和执行对象
                .createProcessInstanceQuery()//创建流程实例查询
                .processInstanceId(processInstanceId)//使用流程实例ID查询
                .singleResult();
        if(pi==null){
            System.out.println("流程已经结束");
        }
        else{
            System.out.println("流程没有结束");
        }
    }

  这里根据processInstanceId判断正在执行的任务中是否有该条记录,若有则没有结束,否则已经结束。此外,还可以根据历史任务中是否有endtime来判断

  2.查询历史任务,代码如下

  

public void findHistoryTask(){
        String taskAssignee = "张三";
        List<HistoricTaskInstance> list = processEngine.getHistoryService()//与历史数据(历史表)相关的Service
                        .createHistoricTaskInstanceQuery()//创建历史任务实例查询
                        .taskAssignee(taskAssignee)//指定历史任务的办理人
                        .list();
        if(list!=null && list.size()>0){
            for(HistoricTaskInstance hti:list){
                System.out.println(hti.getId()+"    "+hti.getName()+"    "+hti.getProcessInstanceId()+"   "+hti.getStartTime()+"   "+hti.getEndTime()+"   "+hti.getDurationInMillis());
                System.out.println("################################");
            }
        }
    }

  3.查询历史流程实例

  代码如下

public void findHistoryProcessInstance(){
        String processInstanceId = "901";
        HistoricProcessInstance hpi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service
                        .createHistoricProcessInstanceQuery()//创建历史流程实例查询
                        .processInstanceId(processInstanceId)//使用流程实例ID查询
                        .singleResult();
        System.out.println(hpi.getId()+"    "+hpi.getProcessDefinitionId()+"    "+hpi.getStartTime()+"    "+hpi.getEndTime()+"     "+hpi.getDurationInMillis()+"     "+hpi.getEndActivityId());
    }

  

posted @ 2015-08-14 08:49  icychen  阅读(1028)  评论(0编辑  收藏  举报