0 Replies Latest reply on Jan 30, 2007 2:54 PM by Randy Brandenburg

    Node-Type Nodes Wait State

    Randy Brandenburg Newbie

      The jBPM User's Guide states the following:

      The nodetype node expects one subelement action. The action is executed when the execution arrives in the node. The code you write in the actionhandler can do anything you want but it is also responsible for propagating the execution.

      I have a trasition (moreInfoLevel_1) to a Node (notifyMoreInfo) and then an action tied to the on-enter event (NotifyMoreInfo). I am not manually propagating the execution, but the token ends up in the next node (the end state). Here is my process definition.

      <?xml version="1.0" encoding="UTF-8"?>
      
      <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="dssdar.process">
       <start-state name='createRequest'>
       <transition name="propLevel_1" to="review1task">
       <action name="notifySupervisor" class="com.lmco.dssdar.action.handler.NotifyReviewer">
       <message>notifySupervisor</message>
       </action>
       </transition>
       </start-state>
       <end-state name='end' />
       <node name="notifyreject">
       <event type="node-enter">
       <action name="notifyRejectAction" class="com.lmco.dssdar.action.handler.NotifyReject">
       <message>notifyRejectAction</message>
       </action>
       </event>
       <transition name="" to="end"></transition>
       </node>
       <node name="notifyapprove">
       <event type="node-enter">
       <action name="notifyApproveAction" class="com.lmco.dssdar.action.handler.NotifyApprove">
       <message>notifyApproveAction</message>
       </action>
       </event>
       <transition name="" to="end"></transition>
       </node>
       <task-node name="review1task">
       <task name="supervisorReview">
       <assignment class="com.lmco.dssdar.action.handler.AssignTask">
       <actorID>SUPERVISOR</actorID>
       </assignment>
       </task>
       <transition name="rejectLevel_1" to="notifyreject"></transition>
       <transition name="propLevel_2" to="review2task">
       <action name="notifyIAO" class="com.lmco.dssdar.action.handler.NotifyReviewer">
       <message>IAO</message>
       </action>
       </transition>
       <transition name="moreInfoLevel_1" to="notifymoreinfo"></transition>
       </task-node>
       <task-node name="review2task">
       <task name="iaoReview">
       <assignment class="com.lmco.dssdar.action.handler.AssignTask">
       <actorID>IAO</actorID>
       </assignment>
       </task>
       <transition name="approve" to="notifyapprove"></transition>
       <transition name="rejectLevel_2" to="notifyreject"></transition>
       <transition name="moreInfoLevel_2" to="notifymoreinfo"></transition>
       </task-node>
       <node name="notifymoreinfo">
       <event type="node-enter">
       <action name="notifyMoreInfoAction" class="com.lmco.dssdar.action.handler.NotifyMoreInfo">
       <message>notifyMoreInfoAction</message>
       </action>
       </event>
       <transition name="" to="end"></transition>
       </node>
      </process-definition>
      


      Here is my execute method of the NotifyMoreInfo action handler.
      
      public void execute(ExecutionContext context) throws Exception {
       context.getContextInstance().setVariable("message", message);
       System.out.println("NotyifyReviewer==> " + message );
      }
      
      


      The string is printed as expected, but the transition to the next state is also executed. Can anyone fill me in to what is happening. I expect it to remain in this state until I manually signal the token. Is this not correct?

      Is this possibly happening due to the fact there is only a single leaving transition?

      TIA. Randy