extending decision test
kukeltje Jun 26, 2007 8:22 AMHi,
I'm extending the desiciontest a little with access to custom object.
i'm not sure though if it should be in the org.jbpm.jpdl.exe.DecisionConditionsTest or a new test in org.jbpm.jpdl.el (also called DecisionConditionsTest then)
The code is:
package org.jbpm.jpdl.[el|exe]; import junit.framework.TestCase; import org.jbpm.graph.def.ProcessDefinition; import org.jbpm.graph.exe.ProcessInstance; public class DecisionConditionsTest extends TestCase { public static class Customer { String priority; int number; public Customer(String priority) { this.priority = priority; } public Customer(int number) { this.number = number; } public String getPriority() { return priority; } public int getNumber() { return number; } } public ProcessDefinition createCustomerPriorityProcess() { return ProcessDefinition.parseXmlString( "<process-definition>" + " <start-state>" + " <transition to='d'/>" + " </start-state>" + " <decision name='d'>" + " <transition to='l' >" + " <condition>#{customer.priority == 'LOW'}</condition>" + " </transition>" + " <transition to='m'>" + " <condition>#{customer.priority == 'MEDIUM'}</condition>" + " </transition>" + " <transition to='h'>" + " <condition>#{customer.priority == 'HIGH'}</condition>" + " </transition>" + " </decision>" + " <state name='l' />" + " <state name='m' />" + " <state name='h' />" + "</process-definition>" ); } public void testCustomerPriorityLow() { ProcessDefinition processDefinition = createCustomerPriorityProcess(); ProcessInstance processInstance = new ProcessInstance(processDefinition); processInstance.getContextInstance().setVariable("customer", new Customer("LOW")); processInstance.signal(); assertEquals("l", processInstance.getRootToken().getNode().getName()); } public void testCustomerPriorityMedium() { ProcessDefinition processDefinition = createCustomerPriorityProcess(); ProcessInstance processInstance = new ProcessInstance(processDefinition); processInstance.getContextInstance().setVariable("customer", new Customer("MEDIUM")); processInstance.signal(); assertEquals("m", processInstance.getRootToken().getNode().getName()); } public void testCustomerPriorityHigh() { ProcessDefinition processDefinition = createCustomerPriorityProcess(); ProcessInstance processInstance = new ProcessInstance(processDefinition); processInstance.getContextInstance().setVariable("customer", new Customer("HIGH")); processInstance.signal(); assertEquals("h", processInstance.getRootToken().getNode().getName()); } public void testCustomerPriorityUndefined() { ProcessDefinition processDefinition = createCustomerPriorityProcess(); ProcessInstance processInstance = new ProcessInstance(processDefinition); processInstance.getContextInstance().setVariable("customer", new Customer("UNDEFINED")); processInstance.signal(); // 'Default' transition assertEquals("l", processInstance.getRootToken().getNode().getName()); } public void testCustomerPriorityNull() { ProcessDefinition processDefinition = createCustomerPriorityProcess(); ProcessInstance processInstance = new ProcessInstance(processDefinition); processInstance.getContextInstance().setVariable("customer", new Customer(null)); processInstance.signal(); // 'Default' transition assertEquals("l", processInstance.getRootToken().getNode().getName()); } }
If it is a new class then with copyright info
I think it should go in el.