What can cause a default transition to be triggered when another condition is fulfilled ?

TL; DR :

  • The default transition is the last condition in the transition ordering
  • I added a “display description” in the exclusive gateway, which shows that the input is really “REJETEE”, so the transition condition should have been triggered
  • This behavior is not constant : most of the time the condition works fine, but 1/10 to 1/3 of the times it behaves differently

Hello,

I have a strange behaviour from my transitions in Bonita 7.0.1.
Here is an exemple of a transition that doesn’t always behaves as we would expect :
Sequence flow
I tested this sequence flow several times with the exact same input : statut == REJETEE, and sometimes (like 1/4 or 1/10 chance) the corresponding transition won’t be triggered and this is the default one that will be selected (so I will have the “task 3” selected instead of ending the flow).
The “task 2” has a connector out that is sucessfully called no matter what the selected transition is :
connector out
The “task 2” updates my business vars with its operations :
Business var affectation thanks to operation

I have put a display description on the exclusive gateway to see what the business var contains :
return "Statut de la prestation après E2 : " + prestation.getStatut();
I have a test where the default transition was selected instead of the “statut == REJECTED” (the task 3 is available in my task list).
In this test, the display description in the bonita administrator view → BPM → cases → cases details shows that the contition “statut == REJETEE” should have been triggered instead of the default one:
gateway display description

Here is the “statut == REJETEE” transition :
statut == rejetee transition
The expression for the condition is a groovy script returning a boolean :
statut == rejetee condition

Here is the default transition :
default transition

The “statut == PERCUEE” transition doesn’t seem to be called (and it shouldn’t be, so no problem here)

Here is the transition ordering:
Transition ordering

Do you know why the “task 3” can be triggered even if the condition “statut == REJETEE” should have been called instead, while the gateway description shows that the status is really “REJETEE” ?
Then again, this behavior is not constant, most of the time the correct transition is selected, but not always. And I don’t know what can cause this.