跳到主要内容

流程

图标

ProcessUnits_image1.png

功能

流程单元容纳一系列按特定顺序连接流程步骤,用于表达行为

BPMN(业务流程模型和标注)2.0

"A process describes a sequence or flow of activities in an organization with the objective of carrying out work."

“流程描述了组织中一系列活动的顺序或流程,其目标是完成工作。”

要点

行为执行者

  • 流程单元对象所在画布的主体就是行为的执行者和所有者,如:根画布流程执行者是全局观察者、实体画布内的流程由该Agent个体或观察者执行
  • 由于共用画布,实体行为流程具体属于个体还是观察者,取决于流程的归属选择,他们的默认符号如下
    • 个体流程

      ProcessUnits_image2.png

    • 观察者流程

      ProcessUnits_image3.png

主动与被动

  • 根据触发运行的方式不同,流程分为主动和被动,由流程的开始事件的主动性设定决定
  • 主动流程的执行由系统Tick触发,不依赖其它流程
  • 被动流程的执行依赖其它流程触发,包括被调用、接收消息、父级流程触发

子流程

一个被动流程也可以被视作"流程步骤"连接在一个父级流程中,成为子流程

流程Trigger

一个流程的每次运行都是由一个特定令牌触发,叫做Trigger,运行完成后销毁

被动流程的调用

  • 被动流程可以被其他流程使用调用请求调用而触发执行
  • 二者区别是前者调用者与执行者相同,后者不同
  • 实体可以在其流程中直接调用自己的其他被动行为,而不能直接调用其它实体的行为,但是可以使用请求组件间接触发其被动行为,相当于Ask someone to do something
  • 实体种群的个体可以直接调用观察者的行为,但观察者不能直接调用个体行为,需要使用请求组件,同上述
提示

请求是实体间重要的交互方式,概念和其它的交互方式参见实体间交互章节

被动流程的并发

  • 被动流程可能被多点触发,因此可能会出现同时并行执行的情况叫做流程并发
  • 最大并发数量:一个被动流程能够被外部Trigger同时触发的最大数量
模型案例

上方的灰色流程在被调用时会推迟2Tick再执行计算动作,流程设置了并发限制为1。

下方有2个蓝色主动流程都将在Tick1调用灰色流程。

模型应该在第几个Tick结束?

因为被调用的灰色流程有最大并发限制,所以两个主动蓝色流程的其中1个必须等待另一个调用结束才能运行,所以模型最终在Tick5结束,而不是Tick3。放开灰色流程的并发限制(0或≥2),模型将在Tick3结束。

流程块

图形建模语法

  • 流程单元可以放置在根画布作为全局行为、放置在实体内部画布作为实体行为、放置在其他流程内画布作为子流程(但必须是被动)
  • 子流程可以读取上级数据对象,父级流程无法读取子流程的数据对对象,数据访问细节详见数据组件章节
  • 流程数据传递详见相关章节

用法

创建流程对象

有以下方式

  • 拖放流程组件到任意画布

    从组件栏拖出流程组件放置到画布,流程内自带开始和结束,如下图

    ProcessUnits_image4.png

    提示

    画布中的流程对象可以通过样式控制条设置以展开(如下图)还是收缩状态(如上图)呈现,详见下"外观操作"。

  • 拖放流程步骤组件到非流程内画布

    从组件栏拖出任意一个流程步骤组件到空白画布,流程内自带开始、该组件、结束三个流程步骤

    ProcessUnits_image5.png

    提示

    如果拖放流程步骤组件到流程内画布,效果是仅添加该步骤对象,而不是一个子流程。

  • 拖放流程块到任意画布

    从库中选择目标流程块拖放到画布,即创建流程块实例

    ProcessUnits_image6.png

  • 复制粘贴已有流程对象到任意画布

    鼠标右击复制目标流程,通过弹出的右键菜单操作

    ProcessUnits_image7.png

流程对象设置

点击画布中的流程对象,在右侧对象属性配置面板(如下图)中进行设置

ProcessUnits_image8.png

主动性显示

主动/被动,不能被直接设置,仅为内部的开始事件设置状态的显示

最大并发设置

  • 当流程为被动时可以设置最大并发限制,当流程为主动时无法设置
  • 接受非负整数值设定,设置为0时意味着无限制
提示

最大并发限制是一项重要设定。

  • 最大并发通常设置为1,以保证每次只有1个总体触发在运行。
  • 如果一个修改全局变量的被动流程设置了大于1的并发限制,意味着当它被多处同时调用时,由于顺序不确定而导致意外结果。

多个实体个体时,

  • 一个N个个体的Agent种群,某个体行为的最大并发设置为1时,当调用所有个体该行为,也会出现"同时运行"N个进程,这是因为每个个体都有一份实例,每个实例依然遵守最大并发为1的限制。

归属选择

实体行为选择归属于个体还是观察者

流程块设置

  • 流程块定义和块实例设置与流程对象设置方法类似,这里不再赘述
  • 只是块实例中多了定义源显示,可以点击直接跳转到定义编辑界面

    ProcessUnits_image9.png

外观操作

  • 外观操作不影响建模逻辑

    ProcessUnits_image10.png

  • 鼠标点击流程对象,会浮现样式控制条如上图,从左至右功能依次如下:
    • 进入内部全屏编辑模式
    • 收起/展开,上图为收起状态
    • 头像设定
    • 颜色设定
    • 文字大小
    • 注释