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 ,如需转载请自行联系原作者
相关文章
|
5月前
activiti5 taskService.setVariable与taskService.setVariableLocal区别
activiti5 taskService.setVariable与taskService.setVariableLocal区别
118 0
activiti5 taskService.setVariable与taskService.setVariableLocal区别
|
12月前
34activiti - 开始活动节点
34activiti - 开始活动节点
31 0
|
XML 存储 SQL
Activiti-介绍和使用步骤
Activiti-介绍和使用步骤
Activiti-介绍和使用步骤
|
XML 数据可视化 Java
Activiti-ProcessEngine创建方式和Servcie介绍
Activiti-ProcessEngine创建方式和Servcie介绍
Activiti-ProcessEngine创建方式和Servcie介绍
SpringBoot+Activiti6流程节点的任意跳转
项目中遇到的要求,在此记录一下。可以回退,可以任意跳转,都会有记录。
|
容器 Java 测试技术
Activiti 6.x【12】剩下的一些组件
版权声明:转载注明出处就OK的说,有些东西会转载,都会注明的说= =如果有冒犯麻烦见谅 https://blog.csdn.net/Pan1458689676/article/details/82731811 ...
1361 0
|
XML 数据库 数据格式
activiti 任务节点 处理人设置
1.1.1. 前言 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) 我们在使用activiti 工作流引擎的时候,最常用的肯定是任务节点,因为在OA系统、审批系统、办公自动化系统中核心的处理就是流程的运转,流程的运转依赖于人员如何设置,人员的设置是非常重要的一个环节,所以说如果能让activiti 工作流引擎运转的核心,就必须要支持强大的人员组织架构设计。
2687 0