[jbpm-commits] JBoss JBPM SVN: r4344 - in jbpm4/trunk/modules: api/src/main/java/org/jbpm/task and 10 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Mar 27 12:12:52 EDT 2009


Author: heiko.braun at jboss.com
Date: 2009-03-27 12:12:52 -0400 (Fri, 27 Mar 2009)
New Revision: 4344

Modified:
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskQuery.java
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskService.java
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/task/Participant.java
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/assignee/TaskAssigneeTest.java
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/assignmenthandler/TaskAssignmentHandlerTest.java
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/cancel/TaskCancelTest.java
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/candidates/TaskCandidatesTest.java
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/variables/TaskVariablesTest.java
   jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java
   jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/TaskManagementImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/TaskServiceImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskQueryImpl.java
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskCandidatesTest.java
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskListTest.java
Log:
Console integration: Reflect task participation model

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskQuery.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskQuery.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskQuery.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -47,7 +47,9 @@
 
   /** only find tasks for which the given user is a candidate */
   TaskQuery candidate(String userId);
-  
+
+  TaskQuery candidateGroups(List<String> groups);
+
   TaskQuery page(int firstResult, int maxResults);
   TaskQuery orderAsc(String property);
   TaskQuery orderDesc(String property);

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskService.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskService.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskService.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -47,11 +47,11 @@
   Task newTask();
 
   /** Creates a new subtask for the given task.
-   * Make sure that the super task is saved before the 
+   * Make sure that the parent task is saved before the 
    * {@link Task#getDbid() dbid} is taken.
    * The returned task will be transient.
    * Use {@link #saveTask(Task)} to persist the task. */
-  Task newTask(long superTaskDbid);
+  Task newTask(long parentTaskDbid);
 
   /** Saves the given task to persistent storage. 
    * @return the taskDbid */
@@ -65,7 +65,7 @@
   /** assigns this task to the given asignee. */
   void assignTask(long taskDbid, String assigneeUserId);
 
-  /** Deletes this task, marks the related history task as completed.   
+  /** Deletes this task, marks the related history task as completed.
    * If the task was created in the context 
    * of a process execution, this operation may result in a process instance 
    * being triggered. */
@@ -132,16 +132,22 @@
   /** create a new query for tasks */
   TaskQuery createTaskQuery();
 
-  /** retrieves the personal task of the given user, which might be different 
-   * then the current authenticated user.  E.g. when a manager wants to 
-   * look at a subordinate's task list. */
-  List<Task> getPersonalTaskList(String userId, int firstResult, int maxResults);
+  /**
+   * retrieves a list of tasks assigned to a particular user
+   */
+  List<Task> getAssigneeTaskList(String userId, int firstResult, int maxResults);
 
-  /** retrieves the group task of the given user.
-   * The user id will be resolved to a set of candidate identities
-   * by the identity spi. */
-  List<Task> getGroupTaskList(String userId, int firstResult, int maxResults);
+  /**
+   * retrieves a list of unassigned tasks for a candidate user.
+   * */
+  List<Task> getUserTaskList(String userId, int firstResult, int maxResults);
 
+  /**
+   * retrieves a list of unassigned tasks for
+   * a candidate group or a list of candidate groups.
+   */
+  List<Task> getGroupTaskList(List<String> groupIds, int firstResult, int maxResults);
+
   /** get the subtasks for this task.  Only goes one level deep at a time. */
   List<Task> getSubTasks(long taskDbid);
 

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/task/Participant.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/task/Participant.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/task/Participant.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -53,6 +53,6 @@
 
   IdentityRef getIdentityRef();
   
-  /** see contants for default participations */
+  /** see constants for default participations */
   String getParticipation();
 }

Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/assignee/TaskAssigneeTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/assignee/TaskAssigneeTest.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/assignee/TaskAssigneeTest.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -43,7 +43,7 @@
     Execution execution = executionService.startProcessInstanceByKey("TaskAssignee", variables);
     String executionId = execution.getId();
     
-    List<Task> taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    List<Task> taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(1, taskList.size());
     Task task = taskList.get(0);
     assertEquals("review", task.getName());
@@ -53,7 +53,7 @@
     taskService.completeTask(task.getDbid());
     
     // verify that the task list is now empty
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(0, taskList.size());
 
     // verify that process moved to the next state

Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/assignmenthandler/TaskAssignmentHandlerTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/assignmenthandler/TaskAssignmentHandlerTest.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/assignmenthandler/TaskAssignmentHandlerTest.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -36,7 +36,7 @@
     
     executionService.startProcessInstanceByKey("TaskAssignmentHandler");
     
-    List<Task> taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    List<Task> taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(1, taskList.size());
     Task task = taskList.get(0);
     assertEquals("review", task.getName());

Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/cancel/TaskCancelTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/cancel/TaskCancelTest.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/cancel/TaskCancelTest.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -21,14 +21,6 @@
  */
 package org.jbpm.examples.task.cancel;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.jbpm.Execution;
-import org.jbpm.examples.task.assignee.Order;
-import org.jbpm.history.HistoryActivityInstance;
-import org.jbpm.task.Task;
 import org.jbpm.test.JbpmTestCase;
 
 
@@ -44,7 +36,7 @@
     Execution execution = executionService.startProcessInstanceByKey("TaskCancel");
     String executionId = execution.getId();
     
-    Task task = taskService.getPersonalTaskList("johndoe",0,1).get(0);
+    Task task = taskService.getAssigneeTaskList("johndoe",0,1).get(0);
     
     executionService.signalExecutionById(executionId);
     
@@ -67,7 +59,7 @@
     taskService.submitTask(task.getDbid());
     
     // verify that the task list is now empty
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(0, taskList.size());
 
     // verify that process moved to the next state

Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/candidates/TaskCandidatesTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/candidates/TaskCandidatesTest.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/candidates/TaskCandidatesTest.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -22,6 +22,7 @@
 package org.jbpm.examples.task.candidates;
 
 import java.util.List;
+import java.util.ArrayList;
 
 import org.jbpm.Execution;
 import org.jbpm.task.Task;
@@ -48,13 +49,16 @@
     
     Execution execution = executionService.startProcessInstanceByKey("TaskCandidates");
     String executionId = execution.getId();
-    
-    List<Task> taskList = taskService.getGroupTaskList("johndoe", 0, 10);
+
+    List<String> groupIds = new ArrayList<String>();
+    groupIds.add(salesGroupId);
+
+    List<Task> taskList = taskService.getGroupTaskList(groupIds, 0, 10);
     assertEquals("Expected a single task being created", 1, taskList.size());
     Task task = taskList.get(0);
     assertEquals("review", task.getName());
 
-    taskList = taskService.getGroupTaskList("joesmoe", 0, 10);
+    taskList = taskService.getGroupTaskList(groupIds, 0, 10);
     assertEquals("Expected a single task being created", 1, taskList.size());
     task = taskList.get(0);
     assertEquals("review", task.getName());
@@ -63,13 +67,13 @@
     taskService.assignTask(task.getDbid(), "johndoe");
     
     // verify that the group task lists are now empty
-    taskList = taskService.getGroupTaskList("johndoe", 0, 10);
+    taskList = taskService.getGroupTaskList(groupIds, 0, 10);
     assertEquals("Expected a no task to remain", 0, taskList.size());
-    taskList = taskService.getGroupTaskList("joesmoe", 0, 10);
+    taskList = taskService.getGroupTaskList(groupIds, 0, 10);
     assertEquals("Expected a no task to remain",0, taskList.size());
 
     // verify that the task now shows up in the personal task list for johndoe
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(1, taskList.size());
     task = taskList.get(0);
     assertEquals("review", task.getName());
@@ -79,11 +83,12 @@
     taskService.completeTask(task.getDbid());
     
     // verify that the task list is now empty
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(0, taskList.size());
 
     // verify that process moved to the next state
     execution = executionService.findExecution(executionId);
     assertEquals("wait", execution.getActivityName());
   }
+
 }

Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -22,6 +22,7 @@
 package org.jbpm.examples.task.swimlane;
 
 import java.util.List;
+import java.util.ArrayList;
 
 import org.jbpm.task.Task;
 import org.jbpm.test.JbpmTestCase;
@@ -42,15 +43,18 @@
     deployJpdlResource("org/jbpm/examples/task/swimlane/process.jpdl.xml");
     
     executionService.startProcessInstanceByKey("TaskSwimlane");
-    
-    List<Task> taskList = taskService.getGroupTaskList("johndoe", 0, 10);
+
+    List<String> groupIds = new ArrayList<String>();
+    groupIds.add(salesGroupId);
+
+    List<Task> taskList = taskService.getGroupTaskList(groupIds, 0, 10);
     assertEquals(1, taskList.size());
     Task task = taskList.get(0);
     long taskDbid = task.getDbid();
     assertEquals("enter order data", task.getName());
     assertNull(task.getAssignee());
 
-    assertEquals(0, taskService.getPersonalTaskList("johndoe", 0, 10).size());
+    assertEquals(0, taskService.getAssigneeTaskList("johndoe", 0, 10).size());
 
     // lets assume that johndoe takes the task
     taskService.assignTask(taskDbid, "johndoe");
@@ -61,10 +65,10 @@
     // to know the context of this case
     
     // we'll check that the group task lists for johndoe and joesmoe are empty
-    assertEquals(0, taskService.getGroupTaskList("johndoe", 0, 10).size());
+    assertEquals(0, taskService.getGroupTaskList(groupIds, 0, 10).size());
 
     // and that the task is directly assigned to johndoe
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(1, taskList.size());
     task = taskList.get(0);
     assertEquals("enter order data", task.getName());
@@ -73,7 +77,7 @@
     // submit the task
     taskService.completeTask(taskDbid);
 
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(1, taskList.size());
     task = taskList.get(0);
     assertEquals("calculate quote", task.getName());

Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/variables/TaskVariablesTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/variables/TaskVariablesTest.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/variables/TaskVariablesTest.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -45,7 +45,8 @@
     variables.put("dollars", 100000);
     Execution execution = executionService.startProcessInstanceByKey("TaskVariables", variables);
 
-    List<Task> taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    List<Task> taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
+    assertFalse("Task list for assignee was empty", taskList.isEmpty());
     Task task = taskList.get(0);
     long taskDbid = task.getDbid();
 

Modified: jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java
===================================================================
--- jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -24,12 +24,13 @@
 import org.jboss.bpm.console.client.model.ProcessDefinitionRef;
 import org.jboss.bpm.console.client.model.ProcessInstanceRef;
 import org.jboss.bpm.console.client.model.TaskRef;
+import org.jboss.bpm.console.client.model.ParticipantRef;
 import org.jboss.bpm.console.client.model.jbpm3.TokenReference;
 
 import org.jbpm.model.OpenExecution;
 import org.jbpm.model.OpenProcessDefinition;
 import org.jbpm.model.Transition;
-import org.jbpm.task.Task;
+import org.jbpm.task.*;
 import org.jbpm.pvm.internal.task.TaskImpl;
 import org.jbpm.pvm.internal.model.ExecutionImpl;
 
@@ -91,6 +92,7 @@
     tok.setId(topLevelExecution.getId());
     tok.setCurrentNodeName( topLevelExecution.getActivityName() );    
 
+    // transitions
     List<String> availableSignals = new ArrayList<String>();
     for(Transition t : topLevelExecution.getActivity().getOutgoingTransitions())
     {
@@ -106,10 +108,8 @@
     TaskRef task = new TaskRef();
     task.setId( t0.getDbid() );
     task.setName( t0.getName());
-    task.setActor( t0.getAssignee() );
+    task.setAssignee( t0.getAssignee() );
 
-
-    // TODO: verify usage
     TaskImpl cast = ((TaskImpl) t0);
     task.setSignalling( cast.isSignalling());
 
@@ -118,7 +118,37 @@
 
     // TODO: weird API
     task.setProcessId( execution.getProcessInstance().getProcessInstance().getId() );
-    
+
+
+    // participants
+    for(Participant p0 : cast.getParticipants())
+    {
+      if(p0.getParticipation().equals(Participant.CANDIDATE))
+      {
+        IdentityRef idRef = p0.getIdentityRef();
+        ParticipantRef participant = new ParticipantRef("candidate", idRef.getId());
+
+        if(idRef instanceof GroupRef)
+        {
+          task.getParticipantGroups().add(participant);
+        }
+        else if(idRef instanceof UserRef)
+        {
+          participant.setGroup(true);
+          task.getParticipantUsers().add(participant);
+        }
+        else
+        {
+          throw new IllegalArgumentException("Unknown IdentityRef: " + idRef);
+        }
+      }
+      else
+      {
+        throw new IllegalArgumentException("Unknown participation type: " +p0.getParticipation());        
+      }
+
+    }
+
     return task;
   }
 }

Modified: jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/TaskManagementImpl.java
===================================================================
--- jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/TaskManagementImpl.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/TaskManagementImpl.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -24,8 +24,9 @@
 import org.jboss.bpm.console.server.integration.TaskManagement;
 import org.jboss.bpm.console.client.model.TaskRef;
 import org.jbpm.TaskService;
-import org.jbpm.pvm.internal.env.Authentication;
-import org.jbpm.task.Task;
+import org.jbpm.IdentityService;
+import org.jbpm.identity.Group;
+import org.jbpm.task.*;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -35,20 +36,61 @@
  */
 public class TaskManagementImpl extends JBPMIntegration implements TaskManagement
 {
-  public List<TaskRef> getTasksByActor(String actorName)
+  public List<TaskRef> getTasksForIdentity(String idRef)
   {
+    return internalGetTaskForIdentity(idRef, null);
+  }
+
+  public List<TaskRef> getTasksForIdentity(String idRef, String participationType)
+  {
+    return internalGetTaskForIdentity(idRef, participationType);
+  }
+
+  private List<TaskRef> internalGetTaskForIdentity(String idRef, String participationType)
+  {
     TaskService taskService = this.processEngine.get(TaskService.class);
+    List<TaskRef> results = new ArrayList<TaskRef>();
 
-    // TODO: Paging
-    List<Task> tasks = taskService.getPersonalTaskList(actorName, 0 , 100);
-    List<TaskRef> actualTasks = new ArrayList<TaskRef>();
+    if(null==participationType || participationType.equals(Participant.CANDIDATE))
+    {
+      // TODO: Paging
+      List<Task> assignedTasks = taskService.getAssigneeTaskList(idRef, 0 , 100);
+      List<Task> userTasks = taskService.getUserTaskList(idRef, 0 , 100);
+      List<Task> groupTasks = taskService.getGroupTaskList(getGroupIdsForIdentityRef(idRef), 0 , 100);
+
+      adoptTasks(assignedTasks, results);
+      adoptTasks(userTasks, results);
+      adoptTasks(groupTasks, results);
+    }
+    else
+    {
+      throw new IllegalArgumentException("Unknown participation type: " +participationType);
+    }
+
+    return results;
+  }
+
+  private void adoptTasks(List<Task> tasks, List<TaskRef> results)
+  {
     for(Task t0 : tasks)
     {
-      actualTasks.add( ModelAdaptor.adoptTask(t0) );
+      results.add( ModelAdaptor.adoptTask(t0) );
     }
-    return actualTasks;
   }
 
+  private List<String> getGroupIdsForIdentityRef(String idRef)
+  {
+    IdentityService idService = this.processEngine.get(IdentityService.class);
+    List<Group> groups = idService.findGroupsByUser(idRef);
+    List<String> groupIds = new ArrayList<String>();
+    for(Group g : groups)
+    {
+      groupIds.add(g.getId());
+    }
+
+    return groupIds;
+  }
+
   public TaskRef getTaskById(long taskId)
   {
     TaskService taskService = this.processEngine.get(TaskService.class);
@@ -56,17 +98,29 @@
     return ModelAdaptor.adoptTask(t0);
   }
 
-  public void reassignTask(long taskId, String actorId)
+  public void assignTask(long taskId, String idRef)
   {
     TaskService taskService = this.processEngine.get(TaskService.class);
+    taskService.assignTask(taskId, idRef);
+  }
 
-    taskService.assignTask(taskId, actorId);
+  public void releaseTask(long taskId)
+  {
+    TaskService taskService = this.processEngine.get(TaskService.class);
+    taskService.assignTask(taskId, null);
   }
 
-  public void closeTask(long taskId, String signalName)
+  public void completeTask(long taskId, String outcome)
   {
     TaskService taskService = this.processEngine.get(TaskService.class);
-    // TODO. Signaling?
+    taskService.completeTask(taskId, outcome);
+  }
+
+
+  public void completeTask(long taskId)
+  {
+    TaskService taskService = this.processEngine.get(TaskService.class);
     taskService.completeTask(taskId);
   }
+
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/TaskServiceImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/TaskServiceImpl.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/TaskServiceImpl.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -29,23 +29,7 @@
 import org.jbpm.TaskQuery;
 import org.jbpm.TaskService;
 import org.jbpm.model.Comment;
-import org.jbpm.pvm.internal.cmd.AddParticipantCmd;
-import org.jbpm.pvm.internal.cmd.AddReplyCommentCmd;
-import org.jbpm.pvm.internal.cmd.AddTaskCommentCmd;
-import org.jbpm.pvm.internal.cmd.CancelTaskCmd;
-import org.jbpm.pvm.internal.cmd.CompleteTaskCmd;
-import org.jbpm.pvm.internal.cmd.DeleteCommentCmd;
-import org.jbpm.pvm.internal.cmd.GetParticipantsCmd;
-import org.jbpm.pvm.internal.cmd.GetSubTasksCmd;
-import org.jbpm.pvm.internal.cmd.GetTaskCmd;
-import org.jbpm.pvm.internal.cmd.GetTaskCommentsCmd;
-import org.jbpm.pvm.internal.cmd.GetVariableNamesCmd;
-import org.jbpm.pvm.internal.cmd.GetVariablesCmd;
-import org.jbpm.pvm.internal.cmd.NewTaskCmd;
-import org.jbpm.pvm.internal.cmd.RemoveParticipantCmd;
-import org.jbpm.pvm.internal.cmd.SaveTaskCmd;
-import org.jbpm.pvm.internal.cmd.SetVariablesCmd;
-import org.jbpm.pvm.internal.cmd.AssignTaskCmd;
+import org.jbpm.pvm.internal.cmd.*;
 import org.jbpm.pvm.internal.task.TaskImpl;
 import org.jbpm.pvm.internal.task.TaskQueryImpl;
 import org.jbpm.task.IdentityRef;
@@ -107,31 +91,32 @@
     commandService.execute(cmd);
   }
 
-  public void addSwimlaneParticipant(long szimlaneDbid, IdentityRef identityRef, String participation) {
-    AddParticipantCmd cmd = new AddParticipantCmd(null, szimlaneDbid, identityRef, participation);
+  public void addSwimlaneParticipant(long swimlaneDbid, IdentityRef identityRef, String participation) {
+    AddParticipantCmd cmd = new AddParticipantCmd(null, swimlaneDbid, identityRef, participation);
     commandService.execute(cmd);
   }
 
-  public List<Participant> getSwimlaneParticipants(long szimlaneDbid) {
-    GetParticipantsCmd cmd = new GetParticipantsCmd(null, szimlaneDbid);
+  public List<Participant> getSwimlaneParticipants(long swimlaneDbid) {
+    GetParticipantsCmd cmd = new GetParticipantsCmd(null, swimlaneDbid);
     return commandService.execute(cmd);
   }
 
-  public void removeSwimlaneParticipant(long szimlaneDbid, IdentityRef identityRef, String participation) {
-    RemoveParticipantCmd cmd = new RemoveParticipantCmd(null, szimlaneDbid, identityRef, participation);
+  public void removeSwimlaneParticipant(long swimlaneDbid, IdentityRef identityRef, String participation) {
+    RemoveParticipantCmd cmd = new RemoveParticipantCmd(null, swimlaneDbid, identityRef, participation);
     commandService.execute(cmd);
   }
 
-  public List<Task> getPersonalTaskList(String userId, int firstResult, int maxResults) {
+  public List<Task> getAssigneeTaskList(String identityRefId, int firstResult, int maxResults) {
     return createTaskQuery()
-      .assignee(userId)
+      .assignee(identityRefId)
       .orderDesc(TaskQuery.PROPERTY_PRIORITY)
       .page(firstResult, maxResults)
       .execute();
   }
 
-  public List<Task> getGroupTaskList(String userId, int firstResult, int maxResults) {
-    return createTaskQuery()
+  public List<Task> getUserTaskList(String userId, int firstResult, int maxResults)
+  {
+     return createTaskQuery()
       .unassigned()
       .candidate(userId)
       .orderDesc(TaskQuery.PROPERTY_PRIORITY)
@@ -139,6 +124,15 @@
       .execute();
   }
 
+  public List<Task> getGroupTaskList(List<String> groupIds, int firstResult, int maxResults) {
+    return createTaskQuery()
+      .unassigned()
+      .candidateGroups(groupIds)
+      .orderDesc(TaskQuery.PROPERTY_PRIORITY)
+      .page(firstResult, maxResults)
+      .execute();
+  }
+
   public TaskQuery createTaskQuery() {
     return new TaskQueryImpl(commandService);
   }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -72,6 +72,7 @@
   protected String description;
 
   protected String assignee;
+  protected String nomination;
   protected Set<ParticipantImpl> participants;
 
   protected Date create;
@@ -126,7 +127,8 @@
   }
 
   // participants /////////////////////////////////////////////////////////////
-  
+
+  // TODO: Why does it return the impl. not the interface?
   public Set<ParticipantImpl> getParticipants() {
     if (participants==null) {
       return Collections.emptySet();
@@ -471,4 +473,5 @@
   public void setTaskDefinition(TaskDefinitionImpl taskDefinition) {
     this.taskDefinition = taskDefinition;
   }
+
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskQueryImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskQueryImpl.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskQueryImpl.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -21,48 +21,53 @@
  */
 package org.jbpm.pvm.internal.task;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.hibernate.Query;
 import org.jbpm.TaskQuery;
 import org.jbpm.cmd.CommandService;
-import org.jbpm.env.Environment;
-import org.jbpm.identity.Group;
-import org.jbpm.pvm.internal.identity.spi.IdentitySession;
 import org.jbpm.pvm.internal.query.AbstractQuery;
 import org.jbpm.pvm.internal.query.Page;
 import org.jbpm.task.Task;
 
+import java.util.List;
 
+
 /**
  * @author Tom Baeyens
  */
 public class TaskQueryImpl extends AbstractQuery implements TaskQuery {
-  
+
   private static final long serialVersionUID = 1L;
 
   private static final String UNASSIGNED = "unassigned";
 
   protected String assignee = null;
   protected String candidate = null;
-  
+
   protected List<String> groupIds = null;
 
   public TaskQueryImpl(CommandService commandService) {
     super(commandService);
   }
-  
+
   public TaskQuery assignee(String assignee) {
     this.assignee = assignee;
     return this;
   }
-  
+
   public TaskQuery candidate(String userId) {
     this.candidate = userId;
     return this;
   }
 
+  public TaskQuery candidateGroups(List<String> groups)
+  {
+    if(candidate!=null)
+      throw new IllegalArgumentException("Illegal query: Can either select by candiate or candidateGroup, not both");
+
+    this.groupIds = groups;
+    return this;
+  }
+
   public TaskQuery unassigned() {
     this.assignee = UNASSIGNED;
     return this;
@@ -92,6 +97,11 @@
       query.setString("assignee", assignee);
     }
 
+    if(candidate!=null)
+    {
+      query.setString("candidate", candidate);
+    }
+
     if (groupIds!=null) {
       query.setParameterList("groupIds", groupIds);
     }
@@ -103,32 +113,32 @@
     hql.append("from ");
     hql.append(TaskImpl.class.getName());
     hql.append(" as task ");
-    
-    if (candidate!=null) {
+
+    // participants
+    if(candidate!=null || groupIds!=null)
+    {
       hql.append(", ");
       hql.append(ParticipantImpl.class.getName());
       hql.append(" as participant ");
-      
+
       appendWhereClause("participant.task = task ", hql);
       appendWhereClause("participant.participation = 'candidate' ", hql);
-      
-      IdentitySession identitySession = Environment.getFromCurrent(IdentitySession.class);
-      List<Group> groups = identitySession.findGroupsByUser(candidate);
-      if (!groups.isEmpty()) {
-        groupIds = new ArrayList<String>();
-        for (Group g: groups) {
-          groupIds.add(g.getId());
-        }
-        appendWhereClause("(participant.userId = '"+candidate+"' or participant.groupId in (:groupIds) ) ", hql);
+
+      if(candidate!=null)
+      {
+        appendWhereClause("(participant.userId = :candidate)", hql);
       }
+      else if (groupIds!=null && !groupIds.isEmpty()) {
+        appendWhereClause("(participant.groupId in (:groupIds) ) ", hql);
+      }
     }
-    
+
     if (assignee==UNASSIGNED) {
       appendWhereClause("task.assignee is null ", hql);
     } else if (assignee!=null) {
       appendWhereClause("task.assignee = :assignee ", hql);
     }
-    
+
     appendOrderByClause(hql);
 
     return hql.toString();

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskCandidatesTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskCandidatesTest.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskCandidatesTest.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -52,12 +52,12 @@
     Execution execution = executionService.startProcessInstanceByKey("TaskCandidates");
     String executionId = execution.getId();
     
-    List<Task> taskList = taskService.getGroupTaskList("johndoe", 0, 10);
+    List<Task> taskList = taskService.getUserTaskList("johndoe", 0, 10);
     assertEquals(1, taskList.size());
     Task task = taskList.get(0);
     assertEquals("review", task.getName());
 
-    taskList = taskService.getGroupTaskList("joesmoe", 0, 10);
+    taskList = taskService.getUserTaskList("joesmoe", 0, 10);
     assertEquals(1, taskList.size());
     task = taskList.get(0);
     assertEquals("review", task.getName());
@@ -66,13 +66,13 @@
     taskService.assignTask(task.getDbid(), "johndoe");
     
     // verify that the group task lists are now empty
-    taskList = taskService.getGroupTaskList("johndoe", 0, 10);
+    taskList = taskService.getUserTaskList("johndoe", 0, 10);
     assertEquals(0, taskList.size());
-    taskList = taskService.getGroupTaskList("joesmoe", 0, 10);
+    taskList = taskService.getUserTaskList("joesmoe", 0, 10);
     assertEquals(0, taskList.size());
 
     // verify that the task now shows up in the personal task list for johndoe
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(1, taskList.size());
     task = taskList.get(0);
     assertEquals("review", task.getName());
@@ -82,7 +82,7 @@
     taskService.completeTask(task.getDbid());
     
     // verify that the task list is now empty
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(0, taskList.size());
 
     // verify that process moved to the next state
@@ -110,12 +110,12 @@
     Execution execution = executionService.startProcessInstanceByKey("TaskCandidates", variables);
     String executionId = execution.getId();
     
-    List<Task> taskList = taskService.getGroupTaskList("johndoe", 0, 10);
+    List<Task> taskList = taskService.getUserTaskList("johndoe", 0, 10);
     assertEquals(1, taskList.size());
     Task task = taskList.get(0);
     assertEquals("review", task.getName());
 
-    taskList = taskService.getGroupTaskList("joesmoe", 0, 10);
+    taskList = taskService.getUserTaskList("joesmoe", 0, 10);
     assertEquals(1, taskList.size());
     task = taskList.get(0);
     assertEquals("review", task.getName());
@@ -124,13 +124,13 @@
     taskService.assignTask(task.getDbid(), "johndoe");
     
     // verify that the group task lists are now empty
-    taskList = taskService.getGroupTaskList("johndoe", 0, 10);
+    taskList = taskService.getUserTaskList("johndoe", 0, 10);
     assertEquals(0, taskList.size());
-    taskList = taskService.getGroupTaskList("joesmoe", 0, 10);
+    taskList = taskService.getUserTaskList("joesmoe", 0, 10);
     assertEquals(0, taskList.size());
 
     // verify that the task now shows up in the personal task list for johndoe
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(1, taskList.size());
     task = taskList.get(0);
     assertEquals("review", task.getName());
@@ -140,7 +140,7 @@
     taskService.completeTask(task.getDbid());
     
     // verify that the task list is now empty
-    taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertEquals(0, taskList.size());
 
     // verify that process moved to the next state

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskListTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskListTest.java	2009-03-27 16:11:26 UTC (rev 4343)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskListTest.java	2009-03-27 16:12:52 UTC (rev 4344)
@@ -53,13 +53,13 @@
     task.setAssignee("joesmoe");
     saveAndRegisterTask(task);
 
-    List<Task> taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    List<Task> taskList = taskService.getAssigneeTaskList("johndoe", 0, 10);
     assertNotNull(taskList);
     
     assertEquals("do laundry", taskList.get(0).getName());
     assertEquals(1, taskList.size());
 
-    taskList = taskService.getPersonalTaskList("joesmoe", 0, 10);
+    taskList = taskService.getAssigneeTaskList("joesmoe", 0, 10);
     assertNotNull(taskList);
     
     assertContainsTask(taskList, "get good idea");
@@ -100,7 +100,7 @@
     task.setPriority(10);
     saveAndRegisterTask(task);
 
-    List<Task> taskList = taskService.getPersonalTaskList("joesmoe", 0, 10);
+    List<Task> taskList = taskService.getAssigneeTaskList("joesmoe", 0, 10);
     assertNotNull(taskList);
     
     // default sort order is based on the priority




More information about the jbpm-commits mailing list