[jboss-svn-commits] JBL Code SVN: r22377 - 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
Thu Sep 4 00:24:44 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-09-04 00:24:44 -0400 (Thu, 04 Sep 2008)
New Revision: 22377
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 skip
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 04:11:17 UTC (rev 22376)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java 2008-09-04 04:24:44 UTC (rev 22377)
@@ -13,7 +13,9 @@
SuspendRequest,
SuspendResponse,
ResumeRequest,
- ResumeResponse,
+ ResumeResponse,
+ SkipRequest,
+ SkipResponse,
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 04:11:17 UTC (rev 22376)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java 2008-09-04 04:24:44 UTC (rev 22377)
@@ -231,8 +231,15 @@
session.write( cmd );
}
+ public void skip(long taskId, long userId) {
+ List args = new ArrayList( 1 );
+ args.add( taskId );
+ args.add( userId );
+ Command cmd = new Command( counter.getAndIncrement(), CommandName.SkipRequest, 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 04:11:17 UTC (rev 22376)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java 2008-09-04 04:24:44 UTC (rev 22377)
@@ -68,6 +68,12 @@
long userId = ( Long ) cmd.getArguments().get( 1 );
service.resume( taskId, userId );
break;
+ }
+ case SkipRequest : {
+ long taskId = ( Long ) cmd.getArguments().get( 0 );
+ long userId = ( Long ) cmd.getArguments().get( 1 );
+ service.skip( taskId, userId );
+ break;
}
case CompleteRequest : {
long taskId = ( Long ) cmd.getArguments().get( 0 );
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 04:11:17 UTC (rev 22376)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java 2008-09-04 04:24:44 UTC (rev 22377)
@@ -277,26 +277,7 @@
// @TODO Error
return;
}
- }
-
- 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 release(long taskId, long userId) {
Task task = em.find( Task.class,
@@ -370,6 +351,51 @@
}
}
+ public void skip(long taskId, long userId) {
+ Task task = em.find( Task.class,
+ taskId );
+
+ User user = em.find( User.class, userId );
+
+ TaskData taskData = task.getTaskData();
+
+ List[] allowed;
+ PeopleAssignments people = task.getPeopleAssignments();
+ if ( taskData.getStatus() == Status.Ready ) {
+ // If it's ready then potential owners can skip too
+ allowed = new List[] { people.getPotentialOwners(), people.getBusinessAdministrators() };
+ } else {
+ allowed = new List[] { people.getBusinessAdministrators() };
+ }
+
+ if ( task.getTaskData().isSkipable() && (taskData.getStatus() != Status.Completed && taskData.getStatus() != Status.Failed ) && ( ( taskData.getActualOwner() != null && taskData.getActualOwner().equals( user ) ) || isAllowed( user, allowed ) ) ) {
+ em.getTransaction().begin();
+ taskData.setStatus( Status.Obselete );
+ em.getTransaction().commit();
+ } else {
+ //@TODO Error
+ }
+ }
+
+ 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, long userId) {
Task task = em.find( Task.class,
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 04:11:17 UTC (rev 22376)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java 2008-09-04 04:24:44 UTC (rev 22377)
@@ -671,7 +671,62 @@
assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );
}
+ public void testSkipFromReady() {
+ 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()) { skipable = true} ), ";
+ 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();
+
+ // Check is Complete
+ client.skip( taskId, users.get( "darth" ).getId() );
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task1 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Obselete, task1.getTaskData().getStatus() );
+ assertNull( task1.getTaskData().getActualOwner() );
+ }
+ public void testSkipFromReseerved() {
+ 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()) { skipable = true} ), ";
+ 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
+ client.claim( taskId, users.get( "darth" ).getId() );
+
+
+ // Check is Complete
+ client.skip( taskId, users.get( "darth" ).getId() );
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task1 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Obselete, 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