package org.jbpm.examples.businesstrip;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.db.AbstractDbTestCase;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.taskmgmt.exe.TaskInstance;
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
public class BusinessTripRequestTest extends AbstractDbTestCase {
protected void setUp() throws Exception {
super.setUp();
deployProcess();
}
void deployProcess() {
ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("businesstrip/processdefinition.xml");
deployProcessDefinition(processDefinition);
}
TaskInstance createNewProcessInstance() {
ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("business trip request");
return processInstance.getTaskMgmtInstance().createStartTaskInstance();
}
public void testTaskParameters() {
TaskInstance taskInstance = createNewProcessInstance();
assertEquals("Submit trip request", taskInstance.getName());
assertEquals(0, taskInstance.getVariables().size());
newTransaction();
}
public void testSubmitRaiseRequestTask() {
jbpmContext.setActorId("employee");
TaskInstance taskInstance = createNewProcessInstance();
Map taskVariables = new HashMap();
taskVariables.put("purpose", "Conference in MIT");
taskVariables.put("description", "Highlight the impact of ESB technologies");
taskVariables.put("allocated budget", "3000");
taskVariables.put("start date", "8/12/2009");
taskVariables.put("end date", "8/21/2009");
taskInstance.addVariables(taskVariables);
taskInstance.end();
newTransaction();
ProcessInstance processInstance = jbpmContext.loadProcessInstance(taskInstance.getProcessInstance()
.getId());
ContextInstance contextInstance = processInstance.getContextInstance();
assertEquals("Conference in MIT", contextInstance.getVariable("purpose"));
assertEquals("Highlight the impact of ESB technologies", contextInstance.getVariable("description"));
assertEquals("3000", contextInstance.getVariable("allocated budget"));
assertEquals("8/12/2009", contextInstance.getVariable("start date"));
assertEquals("8/21/2009", contextInstance.getVariable("end date"));
TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
assertEquals("employee", taskMgmtInstance.getSwimlaneInstance("employee").getActorId());
}
public void testRejectBusinessTripRequest() {
// Employee submits a business trip request
jbpmContext.setActorId("employee");
TaskInstance taskInstance = createNewProcessInstance();
Map taskVariables = new HashMap();
taskVariables.put("purpose", "Conference in MIT");
taskVariables.put("description", "Highlight the impact of ESB technologies");
taskVariables.put("allocated budget", "3000");
taskVariables.put("start date", "8/12/2009");
taskVariables.put("end date", "8/21/2009");
taskInstance.addVariables(taskVariables);
taskInstance.end();
// Manager rejects the raise request
newTransaction();
List managerTasksList = jbpmContext.getTaskList("manager");
assertEquals(1, managerTasksList.size());
TaskInstance managerTask = (TaskInstance) managerTasksList.get(0);
managerTask.addComment("Conference theme doesn't align with company's current focus");
managerTask.end("reject");
assertEquals("manager", managerTask.getActorId());
}
public void testAcceptBusinessTripRequest() {
// Employee submits a raise request
jbpmContext.setActorId("employee");
TaskInstance taskInstance = createNewProcessInstance();
Map taskVariables = new HashMap();
taskVariables.put("purpose", "Conference in MIT");
taskVariables.put("description", "Highlight the impact of ESB technologies");
taskVariables.put("allocated budget", "3000");
taskVariables.put("start date", "8/12/2009");
taskVariables.put("end date", "8/21/2009");
taskVariables.put("country", "USA");
taskVariables.put("city", "Kansas");
taskInstance.addVariables(taskVariables);
taskInstance.end();
// Manager rejects the raise request
newTransaction();
List managerTasksList = jbpmContext.getTaskList("manager");
assertEquals(1, managerTasksList.size());
TaskInstance managerTask = (TaskInstance) managerTasksList.get(0);
managerTask.addComment("Business trip approved");
managerTask.end("approve");
assertEquals("manager", managerTask.getActorId());
jbpmContext.save(managerTask);
newTransaction();
List accountantTasksList = jbpmContext.getTaskList("admin");
assertEquals(1, accountantTasksList.size());
TaskInstance accountantTask = (TaskInstance) accountantTasksList.get(0);
accountantTask.end();
jbpmContext.save(accountantTask);
}
}