事件子进程中Timer启动事件的允许性

时间:2013-12-23 07:23:31

标签: bpmn

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

model with timer starting an event sub-process

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

  

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

在页241(第10.5.2节,开始事件),规范声明允许Timer作为开始事件:

  

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

在上述示例的情况下,哪些部分适用?

3 个答案:

答案 0 :(得分:3)

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

您发布的示例看起来并不像完全经过规范批准的方式,但我无法完全确定。我看到了一些应该在范围内的不同方法。

以下是我的两条建议:

http://i.stack.imgur.com/FAoAC.png

除非您想为“缺货”这样的第三个事件建模,否则我更倾向于使用选项A.

另外,我想通过推荐“BPMN Method and Style,2nd ed。”布鲁斯·西尔弗

答案 1 :(得分:3)

我将得出结论,这几乎肯定是规范§10.5.2中的错误,并且允许将计时器作为事件子流程中的启动事件。

  1. 表10.86和10.93都是明确的,因为计时器可以是事件子流程的触发器。
  2. 非中断计时器启动事件仅 在事件子流程中有用。如果不允许计时器事件触发事件子流程,则该符号将无用。
  3. 第10.5.6节始终允许使用计时器作为启动事件触发器
  4. 2010年向OMG报告了该问题(Issue 15532),但未采取进一步行动。

    同样的原则适用于Parallel Multiple事件,它们在§10.5.2中的相同列表中同样省略,但在其他部分中允许使用。

答案 2 :(得分:0)

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

关于文档:我想说一部分讨论触发器,另一部分讨论事件子流程的 start 。因此,计时器不能触发事件子流程,但事件子流程的启动事件可以是计时器。