[jboss-svn-commits] JBL Code SVN: r22353 - in labs/jbossrules/trunk/drools-process/drools-process-task/src: test/java/org/drools/task/service and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 3 10:38:50 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-09-03 10:38:50 -0400 (Wed, 03 Sep 2008)
New Revision: 22353
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/TaskService.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_PeopleAssignmentQuerries.mvel
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInEnglish.mvel
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInGerman.mvel
Log:
JBRULES-1745 WS-Human-Task
-First parts of operation controls go in for claim, start, stop, release.
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-03 12:46:48 UTC (rev 22352)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java 2008-09-03 14:38:50 UTC (rev 22353)
@@ -173,7 +173,10 @@
handler.addResponseHandler( cmd.getId(), responseHandler );
- session.write( cmd );
+ session.write( cmd );
+ }
+
+ public void claim(long 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-03 12:46:48 UTC (rev 22352)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java 2008-09-03 14:38:50 UTC (rev 22353)
@@ -24,7 +24,9 @@
import org.drools.task.Comment;
import org.drools.task.Deadline;
import org.drools.task.Group;
+import org.drools.task.Status;
import org.drools.task.Task;
+import org.drools.task.TaskData;
import org.drools.task.User;
import org.drools.task.query.DeadlineSummary;
import org.drools.task.query.TaskSummary;
@@ -123,6 +125,37 @@
}
public void addTask(Task task) {
+
+ TaskData taskData = task.getTaskData();
+ // new tasks start off with status created
+ taskData.setStatus( Status.Created );
+
+ if ( task.getPeopleAssignments() != null ) {
+ List potentialOwners = task.getPeopleAssignments().getPotentialOwners();
+ if ( potentialOwners.size() == 1 ) {
+ // if there is a single potential owner, assign and set status to Reserved
+ taskData.setActualOwner( (User) potentialOwners.get( 0 ) );
+ taskData.setStatus( Status.Reserved );
+ } else if ( potentialOwners.size() > 1 ) {
+ // multiple potential owners, so set to Ready so one can claim.
+ taskData.setStatus( Status.Ready );
+ } else {
+ //@TODO we have no potential owners
+ }
+ } else {
+ //@TODO we have no potential owners
+ }
+
+ // set the CreatedOn date if it's not already set
+ if ( taskData.getCreatedOn() == null ) {
+ taskData.setCreatedOn( new Date() );
+ }
+
+ //@FIXME for now we activate on creation, unless date is supplied
+ if ( taskData.getActivationTime() == null ) {
+ taskData.setActivationTime( taskData.getCreatedOn() );
+ }
+
em.getTransaction().begin();
em.persist( task );
em.getTransaction().commit();
@@ -159,63 +192,156 @@
}
}
}
- }
-
- public void addComment(long taskId, Comment comment) {
- Task task = em.find( Task.class, taskId );
+ }
+
+ public void claim(long taskId,
+ User user) {
+ Task task = em.find( Task.class,
+ taskId );
+ TaskData taskData = task.getTaskData();
+
+ em.getTransaction().begin();
+
+ //task must be in status Ready
+ if ( taskData.getStatus() == Status.Ready ) {
+ taskData.setStatus( Status.Reserved );
+ taskData.setActualOwner( user );
+ } else {
+ // @TODO Error
+ }
+
+ em.getTransaction().commit();
+ }
+
+ public void start(long taskId,
+ User user) {
+ Task task = em.find( Task.class,
+ taskId );
+ TaskData taskData = task.getTaskData();
+
+ em.getTransaction().begin();
+
+ //task must be in status Ready or Reserved Status
+ 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 ) {
+ taskData.setStatus( Status.InProgress );
+ } else {
+ //@TODO Error
+ }
+ } else if ( taskData.getStatus() == Status.Reserved ) {
+ // make sure the user us the owner
+ if ( taskData.getActualOwner().equals( user ) ) {
+ taskData.setStatus( Status.InProgress );
+ } else {
+ //@TODO Error
+ }
+ }
+
+ em.getTransaction().commit();
+ }
+
+ 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,
+ 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) {
+
+ }
+
+ public void fail(long taskId) {
+
+ }
+
+ public void addComment(long taskId,
+ Comment comment) {
+ Task task = em.find( Task.class,
+ taskId );
if ( task == null ) {
// throw some exception
- }
-
+ }
+
em.getTransaction().begin();
-
+
List<Comment> list = task.getTaskData().getComments();
- if ( list == null || list == Collections.<Comment>emptyList() ) {
+ if ( list == null || list == Collections.<Comment> emptyList() ) {
list = new ArrayList<Comment>( 1 );
task.getTaskData().setComments( list );
}
-
- list.add ( comment );
-
+
+ list.add( comment );
+
em.getTransaction().commit();
}
-
- public void addAttachment(long taskId, Attachment attachment, AttachmentContent content) {
- Task task = em.find( Task.class, taskId );
-
+
+ public void addAttachment(long taskId,
+ Attachment attachment,
+ AttachmentContent content) {
+ Task task = em.find( Task.class,
+ taskId );
+
if ( task == null ) {
// throw some exception
}
-
- em.getTransaction().begin();
-
+
+ em.getTransaction().begin();
+
em.persist( content );
attachment.setSize( content.getContent().length );
attachment.setContentId( content.getId() );
-
+
List<Attachment> list = task.getTaskData().getAttachments();
- if ( list == null || list == Collections.<Attachment>emptyList() ) {
+ if ( list == null || list == Collections.<Attachment> emptyList() ) {
list = new ArrayList<Attachment>( 1 );
task.getTaskData().setAttachments( list );
}
-
- list.add ( attachment );
+
+ list.add( attachment );
em.getTransaction().commit();
- }
-
+ }
+
public AttachmentContent getAttachmentContent(long contentId) {
- AttachmentContent content = em.find( AttachmentContent.class, contentId );
+ AttachmentContent content = em.find( AttachmentContent.class,
+ contentId );
return content;
- }
-
- public void deleteAttachment(long taskId, long attachmentId, long attachmentContentId) {
+ }
+
+ public void deleteAttachment(long taskId,
+ long attachmentId,
+ long attachmentContentId) {
// @TODO I can't get this to work with HQL deleting the Attachment. Hibernate needs both the item removed from the collection
// and also the item deleted, so for now have to load the entire Task, I suspect that this is due to using the same EM which
// is caching things.
- Task task = em.find( Task.class, taskId );
-
+ Task task = em.find( Task.class,
+ taskId );
+
em.getTransaction().begin();
- for( Iterator<Attachment> it = task.getTaskData().getAttachments().iterator(); it.hasNext(); ) {
+ for ( Iterator<Attachment> it = task.getTaskData().getAttachments().iterator(); it.hasNext(); ) {
Attachment attachment = it.next();
if ( attachment.getId() == attachmentId ) {
it.remove();
@@ -223,39 +349,42 @@
break;
}
}
-
+
// we do this as HQL to avoid streaming in the entire HQL
String deleteContent = "delete from AttachmentContent where id = :id";
- em.createQuery( deleteContent ).setParameter( "id", attachmentContentId ).executeUpdate();
-
- em.getTransaction().commit();
+ em.createQuery( deleteContent ).setParameter( "id",
+ attachmentContentId ).executeUpdate();
+
+ em.getTransaction().commit();
}
-
- public void deleteComment(long taskId, long commentId) {
+
+ public void deleteComment(long taskId,
+ long commentId) {
// @TODO I can't get this to work with HQL deleting the Comment. Hibernate needs both the item removed from the collection
// and also the item deleted, so for now have to load the entire Task, I suspect that this is due to using the same EM which
// is caching things.
- Task task = em.find( Task.class, taskId );
+ Task task = em.find( Task.class,
+ taskId );
em.getTransaction().begin();
- for( Iterator<Comment> it = task.getTaskData().getComments().iterator(); it.hasNext(); ) {
+ for ( Iterator<Comment> it = task.getTaskData().getComments().iterator(); it.hasNext(); ) {
Comment comment = it.next();
if ( comment.getId() == commentId ) {
it.remove();
em.remove( comment ); // need to do this otherwise it just removes the link id, without removing the comment
break;
}
- }
+ }
em.getTransaction().commit();
}
public Task getTask(long taskId) {
Task task = em.find( Task.class,
taskId );
- return task;
+ return task;
}
public List<DeadlineSummary> getUnescalatedDeadlines() {
- return ( List<DeadlineSummary> ) unescalatedDeadlines.getResultList();
+ return (List<DeadlineSummary>) unescalatedDeadlines.getResultList();
}
public List<TaskSummary> getTasksOwned(long userId,
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java 2008-09-03 12:46:48 UTC (rev 22352)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java 2008-09-03 14:38:50 UTC (rev 22353)
@@ -65,8 +65,9 @@
Map vars = new HashedMap();
vars.put( "users", users );
vars.put( "groups", groups );
+ vars.put( "now", new Date() );
- String str = "(with (new Task()) { priority = 55, taskData = new TaskData(),";
+ String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { createdOn = now, activationTime = now}), ";
str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
@@ -137,9 +138,10 @@
public void testAddRemoveAttachment() throws Exception {
Map vars = new HashedMap();
vars.put( "users", users );
- vars.put( "groups", groups );
+ vars.put( "groups", groups );
+ vars.put( "now", new Date() );
- String str = "(with (new Task()) { priority = 55, taskData = new TaskData(),";
+ String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { createdOn = now, activationTime = now}), ";
str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel 2008-09-03 12:46:48 UTC (rev 22352)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel 2008-09-03 14:38:50 UTC (rev 22353)
@@ -14,7 +14,7 @@
activationTime = new Date( 10000000 ),
createdOn = new Date( 10000000 ),
expirationTime = new Date( 10000000 ),
- status = Status.Created,
+ status = Status.Ready,
attachments = [
(with ( new Attachment() ) {
accessType = AccessType.Inline,
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_PeopleAssignmentQuerries.mvel
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_PeopleAssignmentQuerries.mvel 2008-09-03 12:46:48 UTC (rev 22352)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_PeopleAssignmentQuerries.mvel 2008-09-03 14:38:50 UTC (rev 22353)
@@ -1,27 +1,27 @@
format = new java.text.SimpleDateFormat( "dd/MMM/yyyy" );
[ 'darth' : [ new TaskSummary( 1, 'This is my task name Jan', 'This is my task subject Jan', 'This is my task description Jan',
- Status.Created, 20, false, users[ 'peter' ], users[ 'sly' ],
+ Status.Ready, 20, false, users[ 'peter' ], users[ 'sly' ],
format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ) ],
'bobba' : [ new TaskSummary( 1, 'This is my task name Jan', 'This is my task subject Jan', 'This is my task description Jan',
- Status.Created, 20, false, users[ 'peter' ], users[ 'sly' ],
+ Status.Ready, 20, false, users[ 'peter' ], users[ 'sly' ],
format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ),
new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
- Status.Created, 150, false, users[ 'steve' ], users[ 'tony' ],
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ),
new TaskSummary( 1, 'This is my task name Mar', 'This is my task subject Mar', 'This is my task description Mar',
- Status.Created, 90, false, users[ 'peter' ], users[ 'steve' ],
+ Status.Ready, 90, false, users[ 'peter' ], users[ 'steve' ],
format.parse( "15/Mar/2008" ), format.parse( "20/Mar/2008" ), null ) ],
'steve' : [ new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
- Status.Created, 150, false, users[ 'steve' ], users[ 'tony' ],
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ) ],
'liz' : [ new TaskSummary( 1, 'This is my task name Jan', 'This is my task subject Jan', 'This is my task description Jan',
- Status.Created, 20, false, users[ 'peter' ], users[ 'sly' ],
+ Status.Ready, 20, false, users[ 'peter' ], users[ 'sly' ],
format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ),
new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
- Status.Created, 150, false, users[ 'steve' ], users[ 'tony' ],
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ) ],
'sly' : [ new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
- Status.Created, 150, false, users[ 'steve' ], users[ 'tony' ],
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ) ]
]
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInEnglish.mvel
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInEnglish.mvel 2008-09-03 12:46:48 UTC (rev 22352)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInEnglish.mvel 2008-09-03 14:38:50 UTC (rev 22353)
@@ -1,16 +1,16 @@
format = new java.text.SimpleDateFormat( "dd/MMM/yyyy" );
[ 'peter' : [ new TaskSummary( 1, 'This is my task name Jan', 'This is my task subject Jan', 'This is my task description Jan',
- Status.Created, 20, false, users[ 'peter' ], users[ 'sly' ],
+ Status.Ready, 20, false, users[ 'peter' ], users[ 'sly' ],
format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ),
new TaskSummary( 1, 'This is my task name May', 'This is my task subject May', 'This is my task description May',
Status.Created, 20, false, users[ 'peter' ], users[ 'steve' ],
format.parse( "15/May/2008" ), format.parse( "20/May/2008" ), null ),
new TaskSummary( 1, 'This is my task name Mar', 'This is my task subject Mar', 'This is my task description Mar',
- Status.Created, 90, false, users[ 'peter' ], users[ 'steve' ],
+ Status.Ready, 90, false, users[ 'peter' ], users[ 'steve' ],
format.parse( "15/Mar/2008" ), format.parse( "20/Mar/2008" ), null ) ],
'steve' : [new TaskSummary( 1, 'This is my task name Feb', 'This is my task subject Feb', 'This is my task description Feb',
- Status.Created, 150, false, users[ 'steve' ], users[ 'tony' ],
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ),
new TaskSummary( 1, 'This is my task name Jun', 'This is my task subject Jun', 'This is my task description Jun',
Status.Created, 15, false, users[ 'steve' ], users[ 'steve' ],
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInGerman.mvel
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInGerman.mvel 2008-09-03 12:46:48 UTC (rev 22352)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/service/QueryResults_TasksOwnedInGerman.mvel 2008-09-03 14:38:50 UTC (rev 22353)
@@ -1,16 +1,16 @@
format = new java.text.SimpleDateFormat( "dd/MMM/yyyy" );
[ 'peter' : [ new TaskSummary( 1, 'Dies ist mein task Name Jan', 'Das ist mein task Thema Jan', 'Das ist mein task Beschreibung Jan',
- Status.Created, 20, false, users[ 'peter' ], users[ 'sly' ],
+ Status.Ready, 20, false, users[ 'peter' ], users[ 'sly' ],
format.parse( "15/Jan/2008" ), format.parse( "20/Jan/2008" ), null ),
new TaskSummary( 1, 'Dies ist mein task Name May', 'Das ist mein task Thema May', 'Das ist mein task Beschreibung May',
Status.Created, 20, false, users[ 'peter' ], users[ 'steve' ],
format.parse( "15/May/2008" ), format.parse( "20/May/2008" ),null ),
new TaskSummary( 1, 'Dies ist mein task Name Mar', 'Das ist mein task Thema Mar', 'Das ist mein task Beschreibung Mar',
- Status.Created, 90, false, users[ 'peter' ], users[ 'steve' ],
+ Status.Ready, 90, false, users[ 'peter' ], users[ 'steve' ],
format.parse( "15/Mar/2008" ), format.parse( "20/Mar/2008" ), null ) ],
'steve' : [ new TaskSummary( 1, 'Dies ist mein task Name Feb', 'Das ist mein task Thema Feb', 'Das ist mein task Beschreibung Feb',
- Status.Created, 150, false, users[ 'steve' ], users[ 'tony' ],
+ Status.Ready, 150, false, users[ 'steve' ], users[ 'tony' ],
format.parse( "15/Feb/2008" ), format.parse( "20/Feb/2008" ), null ),
new TaskSummary( 1, 'Dies ist mein task Name Jun', 'Das ist mein task Thema Jun', 'Das ist mein task Beschreibung Jun',
Status.Created, 15, false, users[ 'steve' ], users[ 'steve' ],
More information about the jboss-svn-commits
mailing list