Skip to content

FOUR-6787 If more than two tasks end in an Intermediate Signal Throw Event Element, the flow will not be correctly completed - #9099

Open
devmiguelangel wants to merge 4 commits into
developfrom
FOUR-6787
Open

devmiguelangel wants to merge 4 commits into
developfrom
FOUR-6787

Conversation

@devmiguelangel

@devmiguelangel devmiguelangel commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Summary

If more than two tasks end in an Intermediate Signal Throw Event Element, the flow will not be correctly completed

An Intermediate Throw Event with two or more incoming sequence flows behaved like an AND-join. TransitionTrait::hasAllRequiredTokens only fired the shared transition when every incoming state had a token, and one firing consumed one token from each incoming flow. When an exclusive or parallel split delivered a token on only some of those flows, the event never fired and the request stayed In Progress.

The event is no longer a join. IntermediateThrowEventTransition fires as soon as any incoming flow has a token and consumes exactly one token per firing, so each arriving token triggers the event and continues downstream. The graph is unchanged: one incoming state per sequence flow, all connected to the same transition. Token persistence and ThrowEventTokenPassed still happen on that transition, which keeps the previous event order for boundary and message tests.

Before this change the transition waited until inA, inB, and inC all held a token. Now a token on any one of them is enough.

Related Tickets

FOUR-6787
ProcessMaker/nayra#240

ci:nayra:FOUR-6787

.

@cursor

cursor Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

PR Summary

Low Risk
Test-only changes (fixture plus feature tests); no application or engine code modified in this diff.

Overview
Adds regression coverage for FOUR-6787: an Intermediate Message Throw Event fed by three exclusive-gateway branches must not behave like an AND-join and block completion.

Introduces tests/Fixtures/four_6787_intermediate_throw_event.json (exclusive gateway → Form Task 1/2/3 → shared node_19 → message end) and IntermediateThrowEventMergeTest, which imports the package, starts a request, completes the gateway branch for select 1, 2, or 3, and asserts the process request reaches COMPLETED in each case.

Reviewed by Cursor Bugbot for commit b194341. Bugbot is set up for automated code reviews on this repo. Configure here.

@devmiguelangel devmiguelangel changed the title test: add tests for Intermediate Message Throw Event behavior FOUR-6787 If more than two tasks end in an Intermediate Signal Throw Event Element, the flow will not be correctly completed- #240 Oct 13, 2026
@devmiguelangel devmiguelangel self-assigned this Oct 13, 2026

@cursor cursor Bot 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.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 2e9aed3. Configure here.

Comment thread tests/Feature/IntermediateThrowEventMergeTest.php Outdated
@devmiguelangel devmiguelangel changed the title FOUR-6787 If more than two tasks end in an Intermediate Signal Throw Event Element, the flow will not be correctly completed- #240 FOUR-6787 If more than two tasks end in an Intermediate Signal Throw Event Element, the flow will not be correctly completed Oct 14, 2026
@decisions-sonarqube

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants