Search code examples
xmljbpmbpmncamundaibm-bpm

When should BPMN 2.0 XML flowNodes contain incoming and outgoing elements?


According to section 8.4.13 of BPMN 2.0.2, Flow Nodes (the parent of Gateways, Activities, and Events) contain the following attributes:

incoming: Sequence Flow [0..*] This attribute identifies the incoming Sequence Flow of the FlowNode.
outgoing: Sequence Flow [0..*] This attribute identifies the outgoing Sequence Flow of the FlowNode.

Despite this fact, many of the BPMN files I've seen decide not to include these elements. For example, I don't see them in the official BPMN 2.0 by Example doc at http://www.omg.org/spec/BPMN/20100601/10-06-02.pdf. Nor in the XML snippets from https://docs.camunda.org/manual/7.3/api-references/bpmn20/#tasks. However, I do see them in the samples at http://www.omg.org/spec/BPMN/20100602/2010-06-03/.

Is there any explanation for this variation? Are these elements required when a sequence flow is connected to a node? Do the common tools include them?


Solution

  • An interesting question, at least at a theoretical level. Most BPMN Modelers will use the sourceRef and targetRef attributes to denote the source and target for a FlowNode element. The reason the samples at http://www.omg.org/spec/BPMN/20100602/2010-06-03/. use the incoming/outgoing semantic is likely because they are all produced by the same tool (Trisotech). To be honest, I can't say whether one is right or wrong but I can say that very few modelers use the incoming/outgoing semantic.