[jboss-user] [JBoss jBPM] - Trying to implement a loop in JPDL

WalterTaus do-not-reply at jboss.com
Thu May 29 03:15:30 EDT 2008


Hello,

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

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4154141#4154141

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4154141



More information about the jboss-user mailing list