package org.jbpm.examples.raise; 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 RaiseRequestTest extends AbstractDbTestCase { protected void setUp() throws Exception { super.setUp(); deployProcess(); } void deployProcess() { ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("raise/processdefinition.xml"); deployProcessDefinition(processDefinition); } TaskInstance createNewProcessInstance() { ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("raise request"); return processInstance.getTaskMgmtInstance().createStartTaskInstance(); } public void testTaskParameters() { TaskInstance taskInstance = createNewProcessInstance(); assertEquals("submit raise request", taskInstance.getName()); assertEquals(0, taskInstance.getVariables().size()); newTransaction(); } public void testSubmitRaiseRequestTask() { jbpmContext.setActorId("employee"); TaskInstance taskInstance = createNewProcessInstance(); Map taskVariables = new HashMap(); taskVariables.put("reason", "I need to buy a jet"); taskVariables.put("amount", "600"); taskInstance.addVariables(taskVariables); taskInstance.end(); newTransaction(); ProcessInstance processInstance = jbpmContext.loadProcessInstance(taskInstance.getProcessInstance() .getId()); ContextInstance contextInstance = processInstance.getContextInstance(); assertEquals("I need to buy a jet", contextInstance.getVariable("reason")); assertEquals("600", contextInstance.getVariable("amount")); TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance(); assertEquals("employee", taskMgmtInstance.getSwimlaneInstance("employee").getActorId()); } public void testManagerEvaluationReject() { TaskInstance taskInstance = createNewProcessInstance(); Map taskVariables = new HashMap(); taskVariables.put("reason", "I need to buy a jet"); taskVariables.put("amount", "600"); taskInstance.addVariables(taskVariables); taskInstance.end(); newTransaction(); List managerTasks = jbpmContext.getTaskList("manager"); assertEquals(1, managerTasks.size()); TaskInstance managerTask = (TaskInstance) managerTasks.get(0); managerTask.end("reject"); List foTasks = jbpmContext.getTaskList("fo"); assertEquals(0, foTasks.size()); } public void testManagerEvaluationAcceptFOReject() { TaskInstance taskInstance = createNewProcessInstance(); Map taskVariables = new HashMap(); taskVariables.put("reason", "I need to buy a jet"); taskVariables.put("amount", "600"); taskInstance.addVariables(taskVariables); taskInstance.end(); newTransaction(); List managerTasks = jbpmContext.getTaskList("manager"); assertEquals(1, managerTasks.size()); TaskInstance managerTask = (TaskInstance) managerTasks.get(0); managerTask.start(); managerTask.end("accept"); newTransaction(); List foTasks = jbpmContext.getTaskList("fo"); assertEquals(1, foTasks.size()); TaskInstance foTask = (TaskInstance) foTasks.get(0); foTask.start(); foTask.addComment("Justify two consecutive raises"); foTask.end("reject"); managerTasks = jbpmContext.getTaskList("manager"); assertEquals(0, managerTasks.size()); } public void testManagerEvaluationAcceptFOAccpet() { TaskInstance taskInstance = createNewProcessInstance(); Map taskVariables = new HashMap(); taskVariables.put("reason", "I need to buy a jet"); taskVariables.put("amount", "600"); taskInstance.addVariables(taskVariables); taskInstance.end(); newTransaction(); List managerTasks = jbpmContext.getTaskList("manager"); assertEquals(1, managerTasks.size()); TaskInstance managerTask = (TaskInstance) managerTasks.get(0); managerTask.start(); managerTask.end("accept"); newTransaction(); List foTasks = jbpmContext.getTaskList("fo"); assertEquals(1, foTasks.size()); TaskInstance foTask = (TaskInstance) foTasks.get(0); foTask.start(); foTask.addComment("Justify two consecutive raises"); foTask.end("accept"); newTransaction(); List accountantTasks = jbpmContext.getTaskList("accountant"); assertEquals(1, accountantTasks.size()); TaskInstance accountantTask = (TaskInstance) accountantTasks.get(0); accountantTask.start(); accountantTask.addComment("ERP updated"); accountantTask.end("terminate"); } public void testManagerEvaluationAcceptFOMultipleIterationsAccpet() { TaskInstance taskInstance = createNewProcessInstance(); Map taskVariables = new HashMap(); taskVariables.put("reason", "I need to buy a jet"); taskVariables.put("amount", "600"); taskInstance.addVariables(taskVariables); taskInstance.end(); newTransaction(); List managerTasks = jbpmContext.getTaskList("manager"); assertEquals(1, managerTasks.size()); TaskInstance managerTask = (TaskInstance) managerTasks.get(0); managerTask.start(); managerTask.end("accept"); newTransaction(); List foTasks = jbpmContext.getTaskList("fo"); assertEquals(1, foTasks.size()); TaskInstance foTask = (TaskInstance) foTasks.get(0); foTask.start(); foTask.addComment("Justify two consecutive raises"); foTask.end("more justification required"); newTransaction(); managerTasks = jbpmContext.getTaskList("manager"); assertEquals(1, managerTasks.size()); managerTask = (TaskInstance) managerTasks.get(0); managerTask.start(); managerTask.addComment("The guy exceeds all the expectations"); managerTask.end("accept"); newTransaction(); foTasks = jbpmContext.getTaskList("fo"); assertEquals(1, foTasks.size()); foTask = (TaskInstance) foTasks.get(0); foTask.start(); foTask.addComment("justification accepted"); foTask.end("accept"); newTransaction(); List accountantTasks = jbpmContext.getTaskList("accountant"); assertEquals(1, accountantTasks.size()); TaskInstance accountantTask = (TaskInstance) accountantTasks.get(0); accountantTask.start(); accountantTask.addComment("ERP updated"); accountantTask.end("terminate"); } }