Activiti获取下一个节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
      * 根据实例编号查找下一个任务节点
      * @param String procInstId :实例编号
      * @return
      */
     public  TaskDefinition nextTaskDefinition(String procInstId){
         //流程标示
         String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(procInstId).singleResult().getProcessDefinitionId();
           
         ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)repositoryService).getDeployedProcessDefinition(processDefinitionId);
         //执行实例
         ExecutionEntity execution = (ExecutionEntity) runtimeService.createProcessInstanceQuery().processInstanceId(procInstId).singleResult();
         //当前实例的执行到哪个节点
         String activitiId = execution.getActivityId();
         //获得当前任务的所有节点
         List<ActivityImpl> activitiList = def.getActivities();
         String id =  null ;
         for (ActivityImpl activityImpl:activitiList){
             id = activityImpl.getId();
             if (activitiId.equals(id)){
                 System.out.println( "当前任务:" +activityImpl.getProperty( "name" ));
                 return  nextTaskDefinition(activityImpl, activityImpl.getId(), "${iscorrect==1}" );
//              System.out.println(taskDefinition.getCandidateGroupIdExpressions().toArray()[0]);
//              return taskDefinition;
             }
         }
         return  null ;
     }
       
     /**
      * 下一个任务节点
      * @param activityImpl
      * @param activityId
      * @param elString
      * @return
      */
     private  TaskDefinition nextTaskDefinition(ActivityImpl activityImpl, String activityId, String elString){
             if ( "userTask" .equals(activityImpl.getProperty( "type" )) && !activityId.equals(activityImpl.getId())){
                 TaskDefinition taskDefinition = ((UserTaskActivityBehavior)activityImpl.getActivityBehavior()).getTaskDefinition();
//              taskDefinition.getCandidateGroupIdExpressions().toArray();
                 return  taskDefinition;
             } else {
                 List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions();
                 List<PvmTransition> outTransitionsTemp =  null ;
                 for (PvmTransition tr:outTransitions){
                     PvmActivity ac = tr.getDestination();  //获取线路的终点节点
                     if ( "exclusiveGateway" .equals(ac.getProperty( "type" ))){
                         outTransitionsTemp = ac.getOutgoingTransitions();
                         if (outTransitionsTemp.size() ==  1 ){
                             return  nextTaskDefinition((ActivityImpl)outTransitionsTemp.get( 0 ).getDestination(), activityId, elString);
                         } else  if (outTransitionsTemp.size() >  1 ){
                             for (PvmTransition tr1 : outTransitionsTemp){
                                 Object s = tr1.getProperty( "conditionText" );
                                 if (elString.equals(StrUtils.trim(s.toString()))){
                                     return  nextTaskDefinition((ActivityImpl)tr1.getDestination(), activityId, elString);
                                 }
                             }
                         }
                     } else  if ( "userTask" .equals(ac.getProperty( "type" ))){
                         return  ((UserTaskActivityBehavior)((ActivityImpl)ac).getActivityBehavior()).getTaskDefinition();
                     } else {
                         logger.debug(ac.getProperty( "type" ));
                     }
                 }
             return  null ;
         }
     }
本文转自yunlielai51CTO博客,原文链接: http://blog.51cto.com/4925054/1340352 ,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值