提问者:小点点

事件子流程中定时器启动事件的允许性


我不清楚在BPMN 2.0模型中是否允许计时器作为事件子流程的开始事件,例如下面的简化示例:

第174页(第10.3.5节,事件子流程)上的BPMN 2.0留档(版本2.0.1,日期为2013-09-02)表明这是不允许的:

事件子流程的开始事件必须有定义的触发器。开始事件触发器(EventDefition)必须来自以下类型:消息、错误、升级、补偿、条件、信号和多重(有关更多详细信息,请参阅第259页)

在第241页(第10.5.2节,开始事件)上,规范规定允许定时器作为开始事件:

启动事件还可以启动内联事件子流程(参见第174页)。在这种情况下,允许与边界事件相同的事件类型(参见表10.86),即:消息、定时器、升级、错误、补偿、条件、信号、多重和并行。

以上哪个部分适用于上面的例子?


共3个答案

匿名用户

不是BPMN专家,但有一些使用BPMN 2.0的经验,所以我会试一试。

您发布的示例看起来不像是完全规范认可的方法,但我不能完全确定。我看到了一些不同的方法来做到这一点,这些方法应该在范围内。

以下是我的两个建议:

除非你想模拟第三个事件,比如“缺货”,否则我更喜欢选项A,因为它很简单。

我还想完成布鲁斯·西尔弗对“BPMN方法和风格,第二版”的推荐。

匿名用户

我将得出结论,这几乎肯定是规范第10.5.2节中的错误,并且允许将计时器作为事件子进程中的开始事件。

  1. 表10.86和10.93都是明确的,因为计时器可以是事件子进程的触发器。
  2. 非中断计时器启动事件仅在事件子进程中有用。如果不允许计时器事件触发事件子进程,该符号将毫无用处。
  3. 第10.5.6节始终允许使用计时器作为启动事件触发器

2010年向OMG报告了这一问题(第15532期),但没有采取进一步行动。

同样的原则也适用于并行多个事件,这些事件在§10.5.2中同样被省略,但在其他部分中是允许的。

匿名用户

我现在不记得术语了,但是为了实现你想要的,我会做的是把购买零件拆包零件放在一个子流程(或子任务?)中,并在上面有一个计时器。这看起来更容易,更清晰,做你想做的。

关于留档:我会说一部分是关于触发器的,另一部分是关于事件子流程的开始。所以定时器不能触发事件子流程,但是事件子流程的开始事件可以是定时器。