-
Bug
-
Resolution: Done
-
Major
-
jBPM 3.2.2, jBPM 3.2.3
-
Low
-
A JbpmException with explanation "can't leave node 'xxx' without leaving transition" is thrown in the following case:
1. A Decision node with a delegation class is defined in the processdefinition.xml.
2. The delegation class throws an exception.
3. The exception may or may not be handled by a custom ExceptionHandler.
Explanation:
The method Decision.execute(ExecutionContext) handles the decisionDelegation in its own block. The delegation class is executed and its result is used to choose the transition. If the delegation class throws an exception, the transition cannot be set. This produces later a JbpmException in Node.leave(Transtion).
Proposed solution:
This is a localized problem, restricted to one method only.
Since the Token cannot find a proper transition, the process should be aborted. The following is the diff for a patch in Decision.java:
149,155d148
<
< // Exceptions in delegation classes occur before a transition is chosen.
< // Since no transition is possible, just abort the process.
< // Custom exception handling may divert/end the process gracefully.
< if(transition == null)