Skip to content

feat: add no-multi-instance-termination rule - #228

Open
nikku wants to merge 1 commit into
mainfrom
nikku-detect-multi-instance-termination
Open

nikku wants to merge 1 commit into
mainfrom
nikku-detect-multi-instance-termination

Conversation

@nikku

@nikku nikku commented Nov 14, 2026

Copy link
Copy Markdown
Member

Proposed Changes

Adds a rule that warns when termination inside multi-instance is used. For non-BPMN experts this is ambiguous - does not do what you may expect (cancel single instance only).

image

Closes #223

Checklist

Ensure you provide everything we need to review your contribution:

  • Contribution meets our definition of done
  • Pull request establishes context
    • Link to related issue(s), i.e. Closes {LINK_TO_ISSUE} or Related to {LINK_TO_ISSUE}
    • Brief textual description of the changes
    • Screenshots or short videos showing UI/UX changes
    • Steps to try out, i.e. using the @bpmn-io/sr tool

@nikku nikku self-assigned this Nov 14, 2026
@nikku
nikku requested review from a team and a balanced review from Copilot November 14, 2026 18:41
@bpmn-io-tasks bpmn-io-tasks Bot added the needs review Review pending label Nov 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

A nonexistent fixture filename causes ENOENT failures in both test references, while the documentation mischaracterizes legitimate termination of parallel work within the current iteration.

2 open issues
What changed in this PR

Adds no-multi-instance-termination to bpmnlint to clarify that termination directly inside a multi-instance subprocess affects only the current iteration, addressing #223.

Changes:

  • Implements the scope advisory and enables it as a warning in recommended.
  • Adds fixtures and tests covering iteration types, nested scopes, event-definition references, and configuration integration.
  • Documents the rule with examples of iteration-level and all-iteration cancellation.
File Description
test/​spec/​config-spec.mjs Expects the new recommended warning.
test/​rules/​no-multi-instance-termination/​valid-other-end-events.bpmn Covers non-terminate end events.
test/​rules/​no-multi-instance-termination/​valid-non-multi-instance.bpmn Provides non-multi-instance controls.
test/​rules/​no-multi-instance-termination/​valid-nested.bpmn Covers separate nested termination scopes.
test/​rules/​no-multi-instance-termination/​transaction.bpmn Covers multi-instance transactions.
test/​rules/​no-multi-instance-termination/​sequential.bpmn Covers sequential iterations.
test/​rules/​no-multi-instance-termination/​referenced-termination.bpmn Covers referenced terminate definitions.
test/​rules/​no-multi-instance-termination/​parallel.bpmn Covers explicit and default parallel iterations.
test/​rules/​no-multi-instance-termination/​nested-multi-instance.bpmn Covers nested multi-instance scopes.
test/​rules/​no-multi-instance-termination.mjs Adds rule and integration assertions.
test/​integration/​compilation/​test/​bpmnlintrc.expected.js Updates expected compiled rule registration.
rules/​no-multi-instance-termination.js Implements the termination-scope warning.
docs/​rules/​README.md Links the new rule documentation.
docs/​rules/​no-multi-instance-termination.md Explains the rule and cancellation examples.
docs/​rules/​examples/​no-multi-instance-termination-incorrect.bpmn Illustrates termination within one iteration.
docs/​rules/​examples/​no-multi-instance-termination-event-subprocess-correct.bpmn Illustrates iteration-level event-subprocess interruption.
docs/​rules/​examples/​no-multi-instance-termination-correct.bpmn Illustrates cancellation of all iterations.
config/​recommended.js Enables the advisory at warning level.
config/​all.js Registers the rule in the complete ruleset.

Review effort: Balanced

@nikku
nikku force-pushed the nikku-detect-multi-instance-termination branch from 87fe2f8 to 53f059a Compare November 14, 2026 18:53
@nikku
nikku requested a balanced review from Copilot November 14, 2026 19:09

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The escalation examples omit required escalation references, so they do not reliably demonstrate the documented cancellation behavior.

1 open issue
2 resolved since last review

Review effort: Balanced

</bpmn:endEvent>
<bpmn:endEvent id="Event_3">
<bpmn:incoming>Flow_5</bpmn:incoming>
<bpmn:escalationEventDefinition id="EscalationEventDefinition_137zzv5" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs review Review pending

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Detect potentially misleading termination inside multi-instance subprocesses

2 participants