虽然BPMN规范提供了许多不同类型的启动事件,但其中只有三种与大多数建模者试图创建的流程相关。我们将在本篇中认真为大家阐释。
流程开始虽然看起来有很多方式,但实际上只有三种方法可以启动一个流程:
1.应外部要求:这里的“外部”是指不是流程任务执行者的某个人或实体。例如,客户始终是外部的。即使在面向内部员工的流程中,如果请求者在流程中不执行任何活动,只是请求它并收到一些最终状态,也可以被认为是外部的。到目前为止,大多数BPMN流程都是从外部请求开始的。
2.定期安排,例如每个月的第一天,或每10分钟。在不可执行的BPMN中,流程是自动启动还是手动启动并不重要,只要该流程按计划重复运行即可。
3.由任务执行者手动操作:有时,在流程中执行任务的人会手动启动它。一些面向员工的流程以这种方式工作,尽管在许多情况下发起者可以被视为外部请求者。
通常是以上三个启动方式,使流程建模者的工作变得更加简单。因为它不仅可以确定要使用哪个开始事件,而且还定义了流程实例。
根据外部请求启动的流程使用消息启动事件,并且需要一个用Message Name标记的传入消息流。Message Name应该只是一个名词——消息的名称,比如“订单”——而不是像“接受订单”这样的动作或像“订单完成”这样的状态。
消息启动事件的伟大之处在于它们会立即告诉您流程实例代表什么。流程模型定义了在业务过程中重复执行的流程——而不是连续执行的——流程的每个重复或实例都有一个精确的开始和结束。了解流程实例对于创建结构合理的模型至关重要,但一般用户最初很难做到这一点。
无论是手动启动还是自动启动,定期执行的流程,都使用计时器启动事件。事件的标签应该是发生的频率,例如“每月”或“每10分钟”。
同样,启动事件标识流程实例往往是单个事件。同样,流程中的每项活动都必须与该事件相关,而不是之前的事件或未来的事件或在该事件期间收到的某些个人请求例如,假设有一个每月发生的项目审查流程。其每个实例都是每月发生的一次。假设时间用完,有些问题会推迟到下个月,那么下个月问题的处理就会发生在下个月的项目审查实例中。
由任务执行者手动启动的流程通常使用无启动事件,没有触发器图标。
遗憾的是BPMN没有手动事件触发器,所以子流程的启动事件(由传入的序列流启动,而不是事件)以及松散指定的流程,其中的启动条件都未定义。在手动启动的流程中,实例并不容易确定。
幸运的是,这些流程并不常见。我们会发现在未启动的大多数情况下,该流程实际上是响应外部请求,因此消息启动事件也是正确的。
BPMN规范要求流程中所有活动的实例必须与流程实例保持一致。否则,它们必须在单独的流程中建模,该流程通过消息流或共享数据存储与第一个流程交互。