package org.jboss.seam.test.unit; import java.io.StringReader; import org.jboss.seam.bpm.PageflowParser; import org.jboss.seam.pageflow.Page; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.graph.def.ProcessDefinition; import org.jbpm.graph.exe.ProcessInstance; import org.jbpm.graph.exe.Token; import org.jbpm.graph.node.StartState; import org.testng.annotations.Test; public class PageflowTest { JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString( "<jbpm-configuration />" ); @Test public void testPageflowWithStartState() { JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); StringReader stringReader = new StringReader( "<pageflow-definition name='hoepla'>" + " <start-state name='start' />" + "</pageflow-definition>" ); PageflowParser pageflowParser = new PageflowParser(stringReader); ProcessDefinition processDefinition = pageflowParser.readProcessDefinition(); assert "start".equals(processDefinition.getStartState().getName()); jbpmContext.close(); } @Test public void testPageflowWithStartPage() { JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); StringReader stringReader = new StringReader( "<pageflow-definition name='hoepla'>" + " <start-page name='start' view-id='/start.xhtml'/>" + "</pageflow-definition>"); PageflowParser pageflowParser = new PageflowParser(stringReader); ProcessDefinition processDefinition = pageflowParser.readProcessDefinition(); assert "start".equals(processDefinition.getStartState().getName()); jbpmContext.close(); } @Test public void testPageflowWithStartPageAttribute() { JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); StringReader stringReader = new StringReader( "<pageflow-definition name='hoepla' start-page='start'>" + " <page name='start' view-id='/start.xhtml'/>" + "</pageflow-definition>" ); PageflowParser pageflowParser = new PageflowParser(stringReader); ProcessDefinition processDefinition = pageflowParser.readProcessDefinition(); assert "start".equals(processDefinition.getStartState().getName()); jbpmContext.close(); } @Test public void testOrderPageflow() { StringReader stringReader = new StringReader( "<pageflow-definition name='checkout'>" + " <start-state name='start'>" + " <transition to='confirm'/>" + " </start-state>" + " <page name='confirm' view-id='/confirm.xhtml'>" + " <redirect/>" + " <transition name='update' to='continue'/>" + " <transition name='purchase' to='complete'>" + " <action expression='#{checkout.submitOrder}' />" + " </transition>" + " </page>" + " <page name='complete' view-id='/complete.xhtml'>" + " <redirect/>" + " <end-conversation/>" + " </page>" + " <page name='continue' view-id='/browse.xhtml'>" + " <end-conversation/>" + " </page>" + "</pageflow-definition>" ); PageflowParser pageflowParser = new PageflowParser(stringReader); ProcessDefinition processDefinition = pageflowParser.readProcessDefinition(); StartState start = (StartState) processDefinition.getStartState(); Page confirm = (Page) processDefinition.getNode("confirm"); Page complete = (Page) processDefinition.getNode("complete"); Page cont = (Page) processDefinition.getNode("continue"); assert confirm!=null; assert complete!=null; assert cont!=null; ProcessInstance processInstance = new ProcessInstance(processDefinition); Token token = processInstance.getRootToken(); assert start.equals(token.getNode()); processInstance.signal(); } }