[jboss-user] [JBoss jBPM] - subprocess token positioned at next node

debnathm do-not-reply at jboss.com
Fri Feb 1 08:24:19 EST 2008


Hi

I am trying to execute a subprocess but after signalling the main
process, the token seems to go past the first state of the subprocess
and position itself at the second state. I was expecting it to stop at
the first state of the subprocess.

The print statements after executing the test case are as below:

After processInstance
Node is: ProcessState(process-state1)
Subprocess node is:fork1

Please let me know what's wrong.

Thanks,

Debnath

The test case and setup details are as follows:

Test case

package com.jbpm.tutorial.subprocess;
  | 
  | import junit.framework.TestCase;
  | import org.jbpm.graph.def.ProcessDefinition;
  | import org.jbpm.graph.exe.ProcessInstance;
  | import org.jbpm.graph.exe.Token;
  | import org.jbpm.graph.node.ProcessState;
  | 
  | public class SubProcessTest extends TestCase {
  |     public void setUp()
  |     {
  |     	
  |     }
  |     
  |     public void testSubProcess()
  |     {
  |     	ProcessDefinition mainprocessDefinition = ProcessDefinition.parseXmlString(
  |     			"<process-definition name='mainprocess'>" +
  |     			"<start-state name='start'>" +
  |     			"<transition to='process-state1'></transition>" +
  |     			"</start-state>" +
  |     			"<process-state name='process-state1'>" +
  |     			"<sub-process name='subprocess'></sub-process>" +
  |     			"<transition to='task-node1'></transition>" +
  |     			"</process-state>" +
  |     			"<task-node name='task-node1'>" +
  |     			"<task name='TaskNode1Task'></task>" +
  |     			"<transition to='end'></transition>" +
  |     			"</task-node>" +
  |     			"<end-state name='end'></end-state>" +
  |     			"</process-definition>");
  |     			    			ProcessInstance mainprocessInstance = new ProcessInstance(mainprocessDefinition);
  |     			System.out.println("After processInstance");
  | 
  |     			assertEquals(false, mainprocessInstance == null);
  |     			Token token = mainprocessInstance.getRootToken();
  |     			token.signal();
  |     			assertEquals(true, token.getNode() instanceof ProcessState);
  |     			System.out.println("Node is: " + token.getNode());
  |     			ProcessInstance subProcessInstance = token.getSubProcessInstance();
  |     			Token subprocessToken = subProcessInstance.getRootToken();
  |     			System.out.println("Subprocess node is:" + subprocessToken.getNode().getName());
  |     			assertEquals(true, subprocessToken.getNode().getName().equals("start"));
  |     			//System.out.println("Subprocess node is:" + subprocessToken.getNode().getName());
  |     			}
  | }

The Subprocess Resolver  is as follows:



  | package com.jbpm.tutorial.subprocess;
  | 
  | import org.jbpm.graph.node.SubProcessResolver;
  | import org.jbpm.graph.def.ProcessDefinition;
  | import org.dom4j.Element;
  | 
  | public class CustomSubProcessResolver implements SubProcessResolver
  | {
  | 
  |     /**
  | 	 * 
  | 	 */
  | 	private static final long serialVersionUID = 1L;
  | 
  | 	public ProcessDefinition findSubProcess(Element subProcessElement)
  |     {
  | 	ProcessDefinition subprocessDefinition = ProcessDefinition.parseXmlString(
  | 	"<process-definition name='subprocess'> " +
  | 	"<start-state name='start'> " +
  | 	"<task name='StartNodeTask'> " +
  |     "<assignment actor-id='user'></assignment> " +
  | 	"</task>" +
  | 	"<transition to='fork1'></transition>" +
  | 	"</start-state>" +
  |         "<fork name='fork1'>" +
  | 	"<transition to='task-node1' name='to_task_node_1'></transition>" +
  | 	"<transition to='task-node2' name='to_task_node_2'></transition>" +
  | 	"</fork>" +
  |         "<task-node name='task-node1'>" +
  | 	"<task name='TaskNode1Task'>" +
  | 	"<assignment actor-id='user'></assignment>" +
  | 	 "</task>" +
  | 	"<transition to='join1' name='to_join_1'></transition>" +
  | 	"</task-node>" +
  | 	"<task-node name='task-node2'>" +
  | 	"<task name='TaskNode2Task'>" +
  |     "<assignment actor-id='user'></assignment>" +
  | 	"</task>" +
  | 	"<transition to='join1' name='to_join_2'></transition>" +
  | 	"</task-node>" +
  | 	"<join name='join1'>" + 
  | 	"<transition to='end'></transition>" +
  | 	"</join>" +
  | 	"<end-state name='end'></end-state>" +
  | 	"</process-definition>");
  | 	return subprocessDefinition;
  |     }
  | 
  | }
  | 

The jbpm.cfg.xml  is as follows:

<jbpm-configuration>
  | 
  |   <bean   name="jbpm.sub.process.resolver" class="com.jbpm.tutorial.subprocess.CustomSubProcessResolver" singleton="false" />
  | 
  | </jbpm-configuration>



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

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



More information about the jboss-user mailing list