跳到主要内容

网关

通用符号

所有类型网关均为菱形

Gateways_image1.png

功能

控制流程Trigger流动路径的选择

要点

分类

  • 根据后继分支间的关系逻辑分为
    • 互斥网关Trigger只能选择多条后继分支中其中最先满足条件的一条流动
    • 互容网关:Trigger会生成多个子Trigger流向所有满足条件的后继分支,需要配对使用同步网关汇合这些子Trigger
    • 同步网关:汇合所有子Trigger后,原有Trigger继续向后流动,用于流程分叉多分支汇合
  • 根据工作机制分为
    • 概率网关:依据概率采样选择后继分支
    • 条件网关:依据条件表达式计算结果选择后继分支
    • 滤波网关等:依据到达的Trigger按周期过滤选择后期分支
  • 一个具体网关称之为 "机制-逻辑-网关",如"概率互斥网关"、"条件互容网关"...

动作前后计算

Gateways_image2.png

  • 网关动作前后的计算,分别按流入和流出Trigger触发
  • 例如一个Trigger流经一个有5条后继分支的互容网关,所有分支条件都满足,那么动作前计算1次,动作后计算5次

组件无输出数据

设置方法

包括类型选择和各种类型的特定设置

类型选择

  • 属性设置面板类型选择如下图

    Gateways_image3.png

  • 各种详细设置见下

概率互斥网关

  • 符号

    Gateways_image4.png

  • 功能

    按照概率选择Trigger流向的一条后继分支

  • 属性设置面板样式

    Gateways_image5.png

  • 设置方法

    • 分支概率

      当以后继链连接后续组件后,网关属性设置面板会出现后继分支概率表,每行代表一条后继分支,第1列是后续组件名,在第2列的输入栏中指定对应后续分支的概率,接受能返回Number类型表达式

    • 其余设定通用,略

  • 运行机制

    • 每次被触发时,按概率采样决定走哪一条后继分支
    • 系统会自动的归一化各分支概率,所以上图中的设置相当于每条分支概率都是50%
模型示例

模型最大运行100个Tick,Pa为概率网关走后续a+1分支的概率,所以走b+1分支概率为1-Pa,你可以调节最上方的Pa控制滑块来设定不同值观察模型运行结果的差异。

条件互斥网关

  • 符号

    Gateways_image6.png

  • 功能

    按自定义条件选择Trigger流向的一条后继分支,相当于"if...elseif...else"

  • 属性设置面板

    Gateways_image7.png

  • 设置方法

    • 创建判断条件

      每点击"增加条件按钮"会增加一行条件表达式输入框,多行输入框的名称分别为if,elseif,elseif,..., else

    • 输入条件判断表达式

      需要返回Bool值,最后的else条件无需输入

    • 选择后继分支

      在对应条件条件表达式的goto下拉菜单中选择后继链已经连接的分支或禁用

    • 其余设定通用,略

  • 运行机制

    • 网关被触发时按从上到下的顺序依次计算条件表达式,一旦返回True,Trigger立即流向相应分支,所有条件表达式均返回False时,走else分支
    • 当后继分支选择为禁用,而条件判断Trigger应走该分支时,运行时将报错
模型示例

根据Score的值评价结果Result,试试调节Score变量的控制器后运行模型观察Result的结果。

同步网关

  • 符号

    Gateways_image8.png

  • 功能

    汇合流程分叉的各分支子Trigger(流程并行分支或相容网关都可能产生)后,恢复分支前原Trigger,以继续向后流动

  • 属性设置面板样式如下,无需任何设置

    Gateways_image9.png

模型案例

主动开始事件产生的Trigger由于并行分支,产生2个分支Trigger分别触发对初值为0的变量Count的+1运算,所以最终结果为2,同步网关合流后原有Trigger继续向后流动。

滤波互斥网关

  • 符号

    Gateways_image10.png

  • 功能

    按一定周期对到达Trigger进行计数过滤,使滤出的Trigger流向指定分支

  • 属性设置面板样式

    Gateways_image11.png

  • 设置方法

    • 起始Trigger

      接受自然数,表示从第几个Trigger开始过滤

    • 每多少Trigger

      接受自然数,表示过滤出一个Trigger的周期

    • 滤出Trigger流向分支选择

      下拉菜单选择后继链连接的分支

    • 未滤出Trigger流向分支选择

      下拉菜单选择后继链连接的分支

      提示
      • 滤波网关只能有2个后继分支——滤出的和未滤出Trigger的后继分支
      • 过滤目标并非是全局的Tick,而是到达当前网关的Trigger
    • 其余设定通用,略

提示
  • 过滤目标并非是全局的Tick,而是到达当前网关的Trigger
模型案例

每10个Trigger向存量池中添加一次1单位的资源x,共100Tick,添加了10次。