前页 | 后页 |
事件子流程
事件子流程使您的系统能够在给上下文流程或进程的时间内处理事件。一个事件子流程总是以一个开始事件开始;它不是由正常的控制流实例化,而是仅在触发相关的开始事件时实例化。事件子流程是自包含的,不得连接到子流程中的其余序列流。
- 如果设置了其开始事件的 isInterrupting 属性,则事件子进程取消执行封闭子进程
- 如果未设置 isInterrupting 属性,则封闭子流程的执行与事件子流程并行继续
创建 BPMN模型
主要流程模型
- 创建一个 StartEvent Start1
- 将序列流添加到目标并行网关元素分叉
- 添加一个序列
- 一个子流程subProcess1 ,并从中添加一个序列S目标结束事件元素
结束1
- 一个抽象任务Task5 ,并从中添加一个序列流到目标结束事件元素End2
关于如何模型事件子流程的提示
- 将“活动-业务流程”工具箱中的活动拖到图表上
- 双击活动以显示“属性”对话框,并在“类型”字段中选择“子进程”;将 'triggeredByEvent' 设置为 'true' 并点击确定按钮
- 右键单击元素并选择“是展开的”选项;这将在左上角显示元素名称
为主进程模型事件子进程
- 创建事件子流程subProcess4
- 创建事件开始(@60) ,然后双击它以显示“属性”对话框
并且,在“类型”字段中,选择“事件子进程非中断 > 定时器”;点击确定按钮
- 将序列流添加到目标抽象任务活动Task6(2000)
- 将序列流添加到目标结束事件元素End6
- 创建事件子流程subProcess5
- 创建事件开始(@80) ,然后双击它以显示“属性”对话框
并且,在“类型”字段中,选择“事件子进程中断 > 定时器”;点击确定按钮
- 将序列流添加到目标抽象任务活动Task7(2000)
-将序列流添加到目标结束事件元素End7
模型子流程 subProcess1 和封闭的事件子流程
- 创建一个 StartEvent Start2
-将序列流添加到目标抽象任务活动S (150)
-添加一个 流向目标的序列事件
- 创建一个事件子流程subProcess2
- 创建事件开始(@20) ,然后双击它以显示“属性”对话框
并且,在“类型”字段中,选择“事件子进程非中断 > 定时器”
- 将序列流添加到目标抽象任务活动Task2(100)
-将序列流添加到目标结束事件元素End4
- 创建一个事件子流程subProcess3
- 创建事件开始(@30) ,然后双击它以显示“属性”对话框
并且,在“类型”字段中,选择“事件子进程中断 > 定时器”
- 将序列流添加到目标抽象任务活动Task3(40)
- 将序列流添加到目标抽象任务活动Task4(20)
- 将序列流添加到目标结束事件元素End5
配置 BPSim
使用这个表,我们在配置包中创建工件并配置每个元素的参数值。
任务 |
行动 |
---|---|
创造工件 |
|
开始用于事件子进程中的开始事件 |
从“配置 BPSim ”对话框左侧的树中,展开“StartEvent”。 对于此处列出的每个元素,在“控件”选项卡上单击“新参数...”字段中的下拉箭头并选择参数“InterTriggerTimer”。单击“值”字段中的按钮以打开“参数”对话框并选择“常量>数字”,然后输入值并选择“秒”。
|
任务的处理时间 |
从配置 BPSim窗口左侧的树中,展开“活动”。 对于此处列出的每个元素,在“时间”选项卡上单击“新参数...”字段中的下拉箭头并选择参数“处理时间”。单击“值”字段中的按钮以打开“参数”对话框并选择“常量>数字”,然后输入值并选择“秒”。
|
运行仿真
- 在“配置 BPSim ”对话框工具栏上,单击“运行”图标打开“运行仿真控制器”对话框
- 点击“运行”图标下拉箭头并选择“标准仿真”
分析
阅读结果,可能并不完全直截了当地看到发生了什么;但是,如果我们在时序图中为每个任务绘制生命线,它就会变得更加清晰。
- 事件(@20)是非中断的,它没有在 20 秒时停止Task1
- 事件(@30)正在中断,它在 30 秒时停止了Task1和Task2 ;它没有影响Task5因为Task5的封闭进程(主进程)级别高于Start4的封闭子进程( subProcess1 )
- EventStart5(@60)是非中断的,它在 60 秒时启动了事件,而不影响Task3或Task5
- EventStart6(@80)正在中断,它在 80 秒时启动了 Task7事件并中断了与其封闭进程相同或更低级别的正在运行的任务( Task4 、 Task5 、 Task6 )
- 只达到预期的End7