[jbpm-commits] JBoss JBPM SVN: r6337 - jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu May 13 21:47:57 EDT 2010
Author: rebody
Date: 2010-05-13 21:47:57 -0400 (Thu, 13 May 2010)
New Revision: 6337
Added:
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/AssignmentHandlerTest.java
Log:
JBPM-2758 already fixed by Ronald in Revision 6100, just add a testcase to verify
Added: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/AssignmentHandlerTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/AssignmentHandlerTest.java (rev 0)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/AssignmentHandlerTest.java 2010-05-14 01:47:57 UTC (rev 6337)
@@ -0,0 +1,163 @@
+package org.jbpm.test.task;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jbpm.api.Configuration;
+import org.jbpm.api.ProcessEngine;
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.TaskService;
+import org.jbpm.api.model.OpenExecution;
+import org.jbpm.api.task.Assignable;
+import org.jbpm.api.task.AssignmentHandler;
+import org.jbpm.api.task.Participation;
+import org.jbpm.api.task.Task;
+import org.jbpm.test.JbpmTestCase;
+
+public class AssignmentHandlerTest extends JbpmTestCase {
+
+ /** Deployment id. */
+ String deploymentId;
+
+ /**
+ * Set up.
+ * @throws Exception exception
+ */
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // XML definition
+ StringBuilder jpdl = new StringBuilder();
+ jpdl.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+ jpdl.append("<process key=\"testProcess\" name=\"Test Process\" xmlns=\"http://jbpm.org/4.3/jpdl\">");
+ jpdl.append(" <start g=\"67,236,48,48\" name=\"start1\">");
+ jpdl.append(" <transition g=\"-43,-18\" name=\"to fork1\" to=\"fork1\"/>");
+ jpdl.append(" </start>");
+ jpdl.append(" <task g=\"255,144,92,52\" name=\"task1\" candidate-groups=\"firstGroup\">");
+ jpdl.append(" <assignment-handler class=\"org.jbpm.test.task.AssignmentHandlerTest$AutoAssignment\"/>");
+ jpdl.append(" <transition g=\"-41,-18\" name=\"to join1\" to=\"join1\"/>");
+ jpdl.append(" </task>");
+ jpdl.append(" <task g=\"258,334,92,52\" name=\"task2\" candidate-groups=\"secondGroup\">");
+ jpdl.append(" <assignment-handler class=\"org.jbpm.test.task.AssignmentHandlerTest$AutoAssignment\"/>");
+ jpdl.append(" <transition g=\"-41,-18\" name=\"to join1\" to=\"join1\"/>");
+ jpdl.append(" </task>");
+ jpdl.append(" <task g=\"515,228,92,52\" name=\"task3\" candidate-groups=\"thirdGroup\">");
+ jpdl.append(" <assignment-handler class=\"org.jbpm.test.task.AssignmentHandlerTest$AutoAssignment\"/>");
+ jpdl.append(" <transition g=\"-42,-18\" name=\"to end1\" to=\"end1\"/>");
+ jpdl.append(" </task>");
+ jpdl.append(" <end g=\"676,232,48,48\" name=\"end1\"/>");
+ jpdl.append(" <fork g=\"172,236,48,48\" name=\"fork1\">");
+ jpdl.append(" <transition g=\"-44,-18\" name=\"to task1\" to=\"task1\"/>");
+ jpdl.append(" <transition g=\"-44,-18\" name=\"to task2\" to=\"task2\"/>");
+ jpdl.append(" </fork>");
+ jpdl.append(" <join g=\"385,233,48,48\" name=\"join1\">");
+ jpdl.append(" <transition g=\"-44,-18\" name=\"to task3\" to=\"task3\"/>");
+ jpdl.append(" </join>");
+ jpdl.append("</process>");
+
+ // Deploys the process
+ deploymentId =
+ repositoryService.createDeployment().addResourceFromString("testProcess.jpdl.xml", jpdl.toString())
+ .deploy();
+ }
+
+ /**
+ * Tear down.
+ * @throws Exception exception
+ */
+ protected void tearDown() throws Exception {
+ repositoryService.deleteDeploymentCascade(deploymentId);
+ super.tearDown();
+ }
+
+ /**
+ * Tests the process.
+ */
+ public void testProcess() {
+
+ // Starts a new process instance and gets the instance id
+ ProcessInstance processInstance = executionService.startProcessInstanceByKey("testProcess");
+ String pid = processInstance.getId();
+
+ // Gets the tasks auto-assigned for the first user and completes the task
+ List < Task > taskList = taskService.findPersonalTasks("firstUser");
+ assertEquals(1, taskList.size());
+ Task task = taskList.get(0);
+ taskService.completeTask(task.getId());
+
+ // Gets the tasks auto-assigned for the second user and completes the task
+ taskList = taskService.findPersonalTasks("secondUser");
+ assertEquals(1, taskList.size());
+ task = taskList.get(0);
+ taskService.completeTask(task.getId());
+
+ // Gets the tasks auto-assigned for the second user and completes the task
+ taskList = taskService.findPersonalTasks("thirdUser");
+ assertEquals(1, taskList.size());
+ task = taskList.get(0);
+ taskService.completeTask(task.getId());
+
+ // Tries to load the instance and checks if it was finished
+ processInstance = executionService.findProcessInstanceById(pid);
+ assertNull(processInstance);
+ }
+
+ /**
+ * Auto assignment class.
+ */
+ public static class AutoAssignment implements AssignmentHandler {
+
+ /** Serial version ID. */
+ private static final long serialVersionUID = 9063679883107908899L;
+
+ /**
+ * Auto-claim the task to the default user.
+ * @param assignable assignable object
+ * @param execution execution object
+ * @throws Exception exception
+ */
+ public void assign(Assignable assignable, OpenExecution execution) throws Exception {
+
+ // Default users (group --> user mapping)
+ Map < String, String > defaultUsers = new HashMap < String, String >();
+ defaultUsers.put("firstGroup", "firstUser");
+ defaultUsers.put("secondGroup", "secondUser");
+ defaultUsers.put("thirdGroup", "thirdUser");
+
+ // Engine and task service
+ ProcessEngine processEngine = new Configuration().buildProcessEngine();
+ TaskService taskService = processEngine.getTaskService();
+
+ // Loads the active activities
+ Set < String > activities = execution.findActiveActivityNames();
+
+ // Iterates the activities
+ for (String activity : activities) {
+
+ // Loads the tasks according to the process instance and activity name
+ List < Task > tasks =
+ taskService.createTaskQuery().activityName(activity).processInstanceId(
+ execution.getProcessInstance().getId()).list();
+
+ // Iterates the tasks
+ for (Task task : tasks) {
+
+ // Compares the task name to the activity name
+ // If the task name matches the activity name, loads the candidate-group and assigns the default user
+ if (task.getName().equals(activity)) {
+
+ // Loads the tasks candidate groups (in our process we have just one group)
+ List < Participation > groups = taskService.getTaskParticipations(task.getId());
+
+ // If the groups collection is not empty, loads the default user and sets in the task
+ if (!groups.isEmpty()) {
+ assignable.setAssignee(defaultUsers.get(groups.get(0).getGroupId()));
+ }
+ }
+ }
+ }
+ }
+ }
+}
More information about the jbpm-commits
mailing list