Question

I am unclear as to whether it is permissible in a BPMN 2.0 model for a timer to be the Start Event for an event sub-process, such as in the simplified example below:

model with timer starting an event sub-process

The BPMN 2.0 documentation (version 2.0.1 dated 2013-09-02) on page 174 (section 10.3.5, Event Sub-processes) suggests this is not permissible:

The Start Event of an Event Sub-Process MUST have a defined trigger. The Start Event trigger (EventDefinition) MUST be from the following types: Message, Error, Escalation, Compensation, Conditional, Signal, and Multiple(see page 259 for more details)

On page 241 (section 10.5.2, Start Event), the specification states that a Timer is allowed as a Start Event:

A Start Event can also initiate an inline Event Sub-Process (see page 174). In that case, the same Event types as for boundary Events are allowed (see Table 10.86), namely: Message, Timer, Escalation, Error, Compensation, Conditional, Signal, Multiple, and Parallel.

Which of these sections would apply in the case of the above example?

Was it helpful?

Solution 2

I'm going to conclude this is almost certainly an error in §10.5.2 of the spec, and that the timer as the start event in an event sub-process is allowed.

  1. Tables 10.86 and 10.93 are both explicit in that the timer can be the trigger for an event sub-process.
  2. The non-interrupting timer start event is only useful in an event sub-process. That symbol would have no use if a timer event were not allowed to trigger an event sub-process.
  3. Section 10.5.6 consistently allows the use of the timer as the start event trigger

The issue was reported to OMG in 2010 (Issue 15532), although no further action was taken.

The same principle applies to Parallel Multiple events, which are similarly omitted from the same list in §10.5.2, but permitted in other sections.

OTHER TIPS

Not a BPMN expert but have some experience using BPMN 2.0 so I'll give this a go.

The example you posted doesn't look like a completely spec-approved way of doing it, but I can't be entirely sure. I see a few different ways to do this that should be within bounds.

Here are my two suggestions:

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

Unless you want to model a third event like "Out of stock" I would prefer option A for its simplicity.

Also I'd like to through out a recommendation for "BPMN Method and Style, 2nd ed." by Bruce Silver.

I don't remember now the terminology, but what I would do to achieve what you want is put purchase parts + unpack parts in a subprocess (or sub-task?) and have a timer on it. This seems easier, clearer to read and does what you want.

Regarding documentation: I would say one part talks about the trigger and the other about the start of the event sub-process. So a timer can't trigger the event sub-process, but the start event of the event sub-process can be a timer.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top