Well,
The reason why it doesn't work is because when you don't add the condition part
in your second transition, you end up with a decision node which only contains
a single DecisionCondition.
When you look into the code of the decision node (the execute method), you will
see it loops over all DecisionConditions (in your case only 1!), and checks if
it can find one which is true:
Iterator iter = decisionConditions.iterator();
| while (iter.hasNext() && (transition==null)) {
| DecisionCondition decisionCondition = (DecisionCondition)
iter.next();
| Object result =
JbpmExpressionEvaluator.evaluate(decisionCondition.getExpression(),
executionContext);
| if (Boolean.TRUE.equals(result)) {
| if (transition!=null) {
| transition.removeConditionEnforcement();
| }
| String transitionName = decisionCondition.getTransitionName();
| transition = getLeavingTransition(transitionName);
| }
| }
|
Since this condition fails, it will take the default leaving transition (the
first transition.
if (transition==null) {
| transition = getDefaultLeavingTransition();
| log.debug("decision didn't select transition, taking default
"+transition);
| }
|
What you can do to go around this behaviour:
- Make a condition for your second one which is always true (like you did
before but you can also use dummy expression's like 1==1).
- Move your second condition first, and make sure it always fails (by placing
and EMPTY conditiion f.e. ), when all other condition's fail, the default
leaving transition will be choosen, and guess this will be the first one, the
one with the empty condition element.
I would choose the second option.
Cheers,
Olivier.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4156928#4156928
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4156928
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user