[jboss-svn-commits] JBL Code SVN: r22373 - 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:49:04 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-09-03 22:49:04 -0400 (Wed, 03 Sep 2008)
New Revision: 22373
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 complete and fail
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:12:54 UTC (rev 22372)
+++ 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)
@@ -9,7 +9,9 @@
StopRequest,
StopResponse,
CompleteRequest,
- CompleteResponse,
+ CompleteResponse,
+ FailRequest,
+ FailResponse,
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 02:12:54 UTC (rev 22372)
+++ 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)
@@ -213,6 +213,15 @@
session.write( cmd );
}
+ public void fail(long taskId, long userId) {
+ List args = new ArrayList( 1 );
+ args.add( taskId );
+ args.add( userId );
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.FailRequest, 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 02:12:54 UTC (rev 22372)
+++ 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)
@@ -51,6 +51,18 @@
service.stop( taskId, userId );
break;
}
+ case CompleteRequest : {
+ long taskId = ( Long ) cmd.getArguments().get( 0 );
+ long userId = ( Long ) cmd.getArguments().get( 1 );
+ service.complete( taskId, userId );
+ break;
+ }
+ case FailRequest : {
+ long taskId = ( Long ) cmd.getArguments().get( 0 );
+ long userId = ( Long ) cmd.getArguments().get( 1 );
+ service.fail( 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 02:12:54 UTC (rev 22372)
+++ 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)
@@ -278,20 +278,6 @@
}
}
- public void stop(long taskId,
- User user) {
- Task task = em.find( Task.class,
- taskId );
- TaskData taskData = task.getTaskData();
-
- // make sure user is owner, then change state to Reserved
- if ( taskData.getActualOwner().equals( user ) ) {
- taskData.setStatus( Status.Reserved );
- } else {
- //@TODO Error
- }
- }
-
public void release(long taskId,
User user) {
Task task = em.find( Task.class,
@@ -307,11 +293,41 @@
}
public void complete(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.Completed );
+ em.getTransaction().commit();
+ } else {
+ // @TODO Error
+ return;
+ }
}
- public void fail(long taskId) {
-
+ public void fail(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.Failed );
+ em.getTransaction().commit();
+ } else {
+ // @TODO Error
+ return;
+ }
}
public void addComment(long taskId,
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:12:54 UTC (rev 22372)
+++ 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)
@@ -294,9 +294,7 @@
long taskId = addTaskResponseHandler.getTaskId();
// Go straight from Ready to Inprogress
- client.start( taskId, users.get( "darth" ).getId() );
-
- // Check is InProgress
+ client.start( taskId, users.get( "darth" ).getId() );
BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
client.getTask( taskId, getTaskResponseHandler );
Task task1 = getTaskResponseHandler.getTask();
@@ -331,8 +329,6 @@
// 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();
@@ -347,6 +343,140 @@
assertEquals( Status.InProgress, task2.getTaskData().getStatus() );
assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );
}
+
+ public void testComplete() {
+ 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 Complete
+ client.complete( taskId, users.get( "darth" ).getId() );
+ getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task2 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Completed, task2.getTaskData().getStatus() );
+ assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );
+ }
+
+ public void testCompleteWithIncorrectUser() {
+ 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() );
+
+ // Should not complete as wrong user
+ client.complete( 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() );
+ }
+ public void testFail() {
+ 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 Failed
+ client.fail( taskId, users.get( "darth" ).getId() );
+ getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task2 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Failed, task2.getTaskData().getStatus() );
+ assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );
+ }
+
+ public void testFailWithIncorrectUser() {
+ 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() );
+
+ // Should not fail as wrong user
+ client.fail( 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