排他网关/并行网关

1.排他网关

1.画图生成bpmn文件



  
    
    
    
    
    
    
    
      5000}]]>
    
    
      
    
    
    
  
  
    
      
        
        
          
        
      
      
        
        
          
        
      
      
        
        
          
        
      
      
        
        
          
        
      
      
        
        
          
        
      
      
        
        
        
          
        
      
      
        
        
        
          
        
      
      
        
        
        
          
        
      
      
        
        
        
          
        
      
      
        
        
        
          
        
      
    
  

2.启动流程实例

    @Test
    public void test1(){
        HashMap map = new HashMap<>();
        map.put("money",6000);
        ProcessInstance instance = processEngine.getRuntimeService()
                .startProcessInstanceByKey("myProcess_1",map);
        System.out.println(instance.getId()+"   "+instance.getActivityId());
        System.out.println(instance.getProcessDefinitionId());
    }

3.查看数据库任务节点

 

 4.总结

  1. 一个排他网关对应一个以上的顺序流
  2. 由排他网关流出的顺序流都有个conditionExpression元素,在内部维护返回boolean类型的决策结果。
  3. 决策网关只会返回一条结果。当流程执行到排他网关时,流程引擎会自动检索网关出口,从上到下检索如果发现第一条决策结果为true或者没有设置条件的(默认为成立),则流出。
  4. 如果没有任何一个出口符合条件,则抛出异常,使用流程变量,设置连线的条件,并按照连线的条件执行工作流,如果没有条件符合的条件,则以默认的连线离开

2.并行网关

  1. 一个流程中流程实例只有1个,执行对象有多个,汇聚处的活动节点是多个。
  2. 并行网关的功能是基于进入和外出的顺序流的:

分支(fork): 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。

汇聚(join): 所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。

  1. 并行网关的进入和外出都是使用相同节点标识
  2. 如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功能。 这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。
  3. 并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略。

你可能感兴趣的:(从头开始学activiti)