在上篇BPMN 2.0之Event Base Gateway(基于事件的网关)说了Event Base Gateway在流程流转中间的使用,Event Base Gateway的另一个用途是可以启动流程。

当Event Base Gateway被设置成启动流程时,它的图标会改变同时上游也不允许有流入的Sequence Flow。下面是个例子:

当上图的流程部署后,就会等待Email或电话请求。如果Email来了,就实例化一个流程实例,并从Task1开始执行。如果电话请求来了就再实例化一个流程实例从Task2开始执行。

缺省设置下,启动流程的Event Base Gateway是互斥的。可以用多个Start Event达到同样效果:

本人认为这种情况下,使用Start Event更直观也省画面空间。

另外我们也可以设置启动流程的Event Base Gateway是并行的,如下图(注意Event Base Gateway图标的变化):

并行的Event Base Gateway在一个分支被激活并启动流程实例后,其他分支在启动的同一个流程实例中继续等待,如果在流程实例运行完成之前,其他分支也被激活,流程实例就多一条并行的流转分支。
这种情况真还一时半会还想不出对应的业务情景,很复杂?!