4.2. 流程设计器中的 BPMN2 事件


一个事件是对业务流程发生的情况。BPMN2 支持三种事件类别:

  • Start
  • 结束
  • Intermediate

起始事件捕获事件触发器、结束事件事件触发,中间事件可能会捕获和引发事件触发器。

以下过程图显示了事件示例: events

在本例中,会出现以下事件:

  • 当收到信号时,会触发 ATM 卡 Inserted 信号启动事件。
  • 超时中间事件是基于计时器触发器的中断事件。这意味着,当触发计时器事件时,Wait for PIN 子进程会被取消。
  • 根据进程的输入,与 Validate User Pin 任务关联的结束事件,或者与 Timeout 任务关联的最终事件结束进程。

4.2.1. 启动事件

使用 start events 来指示业务流程的开始。启动事件无法有传入的序列流,且必须只有一个传出序列流。您可以在顶级进程、嵌入式子进程、可调用的子进程和事件子进程中使用任何启动事件。

除 none 起始事件外,所有启动事件都会捕获事件。例如,只有在收到引用的信号(事件触发器)时,信号启动事件才会启动该进程。您可以在事件子进程中配置启动事件,以中断或非中断。事件子进程的中断启动事件停止或中断包含或父进程的执行。非中断启动事件不会停止或中断包含或父进程的执行。

Expand
表 4.6. 启动事件
启动事件类型顶级sub-processes 
  

中断

非中断

bpmn start node

  

条件

bpmn conditional start

bpmn conditional start

bpmn conditional non interrupt

补偿

bpmn compensation start

bpmn compensation start

 

Error

 

bpmn error start

 

escalation

bpmn escalation start

bpmn escalation start

bpmn escalation non interrupt

消息

bpmn message node

bpmn message node

bpmn message non interrupt

信号

bpmn signal start

bpmn signal start

bpmn signal non interrupt

timer

bpmn timer start

bpmn timer start

bpmn timer non interrupt

none 启动事件是一个没有触发器条件的启动事件。进程或子进程最多可以包含一个无启动事件,默认情况下在进程或子进程启动时触发该事件,并且传出流将立即执行。

当您在子进程中使用任何启动事件时,进程流的执行将从父进程传输到子进程中,并且不触发启动事件。这意味着,令牌(进程流中的当前位置)从父进程传递到子进程活动,并且没有子进程的开始事件生成自己的令牌。

条件

条件启动事件是一个带有布尔值条件定义的开始事件。当条件首次被评估为 false 时,会触发执行,然后变为 true。只有在实例化开始后该条件被评估为 true 时,进程执行才会开始。

进程可以包含多个条件启动事件。

补偿

使用子进程作为中间事件的目标活动时,使用联合开始事件提交事件子进程。

Error

进程或子进程可以包含多个错误启动事件,当收到带有特定 ErrorRef 属性的错误对象时,会触发这些事件。错误对象可以通过错误结束事件生成。它表示进程结束不正确。收到相应错误对象后,错误启动事件的进程实例将开始执行。在收到错误对象及其传出流时,会立即执行错误启动事件。

escalation

升级启动事件是由升级具有特定升级代码触发的开始事件。进程可以包含多个升级开始事件。当它收到定义的升级对象时,带有升级的进程实例会启动其执行。进程实例化,升级启动事件将立即执行,并收集其传出流。

消息

进程或事件子进程可以包含多个消息启动事件,这些事件由特定消息触发。带有消息启动事件的进程实例仅在收到相应消息后从此事件开始执行。收到消息后,进程会被实例化,其消息启动事件会立即执行(执行传出流)。

由于消息可以通过任意数量的进程和流程元素消耗,包括没有元素,一个消息可以触发多个消息启动事件,因此可以实例化多个进程。

信号

信号启动事件由带有特定信号代码的信号触发。进程可以包含多个信号启动事件。信号启动事件仅在实例收到对应的信号后在进程实例中开始执行。然后,执行信号启动事件,并且执行其传出流。

timer

timer 启动事件是一个带有计时机制的启动事件。进程可以包含多个计时器启动事件,这些事件在进程开始时触发,然后应用计时机制。

当您在子进程中使用计时器启动事件时,将进程流执行从父进程传输到子进程,并且触发计时器启动事件。令牌取自父子进程活动,并且触发了子进程的计时器事件并等待计时器触发。在达到计时定义定义的时间后,将执行传出流。

4.2.2. 中间事件

中间事件驱动业务流程的流。中间事件用于在执行业务流程期间捕获或抛出事件。这些事件放置在开始和结束事件之间,还可用于活动边界,如子进程或人工任务,作为捕获事件。在 BPMN 模型器中,您可以在 Data Output 和 Assignments 字段中为 边界事件设置数据输出,在进一步处理中用于访问进程实例详情。请注意,编译事件不支持设置数据输出变量的功能。

例如,您可以为边界事件设置以下数据输出变量:

  • NodeInstance :计算触发边界事件时要在进一步使用的节点实例详情。
  • 信号 :指定信号的名称。
  • 事件 :计算事件详情。
  • workItem :计算工作项目详情。可以为工作项目或用户任务设置此变量。

边界捕获事件可以配置为中断或非中断。中断边界捕获事件会取消绑定的活动,而非中断事件则不会。

中间事件处理进程执行过程中发生的特定情况。对于中间事件,这种情况是触发器。在进程中,带有外向流的中间事件可以放置在活动边界上。

如果在活动执行过程中发生该事件,则事件会触发其对传出流的执行。一个活动可能有多个边界事件。请注意,根据您在边界中间事件的活动所要求的行为,您可以使用以下中间事件类型:

  • 中断:活动执行中断,并触发中间事件的执行。
  • 非中断:触发中间事件,活动执行将继续。
Expand
表 4.7. 中间事件
中间事件类型捕获边界 抛出
  

中断

非中断

 

消息

bpmn intermediate message

bpmn intermediate message

bpmn message noninterrupt

bpmn message throwing

timer

bpmn intermediate timer

bpmn intermediate timer

bpmn timer noninterrupt

 

Error

 

bpmn intermediate error

  

信号

bpmn intermediate signal

bpmn intermediate signal

bpmn signal noninterrupt

bpmn signal throwing

条件

bpmn intermediate conditional

bpmn intermediate conditional

bpmn conditional noninterrupt

 

补偿

bpmn intermediate catch

bpmn intermediate catch

 

bpmn intermediate compensation throwing

escalation

bpmn intermediate escalation

bpmn intermediate escalation

bpmn intermediate escalation non interrupting

bpmn intermediate escalation throwing

Link

bpmn intermediate link

  

bpmn intermediate link throwing

消息

消息中间事件是一个中间事件,供您用于管理消息对象。使用以下事件之一:

  • 抛出消息中间事件根据定义的属性生成消息对象。
  • 捕获消息中间事件,侦听带有定义的属性的消息对象。

timer

计时器中间事件允许您延迟工作流执行或定期触发工作流执行。它代表一个计时器,可在指定时间段内触发一次或多次。当触发计时器中间事件时,计时器条件(即已定义的时间)将进行检查,并且执行传出流。当计时器中间事件放置在进程工作流中时,它有一个传入的流和一个传出的流。当进入到事件的流传输时,其执行会启动。当计时器中间事件放在活动边界上时,将同时在活动执行时触发执行。

如果计时器元素被取消,如完成或中止包含的进程实例,则会取消计时器。

条件

条件中间事件是一个中间事件,其布尔值条件作为其触发器。当条件评估为 true 及其传出流时,事件会触发进一步的工作流执行。

事件必须定义 Expression 属性。当条件中间事件放入进程工作流中时,它有一个传入的流、一个传出流,并在进入事件的传输时开始执行。当将一个条件中间事件放在活动边界上时,将同时在活动执行的同时触发执行。请注意,如果事件没有中断,则事件触发器在条件为 true 时持续触发。

信号

信号中间事件允许您生成或消耗信号对象。使用以下选项之一:

  • 引发信号中间事件根据定义的属性生成信号对象。
  • 捕获信号中间事件会侦听带有定义的属性的信号对象。

Error

错误中间事件是一个中间事件,只能用于活动边界。它可让进程响应相应活动中的错误结束事件。活动不能是原子的。当活动完成错误事件时,生成带有相应 ErrorCode 属性的错误对象时,错误中间事件会捕获错误对象并执行会继续传出流。

补偿

补偿中间事件是附加到事务子进程中活动的边界事件。它可以通过处理结束事件或取消结束事件完成。补偿中间事件必须与一个流关联,该流连接至补偿活动。

如果交易子进程使用编译最终事件完成,则执行与边界中间事件相关的活动。执行继续进行相应的流。

escalation

升级中间事件是一个中间事件,供您生成或消耗升级对象。根据事件元素应该执行的操作,您需要使用以下选项之一:

  • 丢弃升级中间事件会根据定义的属性生成升级对象。
  • 捕获升级中间事件,侦听带有定义的属性的升级对象。

使用以下选项之一:

  • 丢弃链接中间事件根据定义的属性生成链接对象。
  • 捕获链路中间事件,侦听带有定义的属性的链接对象。

4.2.3. 结束事件

最终事件用于结束业务流程,并且可能没有任何传出序列流程。业务流程中可能存在多个结束事件。除 none 和终止结束事件外,所有结束事件都会抛出事件。

结束事件表示完成业务流程。最终事件是结束特定工作流的节点。它具有一个或多个传入序列流,没有传出的流。

进程必须至少包含一个结束事件。

在运行时,最终事件会结束进程工作流。最终事件只能完成到达它的工作流,或者进程实例中的所有工作流,具体取决于最终事件类型。

Expand
表 4.8. 结束事件
结束事件图标

bpmn end node

消息

bpmn end message

信号

bpmn end signal

Error

bpmn end error

补偿

bpmn end compensation

escalation

bpmn end escalation

终止

bpmn end terminate

none 结束事件指定没有关联进程末尾的任何其他特殊行为。

消息

当流进入消息结束事件时,流完成并且最终事件生成其属性中定义的消息。

信号

引发信号结束事件用于完成进程或子进程流。当执行流进入元素时,执行流将完成并生成由其 SignalRef 属性标识的信号。

Error

引发错误最终事件会完成传入的工作流,这意味着消耗传入的令牌,并产生错误对象。进程或子进程中的其他运行工作流均保持未影响。

补偿

补偿最终事件用于完成事务子进程,并触发附加至子进程活动中编译中间事件的编译。

escalation

升级最终事件完成传入的工作流,这意味着消耗传入的令牌,并生成升级信号,如其属性中定义的升级信号,触发升级过程。

终止

终止最终事件完成指定进程实例中的所有执行流程。正在执行的活动将被取消。如果子进程实例到达终止最终事件,则子进程实例会终止。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部