Trying to implement a loop in JPDL
waltertaus May 29, 2008 3:15 AMHello,
I have tried to implement a loop in JPDL. My source looks as follows
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="" name="Pool">
<start-state name="StartState1212041906165">
<transition to="LoopBefore3/LoopBefore3LoopCounterInit"></transition>
</start-state>
<super-state name="LoopBefore3">
<node name="LoopBefore3LoopCounterInit">
<event type="node-enter">
<script><expression>
System.out.println(executionContext.getNode().getName() + " entered");
executionContext.setVariable("_f5Ue8CyoEd2cO4xcRmnV4wLoopCounter", 0);
executionContext.leaveNode();
</expression></script></event>
<transition name="To_f5Ue8CyoEd2cO4xcRmnV4w" to="LoopBefore3LoopDecision"></transition>
</node>
<decision name="LoopBefore3LoopDecision">
<event type="node-enter">
<script><expression>
System.out.println(executionContext.getNode().getName() + " entered");
</expression></script></event>
<transition name="To_f5Ue8CyoEd2cO4xcRmnV4w" to="LoopBefore3"></transition>
<transition name="To_mTMyICyoEd2cO4xcRmnV4w" to="../End/End">
<condition expression="#{contextInstance.variables['_f5Ue8CyoEd2cO4xcRmnV4wLoopCounter']>= '3'}"></condition>
</transition>
</decision>
<task-node name="LoopBefore3">
<event type="node-enter">
<script><expression>
System.out.println(executionContext.getNode().getName() + " entered");
executionContext.leaveNode();
</expression></script></event>
<event type="node-leave">
<script><expression>
executionContext.setVariable("_f5Ue8CyoEd2cO4xcRmnV4wLoopCounter", executionContext.getVariable("_f5Ue8CyoEd2cO4xcRmnV4wLoopCounter") + 1);
</expression></script></event>
<transition name="To_f5Ue8CyoEd2cO4xcRmnV4w" to="LoopBefore3LoopDecision"></transition>
<task name="LoopBefore3"></task>
</task-node>
</super-state>
<super-state name="End">
<end-state name="End">
<event type="node-enter">
<script><expression>
System.out.println(executionContext.getNode().getName() + " entered");
</expression></script></event>
</end-state>
</super-state>
</process-definition>
I receive the following at the Console:
StartState1212041906165 LoopBefore3LoopCounterInit entered LoopBefore3LoopDecision entered LoopBefore3 entered LoopBefore3LoopDecision entered LoopBefore3 entered LoopBefore3LoopDecision entered LoopBefore3 entered LoopBefore3LoopDecision entered End entered LoopBefore3LoopDecision entered End entered
I am totally puzzled with this result, as I am hitting twice the end-state. The first time entering the end state does not seem to have any effect. Can anyone explain what I am doing wrong here.
Thanks,
Walter