前页 后页

事件子流程

事件子流程使您的系统能够在给定的子流程或流程的上下文中处理事件。事件子流程始终以开始事件开始;它不是由常规控制流实例化的,只有在关联的开始事件被触发时才实例化。事件子流程是独立的,不得与子流程中的其余序列流连接。

  • 如果设置了其开始事件的isInterrupting属性,则事件子流程将取消执行封闭的子流程
  • 如果未设置isInterrupting属性,则与事件子流程并行地继续执行封闭的子流程
在此示例中,我们演示了中断和不中断事件子流程如何影响封闭的子流程和流程的生命线。

创建BPMN模型

Event Subprocess for BPMN Process Simulation in Sparx Systems Enterprise Architect

为主要流程建模

  • 创建一个StartEvent Start1
  • 将序列流添加到目标Parallel Gateway元素派生
  • 将序列流添加到
    -一个子过程subProcess1,并从A S层序流添加到目标结束事件元件
    结束1
          -抽象Task Task5 ,并从中将序列流添加到目标End Event元素End2

有关如何为事件子流程建模的提示

  • 将活动从“ BPMN2.0-业务流程”工具箱拖到图上
  • 双击活动以显示“属性”对话框,然后在“类型”字段中选择“ subProcess”;将“ triggeredByEvent”设置为“ true”,然后单击“确定”按钮
  • 右键单击元素,然后选择“已展开”选项;这将在左上角显示元素名称

为主要流程建模事件子流程

  • 创建一个事件子流程subProcess4
    -创建一个计时器启动事件Start5(@ 60) ,然后双击它以显示“属性”对话框
    并在“类型”字段中选择“事件子流程无中断>计时器”;点击确定按钮
    -将序列流添加到目标抽象任务Activity Task6(2000)
    -将序列流添加到目标“结束事件”元素End6
  • 创建一个事件子流程subProcess5
          -创建一个计时器启动事件Start6(@ 80) ,然后双击它以显示“属性”对话框
    然后在“类型”字段中选择“事件子进程中断>计时器”;点击确定按钮
    -将序列流添加到目标抽象任务Activity Task7(2000)
    -将序列流添加到目标“结束事件”元素End7

为子流程subProcess1和随附的事件子流程建模

  • 创建一个StartEvent Start2
    -层序流添加A S到目标抽象任务活动任务1(150)
    -添加一个 到目标结束事件End3的序列流
  • 创建一个事件子流程subProcess2
          -创建一个计时器启动事件Start3(@ 20) ,然后双击它以显示“属性”对话框
    然后在“类型”字段中,选择“事件子流程无中断>计时器”
    -向目标抽象任务Activity Task2(100)添加序列流
    -将序列流添加到目标“结束事件”元素End4
  • 创建一个事件子流程subProcess3
          -创建一个计时器启动事件Start4(@ 30) ,然后双击它以显示“属性”对话框
    然后在“类型”字段中选择“事件子进程中断>计时器”
    -向目标抽象任务Activity Task3(40)添加序列流
    -向目标抽象任务Activity Task4(20)添加序列流
    -将序列流添加到目标“结束事件”元素End5

配置BPSim

使用此表,我们在配置包中创建工件并配置每个元素的参数值。

任务

行动

创建工件

  • 打开“配置BPSim”窗口(“模拟>过程分析> BPSim>打开BPSim Manager”)
  • 创建一个名为“ Event Sub Process Interrupting and Non-Interrupting”的工件(在“ Select / Create Artifact”字段中,单击Browse.按钮并选择其父包,然后单击Add New按钮,然后键入元素名称和单击“保存”按钮和“确定”按钮)
然后,所有BPMN元素都将被加载到“配置BPSim”窗口中。

InterTriggerTimer,用于事件子流程中的开始事件

从“配置BPSim”对话框左侧的树中,展开“ StartEvent”。

对于此处列出的每个元素,在“控件”选项卡上,单击“新参数...”字段中的下拉箭头,然后选择参数“ InterTriggerTimer”。单击“值”字段中的Browse.按钮以打开“参数”对话框,然后选择“常量>数值”,然后键入值并选择“秒”。

  • Start3(@ 20):20秒
  • Start4(@ 30):30秒
  • Start5(@ 60):60秒
  • Start6(@ 80):80秒

任务处理时间

在“配置BPSim”窗口左侧的树中,展开“活动”。

对于此处列出的每个元素,在“时间”选项卡上,单击“新参数...”字段中的下拉箭头,然后选择参数“ ProcessingTime”。单击“值”字段中的Browse.按钮以打开“参数”对话框,然后选择“常量>数值”,然后键入值并选择“秒”。

  • 任务1(150):150秒
  • 任务2(100):100秒
  • 任务3(40):40秒
  • 任务4(20):20秒
  • 任务5(1000):1000秒
  • Task6(2000):2000秒
  • Task7(2000):2000秒

运行模拟

  • 在“配置BPSim”对话框工具栏上,单击“运行”图标以打开“ BPSim Simulation Controller”对话框
  • 单击“运行”图标下拉箭头,然后选择“标准模拟”

分析

阅读结果,可能很难完全直观地了解发生了什么。但是,如果我们在时序图中绘制每个任务的生命线,它将变得更加清晰。

Example Timing Diagram Task Lifelines in Sparx Systems Enterprise Architect

  • 事件Start3(@ 20)是不中断的,它没有在20秒后停止Task1
  • 事件Start4(@ 30)正在中断,它在30秒时停止了Task1Task2 ;它没有影响Task5,因为Task5的封闭进程(主进程)级别高于Start4的封闭子进程( subProcess1
  • 事件Start5(@ 60)是非人工,它为60秒开始Task6中 ,而不会影响任务3任务5
  • 事件Start6(@ 80)正在中断,它在80秒后启动Task7 ,并中断了处于与其封装过程相同或较低级别的正在运行的Tasks( Task4Task5Task6
  • 仅达到预期的End7