Hi,
  I have a task node with two transitions and a task attached to it.The code is 
as follows..

  | <task-node name="HOD_Approval">
  |     <event type="node-enter">
  |     <action class="com.sample.action.ProcessAction" 
accept-propagated-events="false"></action>
  |     </event>
  |     <transition to="Finance_Approval" name="Accepted"></transition>
  |     <transition to="end-state" name="Denied"></transition>
  | </task-node>
Inside ProcessAction class I am accepting the decision from user and want to go 
to the next transition accordingly..

  | public class ProcessAction implements ActionHandler  {
  | 
  |     private static final long serialVersionUID = 1L;
  | 
  |     public void execute(ExecutionContext executionContext) throws Exception 
{               
System.out.println("######################---------ProcessAction------------1-----------------######################
 .");
  |             System.out.println("This Node 
is---"+executionContext.getNode().getName());
  |             System.out.print("Enter your decission: ");           
  |         BufferedReader br = new BufferedReader(new 
InputStreamReader(System.in));
  |         
  |         String decission = null;
  |         try {
  |             decission = br.readLine();
  |         } catch (IOException ioe) {
  |            System.out.println("IO error trying to read your decission!");   
       
  |         }
  |         System.out.println("Thanks for the desission, " + decission);
  |         
System.out.println("######################---------ProcessAction------------2-----------------######################
 .");
  |         if(decission != null && decission.equalsIgnoreCase("a")){
  |             
  |             
System.out.println("######################---------ProcessAction----a--------3-----------------######################
 .");
  |             executionContext.getTaskInstance().end("Accepted");
  |         }
  |         else if(decission != null && decission.equalsIgnoreCase("d")){
  |             
  |             
System.out.println("######################---------ProcessAction-----d-------3-----------------######################
 .");
  |             executionContext.leaveNode("Denied");
  |         }
  |         else if(decission != null && decission.equalsIgnoreCase("c")){
  |             
System.out.println("######################---------ProcessAction-----c-------3-----------------######################
 .");
  |             
  |             executionContext.leaveNode("checkBudget");
  |         }
  |         else{
  |             System.out.println("Error trying to read your decission!..Enter 
only a/d ");    
  |         }
  |             
  |     }
  | }
  | 


With this the flow is navigating correctly to the next node as per the 
decision, But after reaching end -state , again the process is selecting a 
default transition ..where as it should stop, at end node..

The class I am using to invoke the jBPM is as follows..


  | public class TravelProcessTest extends TestCase  {
  |     
  |     public static void main(String args[])throws Exception {
  |             new TravelProcessTest().execute();
  |     }
  |     public void execute() throws Exception {
  |             JbpmConfiguration jbpmConfiguration = 
JbpmConfiguration.getInstance();
  |             JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
  |             
  |             // Extract a process definition from the processdefinition.xml 
file.
  |             ProcessDefinition processDefinition = 
ProcessDefinition.parseXmlResource("simple/processdefinition.xml");
  |             //HashMap map = new HashMap();
  | 
  |             //map.put("travelDate",new Integer(100)); 
  |             //map.put("travelPeriod",new Integer(50));
  | 
  |             //Create an instance of the process definition.
  |             //ProcessInstance instance = new 
ProcessInstance(processDefinition,map);
  |             ProcessInstance instance = new 
ProcessInstance(processDefinition);
  |             
System.out.println("--------------------1-----------------######### ."); 
  |             displayStatus(instance);
  |             
System.out.println("---------------------2-----------------########## .");
  |             instance.signal();
  |             
  |             
System.out.println("---------------------3-----------------###########.");
  |             displayStatus(instance);
  |             
System.out.println("---------------------4-----------------###########.");
  |             instance.end();
  |             
  |             
  |     }
  | 
  |     private void displayStatus(ProcessInstance instance) {   
  |             String nodeName = instance.getRootToken().getNode().getName();  
 
  |             System.out.println("You are now in node: "+nodeName);   
  | 
  |     }
  | }
  | 
  | 
  | 


Can you please suggest what is going wrong.. so that even after reaching end 
state , the process is again propagating to another transition..




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

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4247506
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to