预订演示
前页 后页

升级事件

在 BPMN 中,Escalation 是 Error 的非中断对应物,具有类似的 throw-catch 行为。然而,与 Error 不同的是,从活动中退出的正常流程和异常流程是并行路径,而不是替代路径。

创建 BPMN模型

Example BPMN Business Process Simulation in Sparx Systems Enterprise Architect

创建主进程

  • 创建一个开始事件S1
  • 将序列流添加到目标活动subProcess1;放大活动并右键单击,选择“是展开的”选项,然后打开“属性”对话框并将“类型”设置为“子进程”
  • 将一个序列流添加到目标 abstractTask活动元素Task2 (20) (打开“属性”对话框并将“类型”字段设置为“抽象任务”)
  • 将一个序列添加到目标并行网关元素合并并行(打开“属性”对话框并将“类型”字段设置为“并行”)
  • 将序列流添加到目标事件
  • subProcess1 上,添加边界非中断 EscalationEventCatch问题(将“事件”图标拖到事件,并从即时菜单中选择“Edge Mounted”和“Escalation”;双击元素以显示“属性” '对话框并添加名称,然后在'类型'字段中选择'边界非中断>升级')
  • 将序列流添加到目标 abstractTask活动元素Task3 (30) (打开“属性”对话框并将“类型”字段设置为“抽象任务”)
  • 添加一个序列到目标元素合并并行

创建子流程

  • subProcess1内(或下),创建一个开始事件S2
  • 将序列流添加到目标 abstractTask活动元素Task1 (打开“属性”对话框并将“类型”字段设置为“抽象任务”)
  • 将序列流添加到目标事件Escalation IntermediateEventThrow问题(打开“属性”对话框并在“类型”字段中选择“抛出 > 升级”)
  • 将序列流添加到目标结束事件E2

创建 BPMN2.0::Escalation 元素

在工具箱中,展开“图表2.0 Types”页面,将“Escalation”图标拖到图表上,并将元素命名为Escalation1 ;这将被事件用作升级代码。

为升级代码设置事件:

  • 双击Throw问题并在 escalationRef 标记的“值”字段中单击Browse.图标并找到并选择Escalation1
  • 双击Catch问题并再次在 escalationRef 标签的“值”字段中单击Browse.图标并找到并选择Escalation1
(活动退出的异常流程是并行的。)

配置 BPSim

任务

行动

工件&包

  • 打开配置 BPSim窗口('仿真>过程分析>进程>打开BPSim 管理器')
  • 创建加新事件添加工件名称的“仿真事件”(在“选择/创建工件包名称”字段中,单击“选择/创建父元素名称”并Browse.按钮,然后键入按钮,然后键入“保存”和确定按钮)
然后所有的 BPMN 元素将被加载到配置 BPSim窗口中。

触发器的开始事件计数

  • 从配置 BPSim窗口左侧的树中,展开“StartEvent”并单击S1
  • 在“控件”选项卡的“新建参数...”字段中,单击下拉箭头并选择“触发器计数”
  • 在“值”字段中,输入“ 1 ”

处理时间

  • 在左侧树中展开“活动”并单击Task2 (20) ;在“处理时间”的“值”字段中输入“20”,在“单位”字段中输入“s”(20 秒)
  • 点击Task3(30);同样,将 'ProcessingTime' 设置为 30 秒

dummyVariable 用于跟踪

为了显示给定标记的准确轨迹,您必须在S1上设置一个虚拟变量。

  • 在左侧层次结构中单击S1 ,然后在“属性”选项卡上用变量名称覆盖新属性文本(例如“属性”)
  • 在“值”字段中,单击Browse.按钮,然后在“<<StartEvent>>S1 : <变量名称>”对话框中单击“数字”并键入“常量数字”值“0”;点击确定按钮

运行仿真

  • 在“配置 BPSim ”对话框工具栏上,单击“运行”图标打开“运行仿真控制器”对话框
  • 点击“运行”图标下拉箭头并选择“标准仿真”
  • 仿真完成后,单击工具栏上的按钮,显示“BPSim PropertyParameter Values”对话框
  • 单击“查询属性”按钮和“按属性分组”选项卡,然后展开“dummyVariable”(或您分配给变量的名称)

分析:

Error不同,从subProcess1退出的正常流程和异常流程不是替代路径,而是并行的。这个特征很容易从trace中发现:

  • Task3 (30)开始后, E2Task2 (20)仍然被遍历
  • 遍历mergeParallel两次后到达E1