BPMN模型与符号-启动事件

启动事件

顾名思义,启动事件指示特定过程将从哪里开始。就序列流而言,启动事件将启动该流程的序列,因此,将不会有任何传入的序列流——没有序列流可以连接到启动事件

开始事件与中间事件和结束事件的基本形状相同,即一个具有开放中心的圆,以便可以在圆中放置标记,以指示事件的变化。

    ◇“开始事件”是必须用一条细线绘制的圆(参见图10.70)。

        ◇为开始事件使用文本、颜色、大小和行必须遵循第39页“在图表中使用文本、颜色、大小和行”中定义的规则,但除外:

            ◇线的厚度必须保持较薄,以便可以将开始事件与中间事件和结束事件区分开来。

在本文档中,我们将讨论如何在流程中使用序列流。为了便于讨论,我们使用了一个令牌(token)的概念,它将遍历序列流并通过流程中的元素。令牌是一个理论概念,用于帮助定义正在执行的流程的行为。进程元素的行为可以通过描述它们在标记“遍历”进程的结构时如何与标记交互来定义。

注意:令牌不会遍历消息流,因为它是传递给消息流消息(如名称所示)。

    开始事件的语义包括:

    ◇启动事件是可选的:流程级别—顶级流程、子进程(嵌入式)或全局进程(称为进程)—可能(不需要)具有启动事件)。

注意:一个进程可能有多个进程级别(即,它可以包括扩展子进程或调用其他进程的调用活动)。开始事件和结束事件的使用对于图表的每个级别都是独立的。

    ◇如果流程复杂且/或启动条件不明显,则建议使用启动事件。

    ◇如果未使用启动事件,则进程的隐式启动事件将不具有触发器。

    ◇如果存在一个结束事件,则必须至少有一个开始事件。

    ◇所有没有传入序列流(即不是序列流的目标)都应实例化。

        ◇这些例外情况是被定义为补偿活动的活动(它具有补偿标记)。补偿活动不被视为正常流程的一部分,当流程被实例化时,也不能被实例化。有关补偿活动的更多信息,请参见第301页。

        ◇一个例外是捕获链接中间事件,它不允许有传入的序列流。有关链接中间事件的更多信息,请参见第266页。

        ◇这其中的一个例外是一个事件子过程,它不允许有传入的序列流,并且只在其启动事件被触发时才被实例化。有关事件子过程的更多信息,请参见第174页。

    ◇对于一个给定的进程级别,可能会有多个启动事件。

        ◇每个开始事件都是一个独立的事件。也就是说,在触发启动事件时,应生成一个进程实例。

如果将进程用作全局进程(可从其他进程的调用活动中调用),并且存在多个“无启动事件”,则当流程从父进程转移到全局进程时,只会触发一个全局进程的“启动事件”。可以扩展调用活动对象的进入序列流的 targetRef属性,用以指定识别适当的启动事件。

注意:如果有多个启动事件,则进程的行为可能更难以理解。建议谨慎使用这个特性,并且建模者要注意到流程图的其他读者可能难以理解图表的意图。

当启动事件的触发器发生时,将实例化一个新的进程,并将为来自该事件的每个传出的序列流生成一个令牌。

启动事件触发器

启动事件可以用于以下类型的进程:

    ●顶级流程

    ●子流程(嵌入式)

    ●全局进程(调用)

    ●事件子流程

接下来的三个子子句描述了可用于这三种类型的进程的启动事件的类型。↓

启动顶级流程的事件

有许多方法可以启动顶级流程(实例化)。启动事件的触发器被设计用于显示将实例化该特定进程的一般机制。BPMN中的顶级进程有七(7)种类型的“启动事件”(见表10.84):无(None)、消息(Message)、计时器(Timer)、条件(Condition)、信号(Signal)、多重(Multiple)和并行(Parallel)。

至少有一个无启动事件的顶级进程可以被另一个进程中的调用活动调用。类型(None)启动事件用于从调用活动中调用进程。所有其他类型的启动事件仅适用于当流程被用作顶级流程时。

表10.84-顶级流程启动事件类型

触发器描述标记
无类型“无类型启动事件”中没有已定义的触发器。无类型启动事件没有特定的事件定义子类(见第259页)。
如果开始事件没有关联的事件定义,则该事件必须没有标记即可显示(请参见右图)。
消息来自参与者的消息到达并触发进程的开始。有关消息的更多细节,请参见第91页。如果只有一个EventDefinition与开始事件关联的事件定义,且该EventDefinition属于子类MessageEventDefinition,则该事件为消息开始事件,必须使用信封标记显示(见右图)。
通过使用流程的定义协作中使用消息流将事件连接到参与者,可以识别接收消息的实际参与者-参见表10.1。
计时器可以设置一个特定的时间-日期或一个特定的周期(例如,每周一上午9点)来触发进程的开始。如果只有一个EventDefinition与启动事件关联,且该EventDefinition属于子类 TimerEventDefinition,则该事件是计时器启动事件,必须使用时钟标记显示(见右图)。 
条件当“标普尔500指数自开盘后变化超过10%”或“温度超过300摄氏度”等条件为真时,就会触发这种类型的事件。事件的条件表达式必须变为frue,然后才能再次触发事件。条件启动事件的条件表达式不能引用进程的数据上下文或实例属性(因为尚未创建进程实例)。它可以引用环境中实体的静态进程属性和状态以替代。
访问这些状态的机制的规范超出了标准的范围。如果只有一个EventDefinition与开始事件关联,并且该EventDefinition属于子类 ConditionalEventDefinition,然后事件是一个条件启动事件,必须用内里的纸张标记显示(见右图)。
信号信号从另一个进程广播到达,并触发该进程的开始。请注意,信号不是消息,消息具有消息的特定目标。多个进程可以具有从同一个广播信号中触发的启动事件。如果只有一个EventDefinition与开始事件关联,且该EventDefinition属于子类 SignalEventDefinition,则该事件为信号开始事件,必须用三角形标记显示(见右图)。
多重这意味着有多种方式可以触发该进程。只需要其中的一个。
对于多重启动事件,没有特定的EventDefinition子类。如果开始事件有多个关联的EventDefinition,则事件必须显示与多个事件标记(五角形-参见右上图)。
平行多重这意味着在实例化进程之前需要多个触发器。在实例化进程之前,必须触发“启动事件”中列出的所有触发器类型。对于并行的多个启动事件,没有特定的 EventDefinition子类。
如果“开始事件”具有多个关联EventDefinition,且“开始事件”的parallelMultiple属性为,则该事件必须使用并行多个事件标记显示(打开加号-参见右图)
 

启动子进程的事件

在BPMN中只有一种类型的启动事件(参见图10.82):无类型

表10.85-子进程启动事件类型

触发器描述标记
无类型无类型启动事件用于所有子进程,可嵌入或调用(可重用)。其他类型的触发器不用于子进程,因为来自父进程的进程(令牌)的流是子进程的触发器。
如果子进程被调用(可重用)并且有多个启动事件,则其他一些启动事件可能有触发器,但这些启动事件将不会在子进程的上下文中使用。
当其他启动事件被触发时,它们将实例化顶级进程。

启动事件子进程的事件

启动事件也可以启动内联事件子进程(参见第174页)。在这种情况下,允许使用与边界事件相同的事件类型(见表10.86),即:消息(Message)、计时器(Timer)、升级(Escalation)、错误(Error)、补偿(Compensation)、条件(Condition)、信号(Signal)、多重(Multiple)和并行(Parallel)。

    ◇事件子进程必须有单个启动事件。

表10.86-事件子进程启动事件类型

触发器描述标记
消息如果只有一个EventDefinition与开始事件关联,且该EventDefinition属于子类MessageEventDefinition,则该事件消息开始事件,并使用信封标记(请参见右图)。
●对于中断其包含进程的消息事件子进程,事件的边界为实体(请参见右上图)
●对于不中断其包含进程的消息事件子进程,事件的边界为虚线(请参见右侧下图)。通过使用流程的定义协作中使用消息流将事件连接到参与者,可以识别接收消息的实际参与者——参见表10.1。
中断

不中断
计时器如果只有一个EventDefinition与启动事件关联,且该EventDefinition属于子类时间事件定义,则该事件是TimerEventDefinition,并使用时钟标记(请参见右图)。
●对于中断其包含进程的计时器事件子进程,事件的边界为实体(请参见右上图)。
●对于不中断其包含进程的计时器事件子进程,事件的边界为虚线(见右侧下图)
中断

不中断
升级升级事件子流程在不满足业务活动执行时规定的限制时,会实施措施,以加速业务活动的完成。升级开始事件仅允许触发内联事件子进程。如果只有一个EventDefinition与开始事件关联,且该EventDefinition属于子类升级事件定义,则该事件是EscalationEventDefinition,并使用箭头标记(见右图)。
●对于中断其包含进程的升级事件子进程,事件的边界为实线(请参见右上图)。
●对于不中断其包含进程的升级事件子进程,事件的边界为虚线(请参见右侧下图)。 
中断

不中断
错误错误启动事件仅允许触发内联事件子进程。如果只有一个EventDefinition与启动事件关联,且该EventDefinition属于子类ErrorEventDefinition,则该事件是一个错误启动事件,并使用闪电标记(请参见右边的图)。鉴于错误的性质,带有错误触发器的事件子进程总是会中断其包含的进程。中断
补偿补偿开始事件仅允许触发联机补偿事件子进程(请参见第302页中的“补偿处理程序”)。当发生补偿时,这种类型的事件就会被触发。如果只有一个EventDefinition与开始事件的定义关联,且该EventDefinition属于子类CompensationEventDefinition,则该事件为补偿开始事件,并使用双三角形标记(见右图)。
事件不会中断进程,因为在触发此事件之前必须完成进程
不中断
条件如果只有一个EventDefinition与开始事件关联,且该EventDefinition属于子类ConditionalEventDefinition,则该事件是一个条件开始事件,并使用内行页标记(请参见右图)。
●对于中断其包含进程的条件事件子进程,则事件的边界为实线(请参见右上图)。
●对于不中断其包含进程的条件事件子进程,事件的边界为虚线(请参见右侧下图)。
中断 

不中断
信号如果只有一个EventDefinition与开始事件关联,且该EventDefinition属于子类SignalEventDefinition,则该事件为信号开始事件,并使用三角形标记(请参见右图)。
●对于中断其包含进程的信号事件子进程,则该事件的边界为实线(请参见右上图)。
●对于不中断其包含进程的信号事件子进程,事件的边界为虚线(见右侧下图)。
中断 

不中断 
多重多重事件表示有多种方式可以触发事件子进程。只需要其中一个条件满足即启动事件子进程。对于多重启动事件,没有特定的事件定义子类(请参见第259页)。如果开始事件有多个关联的EventDefinition,则事件必须使用多重事件标记显示(五角形-请参见右侧的图形)。
●对于中断其包含进程的多事件子进程,事件的边界为实体(请参见右上图)。
●对于不中断其包含进程的多事件子进程,事件的边界为虚线(请参见右侧下图)。
中断

不中断
平行多重并行多重事件表示有多种方式可以触发事件子进程。所有这些程序都需要满足以实际启动事件子进程。对于并行多重启动事件,没有特定的事件定义子类(参见第259页)。如果开始事件中具有多个关联EventDefinition,且“ parallelMultiple”的多重属性为真,则事件必须使用并行多重事件标记显示(打开加号-请参见右侧的图表)。
●对于中断其包含进程的并行多事件子进程,事件的边界为实体(请参见右上图)。
●对于不中断其包含进程的并行多事件子进程,事件的边界为虚线(请参见右侧下图)。
中断

不中断 

启动事件的属性

对于“启动事件”,还存在以下附加属性:

“开始事件”元素继承“捕获事件”的属性和模型关联(参见表10.82)。表10.87给出了启动事件元素的附加属性:

表10.87-启动事件属性

属性名描述/用途
isInterrupting: boolean = true此属性仅适用于事件子进程中的启动事件;对于其他启动事件,将忽略它。此属性表示是否应该取消包含事件子进程的子进程,如果未取消包含的子进程,则事件子进程的多个实例可以并发运行。
这个属性不能应用于错误事件(一直为真),或补偿事件(当补偿运行时父进程已经结束)。

序列流连接

请参阅第40页上的“序列流连接规则”,以了解整个对象集,以及它们如何成为序列流的源或目标。

    ◇启动事件不能是序列流的目标;它不能有传入的序列流。

        ◇除非启动事件用在扩展子进程中,并附加到该子进程的边界上。在这种情况下,来自高级进程的序列流可以连接到该启动事件,而不是连接到子进程的实际边界。

    ◇开始事件必须是序列流的源。

    ◇多个序列流可能起源于一个开始事件。对于以开始事件为源的每个序列流,应生成一个新的并行路径。

        ◇所有输出序列流的conditionExpression属性必须设置为“无类型”。

        ◇当不使用启动事件时,那么所有没有传入序列流的流对象都应作为单独并行路径的开始。

        ◇每个路径都将有一个单独的唯一令牌,它将遍历序列流。

消息流连接

注意:所有的消息流都必须连接两个单独的池。它们可以连接到池边界或池边界内的流对象。它们不能在同一个池中连接两个对象。

请参阅第41页上的“消息流连接规则”,以了解整个对象集,以及它们如何成为消息流的源或目标。

    ◇启动事件可以是消息流的目标;它可以有0(0)或更多的传入消息流。针对启动事件的每个消息流都表示进程的实例化机制(触发器)。只需要其中一个触发器来启动一个新的进程。

    ◇启动事件不能是消息流的源;它不能有传出的消息流。


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注