Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Detect deadlocking parallel gateway #151

Open
barmac opened this issue Nov 13, 2024 · 2 comments
Open

Detect deadlocking parallel gateway #151

barmac opened this issue Nov 13, 2024 · 2 comments
Labels
backlog Queued in backlog rules Concerning existing or missing rules spring cleaning Could be cleaned up one day

Comments

@barmac
Copy link
Member

barmac commented Nov 13, 2024

The rule detects the following modeling patterns

  • Detect when the number of incoming flows of a parallel gateway does not match the number of outgoing flows of the closest parallel gateway.

image

How does the rule improve the BPMN diagram?

The rule allows to prevent a deadlock.

Rule Details

  • Name: no-parallel-gateway-deadlock
  • Default notification level: error

What alternatives did you consider?

We could work on the name, but it's not a matter of style but rather the correctness of the diagram.


Context: https://camunda.slack.com/archives/C05FVD0AZ2R/p1731508704469399

@barmac barmac added rules Concerning existing or missing rules spring cleaning Could be cleaned up one day backlog Queued in backlog labels Nov 13, 2024
@korthout
Copy link

My feeling is that this lint would have many false positives caused by cases with:

  • forking behavior by having multiple outgoing sequence flows
  • dynamic forking behavior by inclusive gateway
  • dynamic forking behavior due to non-interrupting boundary events

It might be better to build this in a way starting with many false negatives and slowly build up to support more cases.

@nikku
Copy link
Member

nikku commented Nov 13, 2024

There is entire masterthesis about "livelyness detection", and it is not decisable in reasonable O(n) time. Let's be careful how/if we role this out. Also, let's carefully consider prior art.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backlog Queued in backlog rules Concerning existing or missing rules spring cleaning Could be cleaned up one day
Projects
None yet
Development

No branches or pull requests

3 participants