[jboss-svn-commits] JBL Code SVN: r22374 - 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 23:04:04 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-09-03 23:04:04 -0400 (Wed, 03 Sep 2008)
New Revision: 22374
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 release
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 02:49:04 UTC (rev 22373)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java 2008-09-04 03:04:04 UTC (rev 22374)
@@ -7,7 +7,9 @@
StartRequest,
StartResponse,
StopRequest,
- StopResponse,
+ StopResponse,
+ ReleaseRequest,
+ ReleaseResponse,
CompleteRequest,
CompleteResponse,
FailRequest,
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 02:49:04 UTC (rev 22373)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java 2008-09-04 03:04:04 UTC (rev 22374)
@@ -204,6 +204,15 @@
session.write( cmd );
}
+ public void release(long taskId, long userId) {
+ List args = new ArrayList( 1 );
+ args.add( taskId );
+ args.add( userId );
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.ReleaseRequest, 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 02:49:04 UTC (rev 22373)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java 2008-09-04 03:04:04 UTC (rev 22374)
@@ -51,6 +51,12 @@
service.stop( taskId, userId );
break;
}
+ case ReleaseRequest : {
+ long taskId = ( Long ) cmd.getArguments().get( 0 );
+ long userId = ( Long ) cmd.getArguments().get( 1 );
+ service.release( taskId, userId );
+ break;
+ }
case CompleteRequest : {
long taskId = ( Long ) cmd.getArguments().get( 0 );
long userId = ( Long ) cmd.getArguments().get( 1 );
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 02:49:04 UTC (rev 22373)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java 2008-09-04 03:04:04 UTC (rev 22374)
@@ -277,21 +277,7 @@
return;
}
}
-
- public void release(long taskId,
- User user) {
- Task task = em.find( Task.class,
- taskId );
- TaskData taskData = task.getTaskData();
-
- // task must be reserved or in progress and owned by user
- if ( (taskData.getStatus() == Status.Reserved || taskData.getStatus() == Status.InProgress) && taskData.getActualOwner().equals( user ) ) {
- taskData.setStatus( Status.Ready );
- } else {
- //@TODO Error
- }
- }
-
+
public void complete(long taskId, long userId) {
Task task = em.find( Task.class,
taskId );
@@ -309,6 +295,25 @@
// @TODO Error
return;
}
+ }
+
+ public void release(long taskId, long userId) {
+ Task task = em.find( Task.class,
+ taskId );
+
+ User user = em.find( User.class, userId );
+
+ TaskData taskData = task.getTaskData();
+
+ // task must be reserved or in progress and owned by user
+ if ( (taskData.getStatus() == Status.Reserved || taskData.getStatus() == Status.InProgress) && taskData.getActualOwner().equals( user ) ) {
+ em.getTransaction().begin();
+ taskData.setStatus( Status.Ready );
+ taskData.setActualOwner( null );
+ em.getTransaction().commit();
+ } else {
+ //@TODO Error
+ }
}
public void fail(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 02:49:04 UTC (rev 22373)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java 2008-09-04 03:04:04 UTC (rev 22374)
@@ -342,8 +342,110 @@
Task task2 = getTaskResponseHandler.getTask();
assertEquals( Status.InProgress, task2.getTaskData().getStatus() );
assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );
+ }
+
+ public void testReleaseFromInprogress() {
+ 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() );
+ 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() );
+
+ // Check is Released
+ client.release( taskId, users.get( "darth" ).getId() );
+ getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task2 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Ready, task2.getTaskData().getStatus() );
+ assertNull( task2.getTaskData().getActualOwner() );
}
+ public void testReleaseFromReserved() {
+ 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.claim( taskId, users.get( "darth" ).getId() );
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task1 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Reserved, task1.getTaskData().getStatus() );
+ assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );
+
+ // Check is Released
+ client.release( taskId, users.get( "darth" ).getId() );
+ getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task2 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Ready, task2.getTaskData().getStatus() );
+ assertNull( task2.getTaskData().getActualOwner() );
+ }
+
+ public void testReleaseWithIncorrectUser() {
+ 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.claim( taskId, users.get( "darth" ).getId() );
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task1 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Reserved, task1.getTaskData().getStatus() );
+ assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );
+
+ // Check is not changed
+ client.release( taskId, users.get( "bobba" ).getId() );
+ getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task2 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Reserved, task1.getTaskData().getStatus() );
+ assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );
+ }
+
public void testComplete() {
Map vars = new HashedMap();
vars.put( "users", users );
More information about the jboss-svn-commits
mailing list