[jboss-svn-commits] JBL Code SVN: r22372 - 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 22:12:55 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-09-03 22:12:54 -0400 (Wed, 03 Sep 2008)
New Revision: 22372
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 stop
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 01:59:27 UTC (rev 22371)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java 2008-09-04 02:12:54 UTC (rev 22372)
@@ -6,6 +6,8 @@
ClaimResponse,
StartRequest,
StartResponse,
+ StopRequest,
+ StopResponse,
CompleteRequest,
CompleteResponse,
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 01:59:27 UTC (rev 22371)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java 2008-09-04 02:12:54 UTC (rev 22372)
@@ -195,6 +195,15 @@
session.write( cmd );
}
+ public void stop(long taskId, long userId) {
+ List args = new ArrayList( 1 );
+ args.add( taskId );
+ args.add( userId );
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.StopRequest, args);
+
+ session.write( cmd );
+ }
+
public void complete(long taskId, long userId) {
List args = new ArrayList( 1 );
args.add( taskId );
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 01:59:27 UTC (rev 22371)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java 2008-09-04 02:12:54 UTC (rev 22372)
@@ -44,7 +44,13 @@
long userId = ( Long ) cmd.getArguments().get( 1 );
service.start( taskId, userId );
break;
- }
+ }
+ case StopRequest : {
+ long taskId = ( Long ) cmd.getArguments().get( 0 );
+ long userId = ( Long ) cmd.getArguments().get( 1 );
+ service.stop( 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 01:59:27 UTC (rev 22371)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java 2008-09-04 02:12:54 UTC (rev 22372)
@@ -249,7 +249,6 @@
em.getTransaction().begin();
taskData.setStatus( Status.InProgress );
em.getTransaction().commit();
-
} else {
// @TODO Error
}
@@ -258,6 +257,26 @@
return;
}
}
+
+ public void stop(long taskId,
+ long userId) {
+ Task task = em.find( Task.class,
+ taskId );
+
+ User user = em.find( User.class, userId );
+
+ TaskData taskData = task.getTaskData();
+
+ if ( taskData.getStatus() == Status.InProgress && taskData.getActualOwner().equals( user ) ) {
+ // Status must be InProgress and actual owner, switch to Reserved
+ em.getTransaction().begin();
+ taskData.setStatus( Status.Reserved );
+ em.getTransaction().commit();
+ } else {
+ // @TODO Error
+ return;
+ }
+ }
public void stop(long taskId,
User user) {
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 01:59:27 UTC (rev 22371)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java 2008-09-04 02:12:54 UTC (rev 22372)
@@ -276,5 +276,77 @@
assertEquals( users.get( "bobba" ), task1.getTaskData().getActualOwner() );
}
+ public void testStop() {
+ 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();
+
+ // Go straight from Ready to Inprogress
+ client.start( taskId, users.get( "darth" ).getId() );
+
+ // Check is InProgress
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task1 = getTaskResponseHandler.getTask();
+ assertEquals( Status.InProgress, task1.getTaskData().getStatus() );
+ assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );
+
+ // Now Stop
+ client.stop( taskId, users.get( "darth" ).getId() );
+ getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task2 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Reserved, task2.getTaskData().getStatus() );
+ assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );
+ }
+ public void testStopWithIncorrectUser() {
+ 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();
+
+ // Go straight from Ready to Inprogress
+ client.start( taskId, users.get( "darth" ).getId() );
+
+ // Check is InProgress
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task1 = getTaskResponseHandler.getTask();
+ assertEquals( Status.InProgress, task1.getTaskData().getStatus() );
+ assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );
+
+ // Should not stop
+ client.stop( 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( "darth" ), task2.getTaskData().getActualOwner() );
+ }
+
+
}
More information about the jboss-svn-commits
mailing list