我不清楚在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),即:消息、定时器、升级、错误、补偿、条件、信号、多重和并行。
以上哪个部分适用于上面的例子?
不是BPMN专家,但有一些使用BPMN 2.0的经验,所以我会试一试。
您发布的示例看起来不像是完全规范认可的方法,但我不能完全确定。我看到了一些不同的方法来做到这一点,这些方法应该在范围内。
以下是我的两个建议:
除非你想模拟第三个事件,比如“缺货”,否则我更喜欢选项A,因为它很简单。
我还想完成布鲁斯·西尔弗对“BPMN方法和风格,第二版”的推荐。
我将得出结论,这几乎肯定是规范第10.5.2节中的错误,并且允许将计时器作为事件子进程中的开始事件。
2010年向OMG报告了这一问题(第15532期),但没有采取进一步行动。
同样的原则也适用于并行多个事件,这些事件在§10.5.2中同样被省略,但在其他部分中是允许的。
我现在不记得术语了,但是为了实现你想要的,我会做的是把购买零件拆包零件放在一个子流程(或子任务?)中,并在上面有一个计时器。这看起来更容易,更清晰,做你想做的。
关于留档:我会说一部分是关于触发器的,另一部分是关于事件子流程的开始。所以定时器不能触发事件子流程,但是事件子流程的开始事件可以是定时器。