BPMN开始结束事件的最佳实践

  事件是一个常见的BPMN流程建模元素,表示在流程流程中“发生”的事情。事件的案例有:“电话呼叫”,“每10分钟”,“发送消息”,“服务已完成”,“发生错误”等.BPMN事件以图形方式用圆圈表示(图1):

在业务流程中可以出现不同类型的事件,BPMN能够支持其中的大多数事件,总的来说,BPMN 2.0支持60多种不同类型的事件(图2)。 主要有三大类型事件:开始事件、中间事件和结束事件。

从图2中可以看出,BPMN事件是根据以下几个标准组织的:

1. 事件可以出现在流程的开始,流程(中间)或流程结束时
2. 一个事件可以“捕获一个触发器”,这意味着它会对某些东西做出反应,或者它可以“抛出一个结果”
3. 事件可以是通用的,也可以是几种预定义类型之一:基于时间,基于消息,基于规则,基于信号,基于异常等。
4. 事件可以定位在序列流中或附加在活动的边界。
5. 事件可以中断当前流程的执行。
6. 某些类型的事件可以启动并行的、基于事件的子流程。
7. 大多数事件类型属性从图形方式的表示方式看区分是明显的,例如在图3中,它以下列方式描述了“不中断的中间捕获消息事件”,外框是两个虚线,表示不中断:

 

事件的含义可以根据其使用的上下文而有所不同。如下图所示,相同的BPMN事件(在本例中为中间时间事件“10分钟”)可以根据其使用的上下文具有不同的含义:

当在任务1和任务2之间流程中使用时,事件“10分钟”的含义是:“在继续执行任务2之前等待10分钟”。
当事件附加到任务1时,其含义为:“10分钟后,任务1中断,流程继续执行任务3”。


描述性BPMN事件


     为了使BPMN更易于学习和使用,有一组描述性的BPMN元素,仅包括以下BPMN事件:

描述性事件集合由包含启动(实例化)流程的事件和表示最终流程状态的事件组成。启动事件中可以有消息事件和计时事件,而结束事件只可以有消息事件为结束或普通结束以及中断结束三种。虽然很简单,流程建模者会犯几个常见的错误。

错误1:隐式或显式流程事件


BPMN规范将开始和结束事件定义为可选。但是,强烈建议使用它们,因为每个流程都在某个地方开始和结束! 在没有明确使用开始和结束事件的情况下,常规BPMN流程可能会看到图7中的流程。这种建模方法是不可取的,可能会导致误解。

在每个流程和子流程中都使用开始和结束事件。通过考虑这一点,流程(或子流程)的开始和结束更加明显,并且可以通过流程名称或通过专门化流程事件来另外解释。

如果流程包含启动事件,则必须使用结束事件。

错误2:事件命名不正确

建模者通常会根据其角色命名开始和结束事件,例如“流程开始”或“流程结束”。由于开始事件符号表示流程开始,而结束事件符号表示流程结束,因此这种命名是多余的。

在命名事件时应使用逻辑。如果没有特定的事件触发器或结果,所以可以省略通用事件的命名。

错误3:相同事件

BPMN规范允许在相同的流程内使用多个开始或结束的事件。但要小心!如果多个事件共享一个相同的命名和符号,则它们实际上代表单个事件。这种建模方法可能仍然有用,因为几个相等的事件可能会减少流程路径和路径交叉点的数量,从而使其更容易理解。但是,它可能会导致误解。

如果流程实际上由不同的触发器启动或在不同的状态结束,则相应的流程事件的名称应该是唯一的。

错误4:结束事件与终止事件

建模者通常过度使用终止事件而不是使用简单的结束事件,因为他们将终止结束事件视为流程的“更强”端。这一部分是正确的,但魔鬼隐藏在细节中!例如,图1显示的流程解释如下:流程首先执行任务1,然后在两个方向上继续(并行拆分),其中任务3在不同的数据集上执行多次(任务3)使用多实例标记“|||”)。

当流程到达终止结束事件时,该流程终止。终止结束事件意味着如果其中一条路径到达终点,则所有其他流程路径(当前正在执行等待执行的流程)立即结束。这可能对应于现实生活中的流程情况,但这种可能性很小。

最常见的是,一旦所有已启动的流程活动完成,流程就会成功完成,并且只有在发生计划外事件(例如异常)时才会终止流程。

最常见的是,流程建模者应该使用普通结束事件,即使流程定义了几个结束状态(例如,成功和不成功的流程结束)。以这种方式使用时,结束事件不会停止执行剩下的正在运行流程的路径或活动状况。

[b]结论[/b]
BPMN是有最“事件丰富”的流程建模符号,总共支持60多种不同类型的事件。这种“多样性”可用于精确的流程建模。然而,它也可能导致曲解; 不熟悉的流程符号也可能会吓到并混淆新手。虽然BPMN事件在规范中组织得很好,但它们并不像最初想象的那样简单易学。

虽然BPMN元素的描述级别将设置减少到三个开始和结束事件,但它不包括任何中间事件。