[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