前页 | 后页 |
升级事件
在 BPMN 中,Escalation 是 Error 的非中断对应物,具有类似的 throw-catch 行为。然而,与 Error 不同的是,从活动中退出的正常流程和异常流程是并行路径,而不是替代路径。
创建 BPMN模型
创建主进程
- 创建一个开始事件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 标记的“值”字段中单击图标并找到并选择Escalation1
- 双击Catch问题并再次在 escalationRef 标签的“值”字段中单击图标并找到并选择Escalation1
配置 BPSim
任务 |
行动 |
---|---|
工件&包 |
|
触发器的开始事件计数 |
|
处理时间 |
|
dummyVariable 用于跟踪 |
为了显示给定标记的准确轨迹,您必须在S1上设置一个虚拟变量。
|
运行仿真
- 在“配置 BPSim ”对话框工具栏上,单击“运行”图标打开“运行仿真控制器”对话框
- 点击“运行”图标下拉箭头并选择“标准仿真”
- 仿真完成后,单击工具栏上的按钮,显示“BPSim PropertyParameter Values”对话框
- 单击“查询属性”按钮和“按属性分组”选项卡,然后展开“dummyVariable”(或您分配给变量的名称)
分析:
与Error不同,从subProcess1退出的正常流程和异常流程不是替代路径,而是并行的。这个特征很容易从trace中发现:
- 在Task3 (30)开始后, E2和Task2 (20)仍然被遍历
- 遍历mergeParallel两次后到达E1