ProcessState getSubProcessDefinition is null
don_t Nov 25, 2008 1:55 PMHi, I'm trying to access the sub-process child node of a process-state. My test program is listed below. I call getSubProcessDefinition and always get null. Any ideas what I'm doing wrong?
import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.dom4j.Element; import org.jbpm.graph.def.ProcessDefinition; import org.jbpm.graph.node.ProcessState; import org.jbpm.graph.node.SubProcessResolver; public class TestSubprocess extends TestCase { private static class MapBasedProcessRepository implements SubProcessResolver { private Map<String,ProcessDefinition> processes = new HashMap<String,ProcessDefinition>(); public void add(ProcessDefinition processDefinition) { processes.put(processDefinition.getName(), processDefinition); } @Override public ProcessDefinition findSubProcess(Element element) { // TODO Auto-generated method stub return processes.get(element.attributeValue("name")); } } public void testProcessInstance() { MapBasedProcessRepository subProcessResolver = new MapBasedProcessRepository(); ProcessDefinition subProcessDefinition = ProcessDefinition.parseXmlString( "<process-definition name='sub-p'>" + " <start-state>" + " <transition to='s' />" + " </start-state>" + " <state name='s'>" + " <transition to='t'/>" + " </state>" + " <state name='t'>" + " <transition to='end'/>" + " </state>" + " <end-state name='end' />" + "</process-definition>" ); subProcessResolver.add( subProcessDefinition ); subProcessDefinition = ProcessDefinition.parseXmlString( "<process-definition name='sub-q'>" + " <start-state>" + " <transition to='s' />" + " </start-state>" + " <state name='s'>" + " <transition to='t'/>" + " </state>" + " <state name='t'>" + " <transition to='end'/>" + " </state>" + " <end-state name='end' />" + "</process-definition>" ); subProcessResolver.add( subProcessDefinition ); ProcessDefinition processDefinition = ProcessDefinition.parseXmlString( "<process-definition name='super'>" + " <start-state name='start'>" + " <transition to='p' />" + " </start-state>" + " <process-state name='p'>" + " <sub-process name='sub-p' binding='late'/>" + " <transition to='q' />" + " </process-state>" + " <process-state name='q'>" + " <sub-process name='sub_q' binding='late' />" + " <transition to='end' />" + " </process-state>" + " <end-state name='end' />" + "</process-definition>" ); subProcessResolver.add( processDefinition ); ProcessState.setDefaultSubProcessResolver(subProcessResolver); ProcessState processState = (ProcessState) processDefinition.getNode("p"); System.out.println(processState); System.out.println(processState.getSubProcessDefinition()); processState = (ProcessState) processDefinition.getNode("q"); System.out.println(processState); System.out.println(processState.getSubProcessDefinition()); } }