2

https://i.imgur.com/VUQzidR.png

I have an XOR gate connected to 4 activities. Each activity is then connected to the same subprocess. Not looking for answers or solutions - just general advice related to BPMN modelling.

My issue is that I think this design pattern could be modelled better. I'm also not sure if it is valid. Does anyone have any pointers in the right direction?

I'm essentially trying to create a for each component, do inspection (inspection is same set of steps, but different component)

Gerd Wagner
  • 5,481
  • 1
  • 22
  • 41

2 Answers2

2

If you really look out for validity you may use a configurable bpmn linter, like https://github.com/bpmn-io/bpmnlint (I have no affiliation with this project).

With such a tool you can statically check against the common design errors.

Jankapunkt
  • 8,128
  • 4
  • 30
  • 59
1

Regarding your second question whether "this is valid", I would say : Almost.

  • Diagramme 1 : The closing XOR gateway should be placed before the "Inspect component" activity. The four arrows of the individual "Locate component xxx" activities should all merge into this gateway, thereby mirroring the initial XOR gateway whence the four arrows leave. From that merging/closing XOR gateway, you should draw a single arrow towards "Inspect component".
  • Diagramme 2 : You should equally place a closing XOR gateway at the end of your process, just before the end event, in order to merge the arrows from the "No" branch of the third XOR gateway and the "Record other abnormalities" activity. Otherwise, your process will never finish in case you carry out "Record other abnormalities" because there is no outgoing arrow from that activity.

While the points above are objective because they relate to the BPMN syntax, the answer to your first question, whether "this design pattern could be modeled better", is based on opinion. Here is what I would try to improve

  • In diagramme 1, the question "Component successfully inspected?" will never be answered with "Yes". What happens when all components have indeed been inspected ? Your process would be stuck.
  • I have a feeling you do not need the individual "Locate component x" activities at this level. In the diagramme, the location of each component does not change the course of subsequent activities. I would rather see this activity as the first task in the "Inspect component" sub-process. But if you insist on modeling it this way, then I would turn the exclusive gateway into an inclusive one and add an arrow that goes straight to the end event. That way, multiple inspections or none can happen and you will not get stuck.
  • Considering the two previous points, you can represent a "For each" loop with a sequential activity as shown below. The three horizontal lines signify that you repeat the sub-process sequentially (as opposed to in parallel). I would see this process itself as a sub-process of a wider process such as "Maintain vehicle".

enter image description here

khalito
  • 971
  • 5
  • 22