Repository navigation
FOUR-6787 If more than two tasks end in an Intermediate Signal Throw Event Element, the flow will not be correctly completed - #9099
devmiguelangel wants to merge 4 commits into
Conversation
PR SummaryLow Risk Overview Introduces Reviewed by Cursor Bugbot for commit b194341. Bugbot is set up for automated code reviews on this repo. Configure here. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ 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.
|






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
.