[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