Activiti的网关

其实在前面的请假审批中也使用了网关的概念

排他网关

  1. 排他网关,也可以叫基于数据的排他网关,用来在流程中实现决策。当流程执行到这个网关的时候,所有分支会判断条件是否为true,如果为true则执行该分支。(排他网关只会选择一个为true的分支执行,即使有两个分支都为true也只会选择一条去执行),也就是多条线路选择其中一条走,多条条件相等则走id更小的值,打开xml文件可以看到


    ExclusiveGateway

并行网关

  1. 并行网关允许将流程分成多条分支,也可以把多条分支会聚到一起,并行网关的功能时基于进入和外出顺序流的
  • fork分支:并行后的所有外出的顺序流,为每个顺序流都创建一个并发分支。
  • join汇聚
    所有到达并行网关,在此等待的进入分支,直到所有进入顺序流的分支都到达后,流程才会通过汇聚网关(也就是说当分支里的任务都完成了汇聚才会走一下步)
    一个并行网关可以有多个进入和多个外出顺序流,网关会先汇聚所有的进入的顺序流,然后才切分多个并行分支。
    区别:并行网关不会解析条件。即使顺序中定义了条件,也会被忽略
    前面第一个ParallelGateway就是fork分支,后面的是join汇聚,如果流程图里有多组并行分支,中间的ParallelGateway起到join汇聚的作用和fork分支的作用。
ParallelGateway

包含网关

  1. 包含网关可以说是并行网关和排他网关的结合体,和排他网关一样,可以在外出顺序流上定义条件,包含网关会解析它们。主要的区别是,包含网关可以选择多余一条符合条件的分支,这就跟并行网关有点类似了。
    即所有外出流的条件都会被解析,结果为true的顺序流会以并行的方式继续往下执行,会为,每个顺序流创建一个分支,然后包含网关会等待所有条件为true的分支流程都完成后,流程才会通过包含网关继续往下执行。
    下面以体检为例画出流程图,就是当一个部门体检,有可能有些人需要附加体检项目,有些人不需要,所以说这时候就会有多条分支,当所有分支都一一执行完了才会通过下一个的包含网关。


    inclusiveGateway

分析

前提:userType=1 是普通的体检,userType=2 是需要附加体检项目
当张三填写请体检单假如他的Type为2,我们可以看出userType=2时三个分支都成立,所以张三需要把这三个分支上的项目都做完(没有顺序,可以先执行附加体检项目,也可以先做常规体检项目,反正所有分支的任务执行完就可以)才能往下执行。

你可能感兴趣的:(Activiti的网关)