[jboss-svn-commits] JBL Code SVN: r22364 - in labs/jbossrules/trunk/drools-process/drools-process-task/src: test/java/org/drools/task/service and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Sep 3 21:06:45 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-09-03 21:06:44 -0400 (Wed, 03 Sep 2008)
New Revision: 22364

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/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/TaskService.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java
Log:
JBRULES-1745 WS-Human-Task
-Added client/server stuff for start

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	2008-09-04 00:17:35 UTC (rev 22363)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java	2008-09-04 01:06:44 UTC (rev 22364)
@@ -4,8 +4,11 @@
 public enum CommandName {   
     ClaimRequest,
     ClaimResponse,
+    StartRequest,
+    StartResponse,
+    CompleteRequest,
+    CompleteResponse,    
     
-    
     GetTaskRequest,
     GetTaskResponse,
     

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	2008-09-04 00:17:35 UTC (rev 22363)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2008-09-04 01:06:44 UTC (rev 22364)
@@ -186,6 +186,24 @@
         session.write( cmd );          
     }
     
+    public void start(long taskId, long userId) {
+        List args = new ArrayList( 1 );
+        args.add( taskId );
+        args.add(  userId );
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.StartRequest, args);
+        
+        session.write( cmd );         
+    }
+    
+    public void complete(long taskId, long userId) {
+        List args = new ArrayList( 1 );
+        args.add( taskId );
+        args.add(  userId );
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.CompleteRequest, args);
+        
+        session.write( cmd ); 
+    }
+    
 
     public void getTasksOwned(long userId, String language, TaskSummaryResponseHandler responseHandler) {
         List args = new ArrayList( 2 );

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	2008-09-04 00:17:35 UTC (rev 22363)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2008-09-04 01:06:44 UTC (rev 22364)
@@ -36,8 +36,15 @@
             case ClaimRequest : {
                 long taskId = ( Long ) cmd.getArguments().get( 0 );
                 long userId = ( Long ) cmd.getArguments().get( 1 );
-                service.claim( taskId, userId );                                               
-            }
+                service.claim( taskId, userId );          
+                break;
+            }           
+            case StartRequest : {
+                long taskId = ( Long ) cmd.getArguments().get( 0 );
+                long userId = ( Long ) cmd.getArguments().get( 1 );
+                service.start( taskId, userId );   
+                break;
+            }            
             case GetTaskRequest : {
                 long taskId = ( Long ) cmd.getArguments().get( 0 );
                 Task task = service.getTask( taskId );

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java	2008-09-04 00:17:35 UTC (rev 22363)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java	2008-09-04 01:06:44 UTC (rev 22364)
@@ -209,7 +209,7 @@
             PeopleAssignments people = task.getPeopleAssignments();
             if ( isAllowed( user, new List[] { people.getPotentialOwners(), people.getBusinessAdministrators() } ) ) {
                 em.getTransaction().begin();
-                // only potential onwers and business admin can claim a task
+                // only potential owners and business admin can claim a task
                 taskData.setStatus( Status.Reserved );
                 taskData.setActualOwner( user );
                 em.getTransaction().commit();
@@ -219,35 +219,44 @@
         } else {
             // @TODO Error
         }
-    }
+    }    
 
     public void start(long taskId,
-                      User user) {
+                      long userId) {
         Task task = em.find( Task.class,
                              taskId );
+        
+        User user = em.find( User.class, userId );
+        
         TaskData taskData = task.getTaskData();
+        
 
-        em.getTransaction().begin();
-
-        //task must be in status Ready or Reserved Status
+        // Status must be Read or Reserved
         if ( taskData.getStatus() == Status.Ready ) {
-            // if Ready make sure is a potentialOwner
-            boolean allowed = task.getPeopleAssignments().getPotentialOwners().contains( user ) && !task.getPeopleAssignments().getExcludedOwners().contains( user );
-            if ( allowed ) {
+            // if Ready must be potentialOwner
+            PeopleAssignments people = task.getPeopleAssignments();
+            if ( isAllowed( user, new List[] { people.getPotentialOwners() } ) ) {
+                em.getTransaction().begin();
+                taskData.setActualOwner( user );
                 taskData.setStatus( Status.InProgress );
+                em.getTransaction().commit();              
             } else {
-                //@TODO Error
+                // @TODO Error
             }
         } else if ( taskData.getStatus() == Status.Reserved ) {
-            // make sure the user us the owner
+            // if Reserved must be actual owner
             if ( taskData.getActualOwner().equals( user ) ) {
+                em.getTransaction().begin();
                 taskData.setStatus( Status.InProgress );
+                em.getTransaction().commit();
+
             } else {
-                //@TODO Error
+                // @TODO Error
             }
-        }
-
-        em.getTransaction().commit();
+        } else {
+            // @TODO Error
+            return;            
+        }        
     }
 
     public void stop(long taskId,
@@ -278,7 +287,7 @@
         }
     }
 
-    public void complete(long taskId) {
+    public void complete(long taskId, long userId) {
 
     }
 

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java	2008-09-04 00:17:35 UTC (rev 22363)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java	2008-09-04 01:06:44 UTC (rev 22364)
@@ -83,8 +83,6 @@
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
         client.getTask( taskId, getTaskResponseHandler );
         Task task1 = getTaskResponseHandler.getTask();
-        assertNotSame(task, task1);
-        assertFalse(  task.equals( task1) );
         assertEquals( task1.getTaskData().getStatus(), Status.Created );     
         assertNull( task1.getTaskData().getActualOwner() );        
     }
@@ -110,9 +108,7 @@
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
         client.getTask( taskId, getTaskResponseHandler );
         Task task1 = getTaskResponseHandler.getTask();
-        assertNotSame(task, task1);
-        assertFalse(  task.equals( task1) );
-        assertEquals( task1.getTaskData().getStatus(), Status.Reserved );     
+        assertEquals( Status.Reserved, task1.getTaskData().getStatus() );     
         assertEquals( users.get( "bobba" ), task1.getTaskData().getActualOwner() );
     }
     
@@ -145,7 +141,140 @@
         client.getTask( taskId, getTaskResponseHandler );
         Task task2 = getTaskResponseHandler.getTask();
         assertEquals(  Status.Reserved, task2.getTaskData().getStatus() );
-        assertEquals( task2.getTaskData().getActualOwner(), users.get( "darth" ) );
+        assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );
     }
 
+    public void testStartFromReadyStateWithPotentialOwner() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();
+        
+        // A Task with multiple potential owners moves to "Ready" state until someone claims it.
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals( Status.Ready , task1.getTaskData().getStatus() );     
+        
+        // Go straight from Ready to Inprogress
+        client.start( taskId, users.get( "darth" ).getId() );
+        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.InProgress, task2.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );        
+    }
+    
+    public void testStartFromReadyStateWithIncorrectPotentialOwner() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();
+        
+        // A Task with multiple potential owners moves to "Ready" state until someone claims it.
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals( Status.Ready , task1.getTaskData().getStatus() );     
+        
+        // State should not change as user isn't potential owner
+        client.start( taskId, users.get( "tony" ).getId() );
+        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Ready, task2.getTaskData().getStatus() );
+        assertNull( task2.getTaskData().getActualOwner() );        
+    }    
+    
+    public void testStartFromReserved() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();
+        
+        // Task should be assigned to the single potential owner and state set to Reserved
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals( Status.Reserved, task1.getTaskData().getStatus());     
+        assertEquals( users.get( "bobba" ), task1.getTaskData().getActualOwner() );
+        
+        // Should change to InProgress
+        client.start( taskId, users.get( "bobba" ).getId() );
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals( Status.InProgress, task2.getTaskData().getStatus() );     
+        assertEquals( users.get( "bobba" ), task1.getTaskData().getActualOwner() );        
+    }
+    
+    public void testStartFromReservedWithIncorrectUser() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();
+        
+        // Task should be assigned to the single potential owner and state set to Reserved
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals( Status.Reserved , task1.getTaskData().getStatus());     
+        assertEquals( users.get( "bobba" ), task1.getTaskData().getActualOwner() );
+        
+        // Should change not change
+        client.start( taskId, users.get( "tony" ).getId() );
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals( Status.Reserved, task2.getTaskData().getStatus() );     
+        assertEquals( users.get( "bobba" ), task1.getTaskData().getActualOwner() );        
+    }
+    
+    
 }




More information about the jboss-svn-commits mailing list