Make parallel split explicit
Avoid multiple sequence flows outgoing from an activity or event.
✔ How to
Cjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjxkZWZpbml0aW9ucyB4bWxucz0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9NT0RFTCIgeG1sbnM6YnBtbmRpPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9CUE1OLzIwMTAwNTI0L0RJIiB4bWxuczpvbWdkaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvREkiIHhtbG5zOm9tZ2RjPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9ERC8yMDEwMDUyNC9EQyIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgaWQ9InNpZC0zODQyMmZhZS1lMDNlLTQzYTMtYmVmNC1iZDMzYjMyMDQxYjIiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2JwbW4uaW8vYnBtbiIgZXhwb3J0ZXI9Imh0dHA6Ly9icG1uLmlvIiBleHBvcnRlclZlcnNpb249IjAuMTAuMSI+CiAgPHByb2Nlc3MgaWQ9IlByb2Nlc3NfMDNobGN3aSI+CiAgICA8cGFyYWxsZWxHYXRld2F5IGlkPSJHYXRld2F5XzB0N3M4NHYiPgogICAgICA8aW5jb21pbmc+Rmxvd18wMm1tZ2ZsPC9pbmNvbWluZz4KICAgICAgPG91dGdvaW5nPkZsb3dfMWZzdWNyeDwvb3V0Z29pbmc+CiAgICAgIDxvdXRnb2luZz5GbG93XzEyeXRmYm48L291dGdvaW5nPgogICAgPC9wYXJhbGxlbEdhdGV3YXk+CiAgICA8dGFzayBpZD0iQWN0aXZpdHlfMTVwcWFyZCIgbmFtZT0iRG8gdGhpcyI+CiAgICAgIDxpbmNvbWluZz5GbG93XzFmc3Vjcng8L2luY29taW5nPgogICAgPC90YXNrPgogICAgPHNlcXVlbmNlRmxvdyBpZD0iRmxvd18xZnN1Y3J4IiBzb3VyY2VSZWY9IkdhdGV3YXlfMHQ3czg0diIgdGFyZ2V0UmVmPSJBY3Rpdml0eV8xNXBxYXJkIiAvPgogICAgPHRhc2sgaWQ9IkFjdGl2aXR5XzFnZnA0MDgiIG5hbWU9IkRvIHRoYXQiPgogICAgICA8aW5jb21pbmc+Rmxvd18xMnl0ZmJuPC9pbmNvbWluZz4KICAgIDwvdGFzaz4KICAgIDxzZXF1ZW5jZUZsb3cgaWQ9IkZsb3dfMTJ5dGZibiIgc291cmNlUmVmPSJHYXRld2F5XzB0N3M4NHYiIHRhcmdldFJlZj0iQWN0aXZpdHlfMWdmcDQwOCIgLz4KICAgIDx0YXNrIGlkPSJBY3Rpdml0eV8wenFrcnZqIiBuYW1lPSIiPgogICAgICA8b3V0Z29pbmc+Rmxvd18wMm1tZ2ZsPC9vdXRnb2luZz4KICAgIDwvdGFzaz4KICAgIDxzZXF1ZW5jZUZsb3cgaWQ9IkZsb3dfMDJtbWdmbCIgc291cmNlUmVmPSJBY3Rpdml0eV8wenFrcnZqIiB0YXJnZXRSZWY9IkdhdGV3YXlfMHQ3czg0diIgLz4KICA8L3Byb2Nlc3M+CiAgPGJwbW5kaTpCUE1ORGlhZ3JhbSBpZD0iQnBtbkRpYWdyYW1fMSI+CiAgICA8YnBtbmRpOkJQTU5QbGFuZSBpZD0iQnBtblBsYW5lXzEiIGJwbW5FbGVtZW50PSJQcm9jZXNzXzAzaGxjd2kiPgogICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iR2F0ZXdheV8xNTBwYTh0X2RpIiBicG1uRWxlbWVudD0iR2F0ZXdheV8wdDdzODR2Ij4KICAgICAgICA8b21nZGM6Qm91bmRzIHg9IjI2NSIgeT0iMTE1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIC8+CiAgICAgIDwvYnBtbmRpOkJQTU5TaGFwZT4KICAgICAgPGJwbW5kaTpCUE1OU2hhcGUgaWQ9IkFjdGl2aXR5XzB6cWtydmpfZGkiIGJwbW5FbGVtZW50PSJBY3Rpdml0eV8wenFrcnZqIj4KICAgICAgICA8b21nZGM6Qm91bmRzIHg9IjEyMCIgeT0iMTAwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjgwIiAvPgogICAgICAgIDxicG1uZGk6QlBNTkxhYmVsIC8+CiAgICAgIDwvYnBtbmRpOkJQTU5TaGFwZT4KICAgICAgPGJwbW5kaTpCUE1OU2hhcGUgaWQ9IkFjdGl2aXR5XzE1cHFhcmRfZGkiIGJwbW5FbGVtZW50PSJBY3Rpdml0eV8xNXBxYXJkIj4KICAgICAgICA8b21nZGM6Qm91bmRzIHg9IjM1MCIgeT0iMjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iODAiIC8+CiAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWwgLz4KICAgICAgPC9icG1uZGk6QlBNTlNoYXBlPgogICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iQWN0aXZpdHlfMWdmcDQwOF9kaSIgYnBtbkVsZW1lbnQ9IkFjdGl2aXR5XzFnZnA0MDgiPgogICAgICAgIDxvbWdkYzpCb3VuZHMgeD0iMzUwIiB5PSIxODAiIHdpZHRoPSIxMDAiIGhlaWdodD0iODAiIC8+CiAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWwgLz4KICAgICAgPC9icG1uZGk6QlBNTlNoYXBlPgogICAgICA8YnBtbmRpOkJQTU5FZGdlIGlkPSJGbG93XzFmc3VjcnhfZGkiIGJwbW5FbGVtZW50PSJGbG93XzFmc3VjcngiPgogICAgICAgIDxvbWdkaTp3YXlwb2ludCB4PSIyOTAiIHk9IjExNSIgLz4KICAgICAgICA8b21nZGk6d2F5cG9pbnQgeD0iMjkwIiB5PSI2MCIgLz4KICAgICAgICA8b21nZGk6d2F5cG9pbnQgeD0iMzUwIiB5PSI2MCIgLz4KICAgICAgPC9icG1uZGk6QlBNTkVkZ2U+CiAgICAgIDxicG1uZGk6QlBNTkVkZ2UgaWQ9IkZsb3dfMTJ5dGZibl9kaSIgYnBtbkVsZW1lbnQ9IkZsb3dfMTJ5dGZibiI+CiAgICAgICAgPG9tZ2RpOndheXBvaW50IHg9IjI5MCIgeT0iMTY1IiAvPgogICAgICAgIDxvbWdkaTp3YXlwb2ludCB4PSIyOTAiIHk9IjIyMCIgLz4KICAgICAgICA8b21nZGk6d2F5cG9pbnQgeD0iMzUwIiB5PSIyMjAiIC8+CiAgICAgIDwvYnBtbmRpOkJQTU5FZGdlPgogICAgICA8YnBtbmRpOkJQTU5FZGdlIGlkPSJGbG93XzAybW1nZmxfZGkiIGJwbW5FbGVtZW50PSJGbG93XzAybW1nZmwiPgogICAgICAgIDxvbWdkaTp3YXlwb2ludCB4PSIyMjAiIHk9IjE0MCIgLz4KICAgICAgICA8b21nZGk6d2F5cG9pbnQgeD0iMjY1IiB5PSIxNDAiIC8+CiAgICAgIDwvYnBtbmRpOkJQTU5FZGdlPgogICAgPC9icG1uZGk6QlBNTlBsYW5lPgogIDwvYnBtbmRpOkJQTU5EaWFncmFtPgo8L2RlZmluaXRpb25zPgo=
✘ How NOT to
According to BPMN spec, the process depicted below does exactly what the “to do” process does: both are executed in parallel. The difference is this: parallel exectution is explicit in the diagram above and implicit in the diagram below. The explicit way should be preferred indeed.
Cjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjxkZWZpbml0aW9ucyB4bWxucz0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9NT0RFTCIgeG1sbnM6YnBtbmRpPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9CUE1OLzIwMTAwNTI0L0RJIiB4bWxuczpvbWdkaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvREkiIHhtbG5zOm9tZ2RjPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9ERC8yMDEwMDUyNC9EQyIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgaWQ9InNpZC0zODQyMmZhZS1lMDNlLTQzYTMtYmVmNC1iZDMzYjMyMDQxYjIiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2JwbW4uaW8vYnBtbiIgZXhwb3J0ZXI9Imh0dHA6Ly9icG1uLmlvIiBleHBvcnRlclZlcnNpb249IjAuMTAuMSI+CiAgPHByb2Nlc3MgaWQ9IlByb2Nlc3NfMDNobGN3aSI+CiAgICA8dGFzayBpZD0iQWN0aXZpdHlfMTVwcWFyZCIgbmFtZT0iRG8gdGhpcyI+CiAgICAgIDxpbmNvbWluZz5GbG93XzFmc3Vjcng8L2luY29taW5nPgogICAgPC90YXNrPgogICAgPHNlcXVlbmNlRmxvdyBpZD0iRmxvd18xZnN1Y3J4IiBzb3VyY2VSZWY9IkFjdGl2aXR5XzB6cWtydmoiIHRhcmdldFJlZj0iQWN0aXZpdHlfMTVwcWFyZCIgLz4KICAgIDx0YXNrIGlkPSJBY3Rpdml0eV8xZ2ZwNDA4IiBuYW1lPSJEbyB0aGF0Ij4KICAgICAgPGluY29taW5nPkZsb3dfMTJ5dGZibjwvaW5jb21pbmc+CiAgICA8L3Rhc2s+CiAgICA8c2VxdWVuY2VGbG93IGlkPSJGbG93XzEyeXRmYm4iIHNvdXJjZVJlZj0iQWN0aXZpdHlfMHpxa3J2aiIgdGFyZ2V0UmVmPSJBY3Rpdml0eV8xZ2ZwNDA4IiAvPgogICAgPHRhc2sgaWQ9IkFjdGl2aXR5XzB6cWtydmoiIG5hbWU9IiI+CiAgICAgIDxvdXRnb2luZz5GbG93XzFmc3Vjcng8L291dGdvaW5nPgogICAgICA8b3V0Z29pbmc+Rmxvd18xMnl0ZmJuPC9vdXRnb2luZz4KICAgIDwvdGFzaz4KICA8L3Byb2Nlc3M+CiAgPGJwbW5kaTpCUE1ORGlhZ3JhbSBpZD0iQnBtbkRpYWdyYW1fMSI+CiAgICA8YnBtbmRpOkJQTU5QbGFuZSBpZD0iQnBtblBsYW5lXzEiIGJwbW5FbGVtZW50PSJQcm9jZXNzXzAzaGxjd2kiPgogICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iQWN0aXZpdHlfMTVwcWFyZF9kaSIgYnBtbkVsZW1lbnQ9IkFjdGl2aXR5XzE1cHFhcmQiPgogICAgICAgIDxvbWdkYzpCb3VuZHMgeD0iMzgwIiB5PSIyMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIgLz4KICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbCAvPgogICAgICA8L2JwbW5kaTpCUE1OU2hhcGU+CiAgICAgIDxicG1uZGk6QlBNTlNoYXBlIGlkPSJBY3Rpdml0eV8xZ2ZwNDA4X2RpIiBicG1uRWxlbWVudD0iQWN0aXZpdHlfMWdmcDQwOCI+CiAgICAgICAgPG9tZ2RjOkJvdW5kcyB4PSIzODAiIHk9IjE4MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIgLz4KICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbCAvPgogICAgICA8L2JwbW5kaTpCUE1OU2hhcGU+CiAgICAgIDxicG1uZGk6QlBNTlNoYXBlIGlkPSJBY3Rpdml0eV8wenFrcnZqX2RpIiBicG1uRWxlbWVudD0iQWN0aXZpdHlfMHpxa3J2aiI+CiAgICAgICAgPG9tZ2RjOkJvdW5kcyB4PSIyNDAiIHk9IjEwMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIgLz4KICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbCAvPgogICAgICA8L2JwbW5kaTpCUE1OU2hhcGU+CiAgICAgIDxicG1uZGk6QlBNTkVkZ2UgaWQ9IkZsb3dfMWZzdWNyeF9kaSIgYnBtbkVsZW1lbnQ9IkZsb3dfMWZzdWNyeCI+CiAgICAgICAgPG9tZ2RpOndheXBvaW50IHg9IjI5MCIgeT0iMTAwIiAvPgogICAgICAgIDxvbWdkaTp3YXlwb2ludCB4PSIyOTAiIHk9IjYwIiAvPgogICAgICAgIDxvbWdkaTp3YXlwb2ludCB4PSIzODAiIHk9IjYwIiAvPgogICAgICA8L2JwbW5kaTpCUE1ORWRnZT4KICAgICAgPGJwbW5kaTpCUE1ORWRnZSBpZD0iRmxvd18xMnl0ZmJuX2RpIiBicG1uRWxlbWVudD0iRmxvd18xMnl0ZmJuIj4KICAgICAgICA8b21nZGk6d2F5cG9pbnQgeD0iMjkwIiB5PSIxODAiIC8+CiAgICAgICAgPG9tZ2RpOndheXBvaW50IHg9IjI5MCIgeT0iMjIwIiAvPgogICAgICAgIDxvbWdkaTp3YXlwb2ludCB4PSIzODAiIHk9IjIyMCIgLz4KICAgICAgPC9icG1uZGk6QlBNTkVkZ2U+CiAgICA8L2JwbW5kaTpCUE1OUGxhbmU+CiAgPC9icG1uZGk6QlBNTkRpYWdyYW0+CjwvZGVmaW5pdGlvbnM+Cg==
The sequence flows at the diagram below are labelled (“if this”, “if that”), so naive user may think that there are two exclusive options. Yet it's still the same implicit parallel execution.
Cjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjxkZWZpbml0aW9ucyB4bWxucz0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9NT0RFTCIgeG1sbnM6YnBtbmRpPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9CUE1OLzIwMTAwNTI0L0RJIiB4bWxuczpvbWdkaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvREkiIHhtbG5zOm9tZ2RjPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9ERC8yMDEwMDUyNC9EQyIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgaWQ9InNpZC0zODQyMmZhZS1lMDNlLTQzYTMtYmVmNC1iZDMzYjMyMDQxYjIiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2JwbW4uaW8vYnBtbiIgZXhwb3J0ZXI9Imh0dHA6Ly9icG1uLmlvIiBleHBvcnRlclZlcnNpb249IjAuMTAuMSI+CiAgPHByb2Nlc3MgaWQ9IlByb2Nlc3NfMDNobGN3aSI+CiAgICA8dGFzayBpZD0iQWN0aXZpdHlfMTVwcWFyZCIgbmFtZT0iRG8gdGhpcyI+CiAgICAgIDxpbmNvbWluZz5GbG93XzFmc3Vjcng8L2luY29taW5nPgogICAgPC90YXNrPgogICAgPHNlcXVlbmNlRmxvdyBpZD0iRmxvd18xZnN1Y3J4IiBuYW1lPSJpZiB0aGlzIiBzb3VyY2VSZWY9IkFjdGl2aXR5XzB6cWtydmoiIHRhcmdldFJlZj0iQWN0aXZpdHlfMTVwcWFyZCIgLz4KICAgIDx0YXNrIGlkPSJBY3Rpdml0eV8xZ2ZwNDA4IiBuYW1lPSJEbyB0aGF0Ij4KICAgICAgPGluY29taW5nPkZsb3dfMTJ5dGZibjwvaW5jb21pbmc+CiAgICA8L3Rhc2s+CiAgICA8c2VxdWVuY2VGbG93IGlkPSJGbG93XzEyeXRmYm4iIG5hbWU9ImlmIHRoYXQiIHNvdXJjZVJlZj0iQWN0aXZpdHlfMHpxa3J2aiIgdGFyZ2V0UmVmPSJBY3Rpdml0eV8xZ2ZwNDA4IiAvPgogICAgPHRhc2sgaWQ9IkFjdGl2aXR5XzB6cWtydmoiIG5hbWU9IiI+CiAgICAgIDxvdXRnb2luZz5GbG93XzEyeXRmYm48L291dGdvaW5nPgogICAgICA8b3V0Z29pbmc+Rmxvd18xZnN1Y3J4PC9vdXRnb2luZz4KICAgIDwvdGFzaz4KICA8L3Byb2Nlc3M+CiAgPGJwbW5kaTpCUE1ORGlhZ3JhbSBpZD0iQnBtbkRpYWdyYW1fMSI+CiAgICA8YnBtbmRpOkJQTU5QbGFuZSBpZD0iQnBtblBsYW5lXzEiIGJwbW5FbGVtZW50PSJQcm9jZXNzXzAzaGxjd2kiPgogICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iQWN0aXZpdHlfMTVwcWFyZF9kaSIgYnBtbkVsZW1lbnQ9IkFjdGl2aXR5XzE1cHFhcmQiPgogICAgICAgIDxvbWdkYzpCb3VuZHMgeD0iMzgwIiB5PSIyMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIgLz4KICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbCAvPgogICAgICA8L2JwbW5kaTpCUE1OU2hhcGU+CiAgICAgIDxicG1uZGk6QlBNTlNoYXBlIGlkPSJBY3Rpdml0eV8xZ2ZwNDA4X2RpIiBicG1uRWxlbWVudD0iQWN0aXZpdHlfMWdmcDQwOCI+CiAgICAgICAgPG9tZ2RjOkJvdW5kcyB4PSIzODAiIHk9IjE4MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIgLz4KICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbCAvPgogICAgICA8L2JwbW5kaTpCUE1OU2hhcGU+CiAgICAgIDxicG1uZGk6QlBNTlNoYXBlIGlkPSJBY3Rpdml0eV8wenFrcnZqX2RpIiBicG1uRWxlbWVudD0iQWN0aXZpdHlfMHpxa3J2aiI+CiAgICAgICAgPG9tZ2RjOkJvdW5kcyB4PSIyNDAiIHk9IjEwMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIgLz4KICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbCAvPgogICAgICA8L2JwbW5kaTpCUE1OU2hhcGU+CiAgICAgIDxicG1uZGk6QlBNTkVkZ2UgaWQ9IkZsb3dfMWZzdWNyeF9kaSIgYnBtbkVsZW1lbnQ9IkZsb3dfMWZzdWNyeCI+CiAgICAgICAgPG9tZ2RpOndheXBvaW50IHg9IjI5MCIgeT0iMTAwIiAvPgogICAgICAgIDxvbWdkaTp3YXlwb2ludCB4PSIyOTAiIHk9IjYwIiAvPgogICAgICAgIDxvbWdkaTp3YXlwb2ludCB4PSIzODAiIHk9IjYwIiAvPgogICAgICAgIDxicG1uZGk6QlBNTkxhYmVsPgogICAgICAgICAgPG9tZ2RjOkJvdW5kcyB4PSIyOTIiIHk9Ijc3IiB3aWR0aD0iMjYiIGhlaWdodD0iMTQiIC8+CiAgICAgICAgPC9icG1uZGk6QlBNTkxhYmVsPgogICAgICA8L2JwbW5kaTpCUE1ORWRnZT4KICAgICAgPGJwbW5kaTpCUE1ORWRnZSBpZD0iRmxvd18xMnl0ZmJuX2RpIiBicG1uRWxlbWVudD0iRmxvd18xMnl0ZmJuIj4KICAgICAgICA8b21nZGk6d2F5cG9pbnQgeD0iMjkwIiB5PSIxODAiIC8+CiAgICAgICAgPG9tZ2RpOndheXBvaW50IHg9IjI5MCIgeT0iMjIwIiAvPgogICAgICAgIDxvbWdkaTp3YXlwb2ludCB4PSIzODAiIHk9IjIyMCIgLz4KICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbD4KICAgICAgICAgIDxvbWdkYzpCb3VuZHMgeD0iMjkxIiB5PSIxOTciIHdpZHRoPSIyOCIgaGVpZ2h0PSIxNCIgLz4KICAgICAgICA8L2JwbW5kaTpCUE1OTGFiZWw+CiAgICAgIDwvYnBtbmRpOkJQTU5FZGdlPgogICAgPC9icG1uZGk6QlBNTlBsYW5lPgogIDwvYnBtbmRpOkJQTU5EaWFncmFtPgo8L2RlZmluaXRpb25zPgo=
Notes
- Although several outgoing flows are allowed by BPMN spec, it's potentially confusing and therefore should be considered bad practice.
- It's sometimes argued that implicit parallel execution saves one element (the parallel gateway) and hence makes the diagram simpler. This argument is hardly acceptable because the parallel gateway adds value to the diagram by making process execution logic clear.
Exceptions
- Implicit parallel flows are acceptable at the start event in control branch technique.
See also
Автор(ы)
— Anatoly Belaychuk 2023-09-10 13:02