[jboss-svn-commits] JBL Code SVN: r25000 - in labs/jbossrules/trunk/drools-process/drools-process-task/src: main/java/org/drools/task/service and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jan 29 09:43:32 EST 2009


Author: salaboy21
Date: 2009-01-29 09:43:31 -0500 (Thu, 29 Jan 2009)
New Revision: 25000

Modified:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java
Log:
JBRULES-1883: support for groups in assignments and queries in tasks
- Adding the support for groups, this should be replaced when an identity component is used

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java	2009-01-29 14:38:40 UTC (rev 24999)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java	2009-01-29 14:43:31 UTC (rev 25000)
@@ -21,6 +21,7 @@
 import org.drools.runtime.process.WorkItemManager;
 import org.drools.task.AccessType;
 import org.drools.task.Content;
+import org.drools.task.Group;
 import org.drools.task.I18NText;
 import org.drools.task.OnParentAbortAllSubTasksEndStrategy;
 import org.drools.task.OrganizationalEntity;
@@ -115,10 +116,12 @@
             task.setSubTaskStrategies(strategies);
         }
 
-		String actorId = (String) workItem.getParameter("ActorId");
+        PeopleAssignments assignments = new PeopleAssignments();
+		List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>();
+
+        String actorId = (String) workItem.getParameter("ActorId");
 		if (actorId != null) {
-			PeopleAssignments assignments = new PeopleAssignments();
-			List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>();
+			
 			String[] actorIds = actorId.split(",");
 			for (String id: actorIds) {
 				User user = new User();
@@ -129,14 +132,24 @@
             if (potentialOwners.size() > 0){
                 taskData.setCreatedBy((User)potentialOwners.get(0));
             }
+        }
+        String groupId = (String) workItem.getParameter("GroupId");
+		if (groupId != null) {
+			
+			String[] groupIds = groupId.split(",");
+			for (String id: groupIds) {
 
-			assignments.setPotentialOwners(potentialOwners);
-			List<OrganizationalEntity> businessAdministrators = new ArrayList<OrganizationalEntity>();
-			businessAdministrators.add(new User("Administrator"));
-			assignments.setBusinessAdministrators(businessAdministrators);
-			task.setPeopleAssignments(assignments);
+				potentialOwners.add(new Group(id));
+			}
+			
 		}
 
+        assignments.setPotentialOwners(potentialOwners);
+		List<OrganizationalEntity> businessAdministrators = new ArrayList<OrganizationalEntity>();
+		businessAdministrators.add(new User("Administrator"));
+		assignments.setBusinessAdministrators(businessAdministrators);
+		task.setPeopleAssignments(assignments);
+        
 		task.setTaskData(taskData);
 
 		ContentData content = null;

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java	2009-01-29 14:38:40 UTC (rev 24999)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java	2009-01-29 14:43:31 UTC (rev 25000)
@@ -63,6 +63,8 @@
     QueryTasksAssignedAsBusinessAdministrator,
     QueryTasksAssignedAsExcludedOwner,
     QueryTasksAssignedAsPotentialOwner,
+    QueryTasksAssignedAsPotentialOwnerWithGroup,
+    QueryTasksAssignedAsPotentialOwnerByGroup,
     QuerySubTasksAssignedAsPotentialOwner,
     QueryGetSubTasksByParentTaskId,
     QueryTasksAssignedAsRecipient,

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2009-01-29 14:38:40 UTC (rev 24999)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2009-01-29 14:43:31 UTC (rev 25000)
@@ -408,8 +408,21 @@
                                     responseHandler );
         session.write( cmd );
     }
-
-
+     public void getTasksAssignedAsPotentialOwner(String userId, String groupId,
+                                                 String language,
+                                                 TaskSummaryResponseHandler responseHandler) {
+        List<Object> args = new ArrayList<Object>( 2 );
+        args.add( userId );
+        args.add( groupId );
+        args.add( language );
+        Command cmd = new Command( counter.getAndIncrement(),
+                                   CommandName.QueryTasksAssignedAsPotentialOwnerWithGroup,
+                                   args );
+        handler.addResponseHandler( cmd.getId(),
+                                    responseHandler );
+        session.write( cmd );
+    }
+    
     public void getSubTasksAssignedAsPotentialOwner(long parentId, String userId,
                                                  String language,
                                                  TaskSummaryResponseHandler responseHandler) {

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2009-01-29 14:38:40 UTC (rev 24999)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2009-01-29 14:43:31 UTC (rev 25000)
@@ -227,6 +227,31 @@
                     session.write( resultsCmnd );
                     break;
                 }
+                case QueryTasksAssignedAsPotentialOwnerWithGroup : {
+                    response = CommandName.QueryTaskSummaryResponse;
+                    List<TaskSummary> results = taskSession.getTasksAssignedAsPotentialOwner( (String) cmd.getArguments().get( 0 ),
+                                                                                              (String) cmd.getArguments().get( 1 ),
+                                                                                              (String) cmd.getArguments().get( 2 ));
+                    List args = new ArrayList( 1 );
+                    args.add( results );
+                    Command resultsCmnd = new Command( cmd.getId(),
+                                                       CommandName.QueryTaskSummaryResponse,
+                                                       args );
+                    session.write( resultsCmnd );
+                    break;
+                }
+                case QueryTasksAssignedAsPotentialOwnerByGroup : {
+                    response = CommandName.QueryTaskSummaryResponse;
+                    List<TaskSummary> results = taskSession.getTasksAssignedAsPotentialOwnerByGroup((String) cmd.getArguments().get( 0 ),
+                                                                                              (String) cmd.getArguments().get( 1 ) );
+                    List args = new ArrayList( 1 );
+                    args.add( results );
+                    Command resultsCmnd = new Command( cmd.getId(),
+                                                       CommandName.QueryTaskSummaryResponse,
+                                                       args );
+                    session.write( resultsCmnd );
+                    break;
+                }
                 case QuerySubTasksAssignedAsPotentialOwner : {
                     response = CommandName.QueryTaskSummaryResponse;
                     List<TaskSummary> results = taskSession.getSubTasksAssignedAsPotentialOwner( (Long) cmd.getArguments().get( 0 ),

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java	2009-01-29 14:38:40 UTC (rev 24999)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java	2009-01-29 14:43:31 UTC (rev 25000)
@@ -117,8 +117,17 @@
             List<OrganizationalEntity> potentialOwners = task.getPeopleAssignments().getPotentialOwners();
             if ( potentialOwners.size() == 1 ) {
                 // if there is a single potential owner, assign and set status to Reserved
+                OrganizationalEntity potentialOwner = potentialOwners.get( 0 );
+                // if there is a single potential user owner, assign and set status to Reserved
+                if(potentialOwner instanceof User){
                 taskData.setActualOwner( (User) potentialOwners.get( 0 ) );
                 taskData.setStatus( Status.Reserved );
+                }
+                //If there is a group set as potentialOwners, set the status to Ready ??
+                if(potentialOwner instanceof Group){
+
+                    taskData.setStatus( Status.Ready );
+                }
             } else if ( potentialOwners.size() > 1 ) {
                 // multiple potential owners, so set to Ready so one can claim.
                 taskData.setStatus( Status.Ready );
@@ -626,6 +635,21 @@
         List<TaskSummary> list = (List<TaskSummary>) tasksAssignedAsPotentialOwner.getResultList();
         return list;
     }
+     public List<TaskSummary> getTasksAssignedAsPotentialOwner(String userId, String groupId,
+                                                              String language) {
+        Query tasksAssignedAsPotentialOwner = em.createNamedQuery( "TasksAssignedAsPotentialOwnerWithGroup" );
+        tasksAssignedAsPotentialOwner.setParameter( "userId",
+                                                    userId );
+        tasksAssignedAsPotentialOwner.setParameter( "groupId",
+                                                    groupId );
+        tasksAssignedAsPotentialOwner.setParameter( "language",
+                                                    language );
+        List<TaskSummary> list = (List<TaskSummary>) tasksAssignedAsPotentialOwner.getResultList();
+        return list;
+    }
+
+
+
     public List<TaskSummary> getSubTasksAssignedAsPotentialOwner(long parentId, String userId,
                                                               String language) {
         Query tasksAssignedAsPotentialOwner = em.createNamedQuery( "SubTasksAssignedAsPotentialOwner" );
@@ -638,6 +662,18 @@
         List<TaskSummary> list = (List<TaskSummary>) tasksAssignedAsPotentialOwner.getResultList();
         return list;
     }
+    public List<TaskSummary> getTasksAssignedAsPotentialOwnerByGroup(String groupId,
+                                                              String language) {
+        Query tasksAssignedAsPotentialOwnerByGroup = em.createNamedQuery( "TasksAssignedAsPotentialOwnerByGroup" );
+        tasksAssignedAsPotentialOwnerByGroup.setParameter( "groupId",
+                                                    groupId );
+        tasksAssignedAsPotentialOwnerByGroup.setParameter( "language",
+                                                    language );
+
+        List<TaskSummary> list = (List<TaskSummary>) tasksAssignedAsPotentialOwnerByGroup.getResultList();
+        return list;
+    }
+
     public List<TaskSummary> getSubTasksByParent(long parentId, String language) {
         Query subTaskByParent = em.createNamedQuery( "GetSubTasksByParentTaskId" );
         subTaskByParent.setParameter( "parentId",

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml	2009-01-29 14:38:40 UTC (rev 24999)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml	2009-01-29 14:43:31 UTC (rev 25000)
@@ -123,6 +123,90 @@
           </query>
           <!-- hint name="org.hibernate.timeout" value="200"/ -->
       </named-query>
+            <named-query name="TasksAssignedAsPotentialOwnerWithGroup">
+          <query>
+select
+     new org.drools.task.query.TaskSummary(
+     t.id,
+     names.text,
+     subjects.text,
+     descriptions.text,
+     t.taskData.status,
+     t.priority,
+     t.taskData.skipable,
+     t.taskData.actualOwner,
+     t.taskData.createdBy,
+     t.taskData.createdOn,
+     t.taskData.activationTime,
+     t.taskData.expirationTime)
+from
+    Task t left join t.taskData.createdBy left join t.taskData.actualOwner,
+    I18NText names,
+    I18NText subjects,
+    I18NText descriptions,
+    OrganizationalEntity potentialOwners
+where
+    (potentialOwners.id = :userId or potentialOwners.id = :groupId) and
+    potentialOwners in elements ( t.peopleAssignments.potentialOwners  )  and
+
+    names.language = :language and
+    names in elements( t.names) and
+
+    subjects.language = :language and
+    subjects in elements( t.subjects) and
+
+    descriptions.language = :language and
+    descriptions in elements( t.descriptions) and
+
+    t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
+
+    t.taskData.expirationTime is null
+          </query>
+          <!-- hint name="org.hibernate.timeout" value="200"/ -->
+      </named-query>
+
+       <named-query name="TasksAssignedAsPotentialOwnerByGroup">
+          <query>
+select
+     new org.drools.task.query.TaskSummary(
+     t.id,
+     names.text,
+     subjects.text,
+     descriptions.text,
+     t.taskData.status,
+     t.priority,
+     t.taskData.skipable,
+     t.taskData.actualOwner,
+     t.taskData.createdBy,
+     t.taskData.createdOn,
+     t.taskData.activationTime,
+     t.taskData.expirationTime)
+from
+    Task t left join t.taskData.createdBy left join t.taskData.actualOwner,
+    I18NText names,
+    I18NText subjects,
+    I18NText descriptions,
+    OrganizationalEntity potentialOwners
+where
+    potentialOwners.id = :groupId and
+    potentialOwners in elements ( t.peopleAssignments.potentialOwners  )  and
+
+    names.language = :language and
+    names in elements( t.names) and
+
+    subjects.language = :language and
+    subjects in elements( t.subjects) and
+
+    descriptions.language = :language and
+    descriptions in elements( t.descriptions) and
+
+    t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
+
+    t.taskData.expirationTime is null
+          </query>
+          <!-- hint name="org.hibernate.timeout" value="200"/ -->
+      </named-query>
+
       <named-query name="SubTasksAssignedAsPotentialOwner">
           <query>
 select

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java	2009-01-29 14:38:40 UTC (rev 24999)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java	2009-01-29 14:43:31 UTC (rev 25000)
@@ -137,6 +137,74 @@
 		assertTrue(manager.isCompleted());
 	}
 	
+    public void testTaskGroupActors() throws Exception {
+		TestWorkItemManager manager = new TestWorkItemManager();
+		WorkItemImpl workItem = new WorkItemImpl();
+		workItem.setName("Human Task");
+		workItem.setParameter("TaskName", "TaskName");
+		workItem.setParameter("Comment", "Comment");
+		workItem.setParameter("Priority", "10");
+		workItem.setParameter("GroupId", "Crusaders");
+		handler.executeWorkItem(workItem, manager);
+
+		Thread.sleep(500);
+
+		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+		client.getTasksAssignedAsPotentialOwner(null,"Crusaders", "en-UK", responseHandler);
+		List<TaskSummary> tasks = responseHandler.getResults();
+		assertEquals(1, tasks.size());
+		TaskSummary taskSummary = tasks.get(0);
+		assertEquals("TaskName", taskSummary.getName());
+		assertEquals(10, taskSummary.getPriority());
+		assertEquals("Comment", taskSummary.getDescription());
+		assertEquals(Status.Ready, taskSummary.getStatus());
+
+		System.out.println("Claiming task " + taskSummary.getId());
+		BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
+		client.claim(taskSummary.getId(), "Darth Vader", operationResponseHandler);
+		operationResponseHandler.waitTillDone(5000);
+		System.out.println("Claimed task " + taskSummary.getId());
+
+        //Check if the parent task is InProgress
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+        client.getTask( taskSummary.getId(), getTaskResponseHandler );
+        Task task = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Ready, task.getTaskData().getStatus() );
+        
+
+
+	}
+
+    public void testTaskSingleAndGroupActors() throws Exception {
+		TestWorkItemManager manager = new TestWorkItemManager();
+		WorkItemImpl workItem = new WorkItemImpl();
+		workItem.setName("Human Task One");
+		workItem.setParameter("TaskName", "TaskNameOne");
+		workItem.setParameter("Comment", "Comment");
+		workItem.setParameter("Priority", "10");
+		workItem.setParameter("GroupId", "Crusaders");
+		handler.executeWorkItem(workItem, manager);
+
+		Thread.sleep(500);
+
+
+		workItem = new WorkItemImpl();
+		workItem.setName("Human Task Two");
+		workItem.setParameter("TaskName", "TaskNameTwo");
+		workItem.setParameter("Comment", "Comment");
+		workItem.setParameter("Priority", "10");
+		workItem.setParameter("ActorId", "Darth Vader");
+		handler.executeWorkItem(workItem, manager);
+
+		Thread.sleep(500);
+
+		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+		client.getTasksAssignedAsPotentialOwner("Darth Vader","Crusaders", "en-UK", responseHandler);
+		List<TaskSummary> tasks = responseHandler.getResults();
+		assertEquals(2, tasks.size());
+
+	}
+
 	public void testTaskFail() throws Exception {
 		TestWorkItemManager manager = new TestWorkItemManager();
 		WorkItemImpl workItem = new WorkItemImpl();




More information about the jboss-svn-commits mailing list