[jboss-svn-commits] JBL Code SVN: r23047 - in labs/jbossrules/trunk: drools-eclipse/drools-eclipse-task/META-INF and 10 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 24 09:37:13 EDT 2008
Author: KrisVerlaenen
Date: 2008-09-24 09:37:13 -0400 (Wed, 24 Sep 2008)
New Revision: 23047
Added:
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/AbstractBlockingResponseHandler.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/BlockingTaskOperationResponseHandler.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/BlockingTaskSummaryResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingAddTaskResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingEventResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingGetTaskResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskCompletedEvent.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/RunTaskService.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/BlockingTaskSummaryResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskLifeCycleTest.java
Removed:
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskClosedEvent.java
labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/wsht/
Modified:
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/.classpath
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/build.properties
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/DefaultTaskEventListener.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/MessagingTaskEventListener.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventListener.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventSupport.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/MockEventMessagingTest.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java
Log:
JBRULES-1757: Add WS-HT service views to IDE
- updated views to new task API
- added more event listeners + WS-HT work item handler
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/.classpath 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/.classpath 2008-09-24 13:37:13 UTC (rev 23047)
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
+ <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.5.2.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/slf4j-jdk14-1.5.2.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="lib" path="lib/drools-process-task-5.0.0.SNAPSHOT.jar"/>
<classpathentry kind="lib" path="lib/mina-core-2.0.0-M3.jar"/>
- <classpathentry kind="lib" path="lib/ejb3-persistence-1.0.2.GA.jar"/>
- <classpathentry kind="lib" path="lib/slf4j-jdk14-1.5.2.jar"/>
- <classpathentry kind="lib" path="lib/slf4j-api-1.5.2.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/META-INF/MANIFEST.MF 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/META-INF/MANIFEST.MF 2008-09-24 13:37:13 UTC (rev 23047)
@@ -12,5 +12,4 @@
lib/drools-process-task-5.0.0.SNAPSHOT.jar,
lib/mina-core-2.0.0-M3.jar,
lib/slf4j-api-1.5.2.jar,
- lib/slf4j-jdk14-1.5.2.jar,
- lib/ejb3-persistence-1.0.2.GA.jar
+ lib/slf4j-jdk14-1.5.2.jar
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/build.properties
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/build.properties 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/build.properties 2008-09-24 13:37:13 UTC (rev 23047)
@@ -8,5 +8,4 @@
lib/drools-process-task-5.0.0.SNAPSHOT.jar,\
lib/mina-core-2.0.0-M3.jar,\
lib/slf4j-api-1.5.2.jar,\
- lib/slf4j-jdk14-1.5.2.jar,\
- lib/ejb3-persistence-1.0.2.GA.jar
+ lib/slf4j-jdk14-1.5.2.jar
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/AbstractBlockingResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/AbstractBlockingResponseHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/AbstractBlockingResponseHandler.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,54 @@
+/**
+ *
+ */
+package org.drools.eclipse.task.views;
+
+import org.drools.task.service.BaseMinaHandler.ResponseHandler;
+import org.drools.task.service.TaskClientHandler.AddCommentResponseHandler;
+
+public abstract class AbstractBlockingResponseHandler
+ implements
+ ResponseHandler {
+ protected volatile Boolean done = Boolean.FALSE;
+ private String error;
+
+ public boolean hasError() {
+ return error != null;
+ }
+
+ public String getError() {
+ return error;
+ }
+
+ public void setError(String error) {
+ this.error = error;
+ }
+
+ public boolean isDone() {
+ synchronized ( done ) {
+ return done;
+ }
+ }
+
+ public boolean waitTillDone(long time) {
+ long totalWaitTime = 0;
+ try {
+ while ( true ) {
+ synchronized ( done ) {
+ if ( done ) {
+ return true;
+ }
+ }
+ if ( totalWaitTime >= time ) {
+ break;
+ }
+ Thread.sleep( 250 );
+ totalWaitTime += 250;
+ }
+ } catch ( Exception e ) {
+ // swallow, as we are either true or false
+ }
+ return false;
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/BlockingTaskOperationResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/BlockingTaskOperationResponseHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/BlockingTaskOperationResponseHandler.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,16 @@
+/**
+ *
+ */
+package org.drools.eclipse.task.views;
+
+import org.drools.eventmessaging.EventResponseHandler;
+import org.drools.eventmessaging.Payload;
+import org.drools.task.service.TaskClientHandler.TaskOperationResponseHandler;
+
+public class BlockingTaskOperationResponseHandler extends AbstractBlockingResponseHandler implements TaskOperationResponseHandler {
+ public void setIsDone(boolean done) {
+ synchronized ( this.done ) {
+ this.done = done;
+ }
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/BlockingTaskSummaryResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/BlockingTaskSummaryResponseHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/BlockingTaskSummaryResponseHandler.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,43 @@
+package org.drools.eclipse.task.views;
+
+import java.util.List;
+
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.TaskClientHandler.TaskSummaryResponseHandler;
+
+public class BlockingTaskSummaryResponseHandler extends AbstractBlockingResponseHandler implements TaskSummaryResponseHandler {
+
+ private volatile List<TaskSummary> results;
+
+ public synchronized void execute(List<TaskSummary> results) {
+ synchronized ( this.done ) {
+ this.results = results;
+ this.done = true;
+ notifyAll();
+ }
+ }
+
+ public synchronized List<TaskSummary> getResults() {
+ boolean isDone;
+ synchronized ( done ) {
+ isDone = this.done;
+ }
+ if ( !isDone ) {
+ try {
+ wait( 10000 );
+ } catch ( InterruptedException e ) {
+ // swallow as this is just a notification
+ }
+ }
+ synchronized ( done ) {
+ isDone = this.done;
+ }
+ if ( !isDone ) {
+ throw new RuntimeException("Timeout : unable to retrieve results" );
+ }
+
+ return results;
+ }
+
+};
+
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -14,7 +14,6 @@
import org.drools.task.query.TaskSummary;
import org.drools.task.service.MinaTaskClient;
import org.drools.task.service.TaskClientHandler;
-import org.drools.task.service.TaskClientHandler.TaskSummaryResponseHandler;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
@@ -75,7 +74,7 @@
STATUSSES.put(Status.Exited, "Exited");
STATUSSES.put(Status.Failed, "Failed");
STATUSSES.put(Status.InProgress, "InProgress");
- STATUSSES.put(Status.Obselete, "Obsolete");
+ STATUSSES.put(Status.Obsolete, "Obsolete");
STATUSSES.put(Status.Ready, "Ready");
STATUSSES.put(Status.Reserved, "Reserved");
STATUSSES.put(Status.Suspended, "Suspended");
@@ -129,7 +128,7 @@
if (user == null) {
return null;
}
- return user.getDisplayName();
+ return user.getId();
case 3:
return taskSummary.getDescription();
default:
@@ -323,7 +322,7 @@
suspendButton.setEnabled(selected &&
(Status.Ready.equals(task.getStatus()) || Status.Reserved.equals(task.getStatus()) || Status.InProgress.equals(task.getStatus())));
resumeButton.setEnabled(selected && Status.Suspended.equals(task.getStatus()));
- skipButton.setEnabled(selected && !Status.Completed.equals(task.getStatus()) && !Status.Failed.equals(task.getStatus()));
+ skipButton.setEnabled(selected && !Status.Completed.equals(task.getStatus()) && !Status.Failed.equals(task.getStatus())&& !Status.Obsolete.equals(task.getStatus()));
completeButton.setEnabled(selected && Status.InProgress.equals(task.getStatus()));
failButton.setEnabled(selected && Status.InProgress.equals(task.getStatus()));
}
@@ -384,7 +383,7 @@
}
private void refresh() {
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -410,7 +409,7 @@
return;
}
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -420,7 +419,8 @@
return;
}
- client.claim(taskSummary.getId(), userId);
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.claim(taskSummary.getId(), userId, responseHandler);
client.disconnect();
refresh();
}
@@ -431,7 +431,7 @@
return;
}
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -441,7 +441,8 @@
return;
}
- client.start(taskSummary.getId(), userId);
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.start(taskSummary.getId(), userId, responseHandler);
client.disconnect();
refresh();
}
@@ -452,7 +453,7 @@
return;
}
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -462,7 +463,8 @@
return;
}
- client.stop(taskSummary.getId(), userId);
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.stop(taskSummary.getId(), userId, responseHandler);
client.disconnect();
refresh();
}
@@ -473,7 +475,7 @@
return;
}
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -483,7 +485,8 @@
return;
}
- client.release(taskSummary.getId(), userId);
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.release(taskSummary.getId(), userId, responseHandler);
client.disconnect();
refresh();
}
@@ -494,7 +497,7 @@
return;
}
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -504,7 +507,8 @@
return;
}
- client.suspend(taskSummary.getId(), userId);
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.suspend(taskSummary.getId(), userId, responseHandler);
client.disconnect();
refresh();
}
@@ -515,7 +519,7 @@
return;
}
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -525,7 +529,8 @@
return;
}
- client.resume(taskSummary.getId(), userId);
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.resume(taskSummary.getId(), userId, responseHandler);
client.disconnect();
refresh();
}
@@ -536,7 +541,7 @@
return;
}
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -546,7 +551,8 @@
return;
}
- client.skip(taskSummary.getId(), userId);
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.skip(taskSummary.getId(), userId, responseHandler);
client.disconnect();
refresh();
}
@@ -557,7 +563,7 @@
return;
}
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -567,7 +573,8 @@
return;
}
- client.complete(taskSummary.getId(), userId);
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.complete(taskSummary.getId(), userId, responseHandler);
client.disconnect();
refresh();
}
@@ -578,7 +585,7 @@
return;
}
- Long userId = getUserId();
+ String userId = getUserId();
if (userId == null) {
return;
}
@@ -588,7 +595,8 @@
return;
}
- client.fail(taskSummary.getId(), userId);
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.fail(taskSummary.getId(), userId, responseHandler);
client.disconnect();
refresh();
}
@@ -606,15 +614,8 @@
return client;
}
- private Long getUserId() {
- Long userId = null;
- try {
- userId = new Long(userNameText.getText());
- } catch (NumberFormatException e) {
- showMessage("Could not convert user id, should be a long value.");
- return null;
- }
- return userId;
+ private String getUserId() {
+ return userNameText.getText();
}
private TaskSummary getSelectedTask() {
@@ -628,26 +629,4 @@
return null;
}
- private class BlockingTaskSummaryResponseHandler implements TaskSummaryResponseHandler {
- private volatile List<TaskSummary> results;
- public void execute(List<TaskSummary> results) {
- this.results = results;
- }
- public List<TaskSummary> getResults() {
- int retryCounter = 0;
- while (results == null && retryCounter < 5 ) {
- try {
- Thread.sleep(1000);
- } catch (Throwable t) {
- t.printStackTrace();
- }
- retryCounter++;
- }
- if (results == null) {
- throw new RuntimeException("Timeout : unable to retrieve results");
- }
- return results;
- }
- }
-
}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht (from rev 23020, labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/wsht)
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht
___________________________________________________________________
Name: svn:mergeinfo
+
Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,53 @@
+/**
+ *
+ */
+package org.drools.process.workitem.wsht;
+
+import org.drools.task.service.BaseMinaHandler.ResponseHandler;
+
+public abstract class AbstractBlockingResponseHandler
+ implements
+ ResponseHandler {
+ protected volatile Boolean done = Boolean.FALSE;
+ private String error;
+
+ public boolean hasError() {
+ return error != null;
+ }
+
+ public String getError() {
+ return error;
+ }
+
+ public void setError(String error) {
+ this.error = error;
+ }
+
+ public boolean isDone() {
+ synchronized ( done ) {
+ return done;
+ }
+ }
+
+ public boolean waitTillDone(long time) {
+ long totalWaitTime = 0;
+ try {
+ while ( true ) {
+ synchronized ( done ) {
+ if ( done ) {
+ return true;
+ }
+ }
+ if ( totalWaitTime >= time ) {
+ break;
+ }
+ Thread.sleep( 250 );
+ totalWaitTime += 250;
+ }
+ } catch ( Exception e ) {
+ // swallow, as we are either true or false
+ }
+ return false;
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingAddTaskResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingAddTaskResponseHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingAddTaskResponseHandler.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,40 @@
+/**
+ *
+ */
+package org.drools.process.workitem.wsht;
+
+import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
+
+public class BlockingAddTaskResponseHandler extends AbstractBlockingResponseHandler implements AddTaskResponseHandler {
+ private volatile long taskId;
+
+ public synchronized void execute(long taskId) {
+ synchronized ( this.done ) {
+ this.taskId = taskId;
+ this.done = true;
+ notifyAll();
+ }
+ }
+
+ public synchronized long getTaskId() {
+ boolean isDone;
+ synchronized ( done ) {
+ isDone = this.done;
+ }
+ if ( !isDone ) {
+ try {
+ wait( 10000 );
+ } catch ( InterruptedException e ) {
+ // swallow as this is just a notification
+ }
+ }
+ synchronized ( done ) {
+ isDone = this.done;
+ }
+ if ( !isDone ) {
+ throw new RuntimeException("Timeout : unable to retrieve Task Id" );
+ }
+
+ return taskId;
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingEventResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingEventResponseHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingEventResponseHandler.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,41 @@
+/**
+ *
+ */
+package org.drools.process.workitem.wsht;
+
+import org.drools.eventmessaging.EventResponseHandler;
+import org.drools.eventmessaging.Payload;
+
+public class BlockingEventResponseHandler extends AbstractBlockingResponseHandler implements EventResponseHandler {
+ private volatile Payload payload;
+
+ public synchronized void execute(Payload payload) {
+ synchronized ( this.done ) {
+ this.payload = payload;
+ this.done = true;
+ }
+ notifyAll();
+ }
+
+ public synchronized Payload getPayload() {
+ boolean isDone;
+ synchronized ( done ) {
+ isDone = this.done;
+ }
+ if ( !isDone ) {
+ try {
+ wait( 1000000 );
+ } catch ( InterruptedException e ) {
+ // swallow as this is just a notification
+ }
+ }
+ synchronized ( done ) {
+ isDone = this.done;
+ }
+ if ( !isDone ) {
+ throw new RuntimeException("Timeout : unable to retrieve event payload" );
+ }
+
+ return payload;
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingGetTaskResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingGetTaskResponseHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingGetTaskResponseHandler.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,35 @@
+/**
+ *
+ */
+package org.drools.process.workitem.wsht;
+
+import org.drools.task.Task;
+import org.drools.task.service.TaskClientHandler.GetTaskResponseHandler;
+
+public class BlockingGetTaskResponseHandler extends AbstractBlockingResponseHandler implements GetTaskResponseHandler {
+ private volatile Task task;
+
+ public synchronized void execute(Task task) {
+ synchronized ( this.done ) {
+ this.task = task;
+ this.done = true;
+ notifyAll();
+ }
+ }
+
+ public synchronized Task getTask() {
+ if ( task == null ) {
+ try {
+ wait( 10000 );
+ } catch ( InterruptedException e ) {
+ // swallow as this is just a notifiation
+ }
+ }
+
+ if ( task == null ) {
+ throw new RuntimeException("Timeout : unable to retrieve Task Id" );
+ }
+
+ return task;
+ }
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java 2008-09-23 16:50:02 UTC (rev 23020)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -3,116 +3,126 @@
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
-//import org.apache.mina.transport.socket.nio.NioSocketConnector;
-//import org.drools.process.instance.WorkItem;
-//import org.drools.process.instance.WorkItemHandler;
-//import org.drools.process.instance.WorkItemManager;
-//import org.drools.task.I18NText;
-//import org.drools.task.OrganizationalEntity;
-//import org.drools.task.PeopleAssignments;
-//import org.drools.task.Status;
-//import org.drools.task.Task;
-//import org.drools.task.TaskData;
-//import org.drools.task.User;
-//import org.drools.task.service.MinaTaskClient;
-//import org.drools.task.service.TaskClientHandler;
-//import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.eventmessaging.EventKey;
+import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.process.instance.WorkItemManager;
+import org.drools.task.I18NText;
+import org.drools.task.OrganizationalEntity;
+import org.drools.task.PeopleAssignments;
+import org.drools.task.Task;
+import org.drools.task.TaskData;
+import org.drools.task.User;
+import org.drools.task.event.TaskCompletedEvent;
+import org.drools.task.event.TaskEventKey;
+import org.drools.task.service.MinaTaskClient;
+import org.drools.task.service.TaskClientHandler;
-public class WSHumanTaskHandler {//implements WorkItemHandler {
-//
-// private String ipAddress = "127.0.0.1";
-// private int port = 9123;
-//
-// public void setConnection(String ipAddress, int port) {
-// this.ipAddress = ipAddress;
-// this.port = port;
-// }
-//
-// public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
-// // TODO: cache client and keep client open ?
-// MinaTaskClient client = new MinaTaskClient(
-// "org.drools.process.workitem.wsht.WSHumanTaskHandler", new TaskClientHandler());
-// NioSocketConnector connector = new NioSocketConnector();
-// SocketAddress address = new InetSocketAddress(ipAddress, port);
-// client.connect(connector, address);
-//
-// Task task = new Task();
-// String taskName = (String) workItem.getParameter("TaskName");
-// if (taskName != null) {
-// List<I18NText> names = new ArrayList<I18NText>();
-// names.add(new I18NText("en-UK", taskName));
-// task.setNames(names);
-// }
-// String comment = (String) workItem.getParameter("Comment");
-// if (comment != null) {
-// List<I18NText> descriptions = new ArrayList<I18NText>();
-// descriptions.add(new I18NText("en-UK", comment));
-// task.setDescriptions(descriptions);
-// List<I18NText> subjects = new ArrayList<I18NText>();
-// subjects.add(new I18NText("en-UK", comment));
-// task.setSubjects(subjects);
-// }
-// String priority = (String) workItem.getParameter("Priority");
-// if (priority != null) {
-// try {
-// task.setPriority(new Integer(priority));
-// } catch (NumberFormatException e) {
-// // do nothing
-// }
-// }
-// TaskData taskData = new TaskData();
-// taskData.setWorkItemId(workItem.getId());
-// taskData.setStatus(Status.Created);
-// task.setTaskData(taskData);
-// String actorId = (String) workItem.getParameter("ActorId");
-// if (actorId != null) {
-// PeopleAssignments assignments = new PeopleAssignments();
-// List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>();
-// User user = new User();
-// user.setId(new Long(actorId));
-// potentialOwners.add(user);
-// assignments.setPotentialOwners(potentialOwners);
-// task.setPeopleAssignments(assignments);
-// //taskData.setActualOwner(user);
-// //taskData.setCreatedBy(user);
-// //taskData.setCreatedOn(new Date());
-// //taskData.setActivationTime(new Date());
-// }
-// client.addTask(task, new BlockingAddTaskResponseHandler());
-// client.disconnect();
-// }
-//
-// public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
-// // TODO
-// }
-//
-// private class BlockingAddTaskResponseHandler implements AddTaskResponseHandler {
-// private volatile long taskId;
-// private volatile boolean wait = true;
-//
-// public synchronized void execute(long taskId) {
-// this.taskId = taskId;
-// wait = false;
-// notifyAll();
-// }
-//
-// public synchronized long getTaskId() {
-// if ( wait ) {
-// try {
-// wait( 3000 );
-// } catch ( InterruptedException e ) {
-// // swallow as this is just a notifiation
-// }
-// }
-//
-// if ( wait ) {
-// throw new RuntimeException("Timeout : unable to retrieve Task Id" );
-// }
-//
-// return taskId;
-// }
-// }
+public class WSHumanTaskHandler implements WorkItemHandler {
+ private String ipAddress = "127.0.0.1";
+ private int port = 9123;
+ private MinaTaskClient client;
+ private Map<Long, WorkItemManager> managers = new HashMap<Long, WorkItemManager>();
+
+ public void setConnection(String ipAddress, int port) {
+ this.ipAddress = ipAddress;
+ this.port = port;
+ }
+
+ private void createClient() {
+ client = new MinaTaskClient(
+ "org.drools.process.workitem.wsht.WSHumanTaskHandler", new TaskClientHandler());
+ NioSocketConnector connector = new NioSocketConnector();
+ SocketAddress address = new InetSocketAddress(ipAddress, port);
+ client.connect(connector, address);
+ }
+
+ public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+ if (client == null) {
+ createClient();
+ }
+ Task task = new Task();
+ String taskName = (String) workItem.getParameter("TaskName");
+ if (taskName != null) {
+ List<I18NText> names = new ArrayList<I18NText>();
+ names.add(new I18NText("en-UK", taskName));
+ task.setNames(names);
+ }
+ String comment = (String) workItem.getParameter("Comment");
+ if (comment != null) {
+ List<I18NText> descriptions = new ArrayList<I18NText>();
+ descriptions.add(new I18NText("en-UK", comment));
+ task.setDescriptions(descriptions);
+ List<I18NText> subjects = new ArrayList<I18NText>();
+ subjects.add(new I18NText("en-UK", comment));
+ task.setSubjects(subjects);
+ }
+ String priority = (String) workItem.getParameter("Priority");
+ if (priority != null) {
+ try {
+ task.setPriority(new Integer(priority));
+ } catch (NumberFormatException e) {
+ // do nothing
+ }
+ }
+ TaskData taskData = new TaskData();
+ taskData.setWorkItemId(workItem.getId());
+ task.setTaskData(taskData);
+ String actorId = (String) workItem.getParameter("ActorId");
+ if (actorId != null) {
+ PeopleAssignments assignments = new PeopleAssignments();
+ List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>();
+ User user = new User();
+ user.setId(actorId);
+ potentialOwners.add(user);
+ assignments.setPotentialOwners(potentialOwners);
+ task.setPeopleAssignments(assignments);
+ }
+
+ BlockingAddTaskResponseHandler taskResponseHandler = new BlockingAddTaskResponseHandler();
+ client.addTask(task, taskResponseHandler);
+ long taskId = taskResponseHandler.getTaskId();
+ managers.put(taskId, manager);
+ System.out.println("Created task " + taskId + " for work item " + workItem.getId());
+
+ new Thread(new WaitForEvent(taskId)).run();
+ }
+
+ public void dispose() {
+ if (client != null) {
+ client.disconnect();
+ }
+ }
+
+ public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+ // TODO
+ }
+
+ private class WaitForEvent implements Runnable {
+ private long taskId;
+ public WaitForEvent(long taskId) {
+ this.taskId = taskId;
+ }
+ public void run() {
+ EventKey key = new TaskEventKey(TaskCompletedEvent.class, taskId );
+ BlockingEventResponseHandler eventResponseHandler = new BlockingEventResponseHandler();
+ client.registerForEvent( key, true, eventResponseHandler );
+ eventResponseHandler.getPayload();
+
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask(taskId, getTaskResponseHandler);
+ Task task = getTaskResponseHandler.getTask();
+ long workItemId = task.getTaskData().getWorkItemId();
+ System.out.println("Completing work item " + workItemId);
+
+ managers.get(taskId).completeWorkItem(workItemId, null);
+ }
+ }
+
}
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/DefaultTaskEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/DefaultTaskEventListener.java 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/DefaultTaskEventListener.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -5,7 +5,7 @@
public void taskClaimed(TaskClaimedEvent event) {
}
- public void taskClosed(TaskClosedEvent event) {
+ public void taskCompleted(TaskCompletedEvent event) {
}
}
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/MessagingTaskEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/MessagingTaskEventListener.java 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/MessagingTaskEventListener.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -34,8 +34,8 @@
}
}
- public void taskClosed(TaskClosedEvent event) {
- EventKey key = new TaskEventKey(TaskClosedEvent.class, event.getTaskId() );
+ public void taskCompleted(TaskCompletedEvent event) {
+ EventKey key = new TaskEventKey(TaskCompletedEvent.class, event.getTaskId() );
List<EventTriggerTransport> targets = keys.getTargets( key );
if ( targets == null ){
return;
Deleted: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskClosedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskClosedEvent.java 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskClosedEvent.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -1,29 +0,0 @@
-package org.drools.task.event;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-public class TaskClosedEvent extends TaskEvent implements Externalizable {
- private String userId;
-
- public TaskClosedEvent(long taskId, String userId) {
- super( taskId );
- this.userId = userId;
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeUTF( userId );
- }
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- userId = in.readUTF();
- }
-
-
- public String getUserId() {
- return userId;
- }
-
-}
Copied: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskCompletedEvent.java (from rev 22778, labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskClosedEvent.java)
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskCompletedEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskCompletedEvent.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,35 @@
+package org.drools.task.event;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+public class TaskCompletedEvent extends TaskEvent implements Externalizable {
+
+ private String userId;
+
+ public TaskCompletedEvent() {
+
+ }
+
+ public TaskCompletedEvent(long taskId, String userId) {
+ super( taskId );
+ this.userId = userId;
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ super.writeExternal(out);
+ out.writeUTF( userId );
+ }
+
+ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ super.readExternal(in);
+ userId = in.readUTF();
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskCompletedEvent.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventListener.java 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventListener.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -24,6 +24,6 @@
void taskClaimed(TaskClaimedEvent event);
- void taskClosed(TaskClosedEvent event);
+ void taskCompleted(TaskCompletedEvent event);
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventSupport.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventSupport.java 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventSupport.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -17,19 +17,14 @@
*/
import java.io.Externalizable;
-import java.io.ObjectOutput;
import java.io.IOException;
import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
-import org.drools.WorkingMemory;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.spi.Activation;
-import org.drools.spi.AgendaGroup;
-
public class TaskEventSupport
implements
Externalizable {
@@ -73,26 +68,29 @@
}
public void fireTaskClaimed(final long taskId, final String userId) {
- if ( this.listeners.isEmpty() ) {
+ System.out.println("Task " + taskId + " claimed");
+ if ( this.listeners.isEmpty() ) {
return;
}
final TaskClaimedEvent event = new TaskClaimedEvent(taskId, userId);
for ( TaskEventListener listener: listeners) {
+ System.out.println("notifying listener " + listener);
listener.taskClaimed( event );
}
}
- public void fireTaskClosed(final long taskId, final String userId) {
+ public void fireTaskCompleted(final long taskId, final String userId) {
if ( this.listeners.isEmpty() ) {
return;
}
- final TaskClosedEvent event = new TaskClosedEvent( taskId, userId );
+ final TaskCompletedEvent event = new TaskCompletedEvent( taskId, userId );
for ( TaskEventListener listener: listeners) {
- listener.taskClosed( event );
+ System.out.println("notifying listener " + listener);
+ listener.taskCompleted( event );
}
}
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -16,7 +16,6 @@
import org.drools.task.Comment;
import org.drools.task.Content;
import org.drools.task.Deadline;
-import org.drools.task.Delegation;
import org.drools.task.Group;
import org.drools.task.OrganizationalEntity;
import org.drools.task.PeopleAssignments;
@@ -326,6 +325,13 @@
task.getTaskData().getActualOwner().getId() );
break;
}
+
+ case Complete : {
+ // trigger event support
+ service.getEventSupport().fireTaskCompleted( task.getId(),
+ task.getTaskData().getActualOwner().getId() );
+ break;
+ }
}
} catch ( Exception e ) {
Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/RunTaskService.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/RunTaskService.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/RunTaskService.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,107 @@
+package org.drools.task;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.Date;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.apache.commons.collections.map.HashedMap;
+import org.drools.task.service.MinaTaskServer;
+import org.drools.task.service.SendIcal;
+import org.drools.task.service.TaskService;
+import org.drools.task.service.TaskServiceSession;
+import org.mvel.MVEL;
+import org.mvel.ParserContext;
+import org.mvel.compiler.ExpressionCompiler;
+
+public class RunTaskService {
+
+ private EntityManagerFactory emf;
+ private TaskService taskService;
+ private TaskServiceSession taskSession;
+ private MinaTaskServer server;
+
+ public static void main(String[] args) throws Exception {
+ new RunTaskService().start();
+ }
+
+ @SuppressWarnings("unchecked")
+ private void start() throws Exception {
+ Properties conf = new Properties();
+ conf.setProperty("mail.smtp.host", "localhost");
+ conf.setProperty("mail.smtp.port", "2345");
+ conf.setProperty("from", "from at domain.com");
+ conf.setProperty("replyTo", "replyTo at domain.com");
+ conf.setProperty("defaultLanguage", "en-UK");
+ SendIcal.initInstance(conf);
+
+ // Use persistence.xml configuration
+ emf = Persistence.createEntityManagerFactory("org.drools.task");
+
+ taskService = new TaskService(emf);
+ taskSession = taskService.createSession();
+ MockUserInfo userInfo = new MockUserInfo();
+ taskService.setUserinfo(userInfo);
+ Map<String, Object> vars = new HashedMap();
+
+ Reader reader = new InputStreamReader(RunTaskService.class.getResourceAsStream("LoadUsers.mvel"));
+ Map<String, User> users = (Map<String, User>) eval(reader, vars);
+ for (User user : users.values()) {
+ taskSession.addUser(user);
+ }
+
+ reader = new InputStreamReader(RunTaskService.class.getResourceAsStream("LoadGroups.mvel"));
+ Map<String, Group> groups = (Map<String, Group>) eval(reader, vars);
+ for (Group group : groups.values()) {
+ taskSession.addGroup(group);
+ }
+
+ server = new MinaTaskServer( taskService );
+ Thread thread = new Thread( server );
+ thread.start();
+ Thread.sleep( 500 );
+ System.out.println("Server started ...");
+ }
+
+ protected void stop() throws Exception {
+ server.stop();
+ taskSession.dispose();
+ emf.close();
+ }
+
+ public Object eval(Reader reader, Map<String, Object> vars) {
+ try {
+ return eval(toString(reader), vars);
+ } catch (IOException e) {
+ throw new RuntimeException("Exception Thrown", e);
+ }
+ }
+
+ public String toString(Reader reader) throws IOException {
+ int charValue = 0;
+ StringBuffer sb = new StringBuffer(1024);
+ while ((charValue = reader.read()) != -1) {
+ // result = result + (char) charValue;
+ sb.append((char) charValue);
+ }
+ return sb.toString();
+ }
+
+ public Object eval(String str, Map<String, Object> vars) {
+ ExpressionCompiler compiler = new ExpressionCompiler(str.trim());
+
+ ParserContext context = new ParserContext();
+ context.addPackageImport("org.drools.task");
+ context.addPackageImport("org.drools.task.service");
+ context.addPackageImport("org.drools.task.query");
+ context.addPackageImport("java.util");
+
+ vars.put("now", new Date());
+ return MVEL.executeExpression(compiler.compile(context), vars);
+ }
+}
Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/BlockingTaskSummaryResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/BlockingTaskSummaryResponseHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/BlockingTaskSummaryResponseHandler.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,43 @@
+package org.drools.task.service;
+
+import java.util.List;
+
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.TaskClientHandler.TaskSummaryResponseHandler;
+
+public class BlockingTaskSummaryResponseHandler extends AbstractBlockingResponseHandler implements TaskSummaryResponseHandler {
+
+ private volatile List<TaskSummary> results;
+
+ public synchronized void execute(List<TaskSummary> results) {
+ synchronized ( this.done ) {
+ this.results = results;
+ this.done = true;
+ notifyAll();
+ }
+ }
+
+ public synchronized List<TaskSummary> getResults() {
+ boolean isDone;
+ synchronized ( done ) {
+ isDone = this.done;
+ }
+ if ( !isDone ) {
+ try {
+ wait( 10000 );
+ } catch ( InterruptedException e ) {
+ // swallow as this is just a notification
+ }
+ }
+ synchronized ( done ) {
+ isDone = this.done;
+ }
+ if ( !isDone ) {
+ throw new RuntimeException("Timeout : unable to retrieve results" );
+ }
+
+ return results;
+ }
+
+};
+
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/MockEventMessagingTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/MockEventMessagingTest.java 2008-09-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/MockEventMessagingTest.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -18,7 +18,7 @@
import org.drools.task.Task;
import org.drools.task.event.EventPayload;
import org.drools.task.event.TaskClaimedEvent;
-import org.drools.task.event.TaskClosedEvent;
+import org.drools.task.event.TaskCompletedEvent;
import org.drools.task.event.TaskEventKey;
import org.drools.task.service.MinaTaskClient;
import org.drools.task.service.MinaTaskServer;
Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskLifeCycleTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskLifeCycleTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskLifeCycleTest.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -0,0 +1,192 @@
+package org.drools.task.service;
+
+import java.io.StringReader;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections.map.HashedMap;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.eventmessaging.EventKey;
+import org.drools.eventmessaging.Payload;
+import org.drools.task.BaseTest;
+import org.drools.task.Status;
+import org.drools.task.Task;
+import org.drools.task.event.TaskCompletedEvent;
+import org.drools.task.event.TaskEventKey;
+import org.drools.task.query.TaskSummary;
+
+public class TaskLifeCycleTest extends BaseTest {
+
+ MinaTaskServer server;
+ MinaTaskClient client;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ server = new MinaTaskServer( taskService );
+ Thread thread = new Thread( server );
+ thread.start();
+ Thread.sleep( 500 );
+
+ client = new MinaTaskClient( "client 1",
+ new TaskClientHandler() );
+ NioSocketConnector connector = new NioSocketConnector();
+ SocketAddress address = new InetSocketAddress( "127.0.0.1",
+ 9123 );
+ client.connect( connector,
+ address );
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ client.disconnect();
+ server.stop();
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testLifeCycle() throws Exception {
+ Map<String, Object> 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()) { workItemId = 1 } ), ";
+ str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba']], }),";
+ str += "descriptions = [ new I18NText( 'en-UK', 'This is my description')], ";
+ str += "subjects = [ new I18NText( 'en-UK', 'This is my subject')], ";
+ 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();
+
+ EventKey key = new TaskEventKey(TaskCompletedEvent.class, taskId );
+ BlockingEventResponseHandler handler = new BlockingEventResponseHandler();
+ client.registerForEvent( key, true, handler );
+
+ BlockingTaskSummaryResponseHandler taskSummaryResponseHandler = new BlockingTaskSummaryResponseHandler();
+ client.getTasksAssignedAsPotentialOwner(users.get( "bobba" ).getId(), "en-UK", taskSummaryResponseHandler);
+ List<TaskSummary> tasks = taskSummaryResponseHandler.getResults();
+ assertEquals(1, tasks.size());
+ assertEquals(Status.Reserved, tasks.get(0).getStatus());
+
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.start( taskId, users.get( "bobba" ).getId(), responseHandler );
+
+ taskSummaryResponseHandler = new BlockingTaskSummaryResponseHandler();
+ client.getTasksAssignedAsPotentialOwner(users.get( "bobba" ).getId(), "en-UK", taskSummaryResponseHandler);
+ tasks = taskSummaryResponseHandler.getResults();
+ assertEquals(1, tasks.size());
+ assertEquals(Status.InProgress, tasks.get(0).getStatus());
+
+ responseHandler = new BlockingTaskOperationResponseHandler();
+ client.complete( taskId, users.get( "bobba" ).getId(), responseHandler );
+
+ taskSummaryResponseHandler = new BlockingTaskSummaryResponseHandler();
+ client.getTasksAssignedAsPotentialOwner(users.get( "bobba" ).getId(), "en-UK", taskSummaryResponseHandler);
+ tasks = taskSummaryResponseHandler.getResults();
+ assertEquals(1, tasks.size());
+ assertEquals(Status.Completed, tasks.get(0).getStatus());
+
+ Payload payload = handler.getPayload();
+ TaskCompletedEvent event = ( TaskCompletedEvent ) payload.get();
+ assertNotNull( event );
+
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ Task task1 = getTaskResponseHandler.getTask();
+ assertEquals( Status.Completed , task1.getTaskData().getStatus() );
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testLifeCycleMultipleTasks() throws Exception {
+ Map<String, Object> 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()) { workItemId = 1 } ), ";
+ str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba']], }),";
+ str += "descriptions = [ new I18NText( 'en-UK', 'This is my description')], ";
+ str += "subjects = [ new I18NText( 'en-UK', 'This is my subject')], ";
+ 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();
+
+ EventKey key = new TaskEventKey(TaskCompletedEvent.class, taskId );
+ BlockingEventResponseHandler handler = new BlockingEventResponseHandler();
+ client.registerForEvent( key, true, handler );
+
+ BlockingTaskSummaryResponseHandler taskSummaryResponseHandler = new BlockingTaskSummaryResponseHandler();
+ client.getTasksAssignedAsPotentialOwner(users.get( "bobba" ).getId(), "en-UK", taskSummaryResponseHandler);
+ List<TaskSummary> tasks = taskSummaryResponseHandler.getResults();
+ assertEquals(1, tasks.size());
+ assertEquals(Status.Reserved, tasks.get(0).getStatus());
+
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.start( taskId, users.get( "bobba" ).getId(), responseHandler );
+
+ taskSummaryResponseHandler = new BlockingTaskSummaryResponseHandler();
+ client.getTasksAssignedAsPotentialOwner(users.get( "bobba" ).getId(), "en-UK", taskSummaryResponseHandler);
+ tasks = taskSummaryResponseHandler.getResults();
+ assertEquals(1, tasks.size());
+ assertEquals(Status.InProgress, tasks.get(0).getStatus());
+
+ BlockingAddTaskResponseHandler addTaskResponseHandler2 = new BlockingAddTaskResponseHandler();
+ Task task2 = ( Task ) eval( new StringReader( str ), vars );
+ client.addTask( task2, addTaskResponseHandler2 );
+ long taskId2 = addTaskResponseHandler.getTaskId();
+
+ EventKey key2 = new TaskEventKey(TaskCompletedEvent.class, taskId2 );
+ BlockingEventResponseHandler handler2 = new BlockingEventResponseHandler();
+ client.registerForEvent( key2, true, handler2 );
+
+ taskSummaryResponseHandler = new BlockingTaskSummaryResponseHandler();
+ client.getTasksAssignedAsPotentialOwner(users.get( "bobba" ).getId(), "en-UK", taskSummaryResponseHandler);
+ tasks = taskSummaryResponseHandler.getResults();
+ assertEquals(2, tasks.size());
+
+ responseHandler = new BlockingTaskOperationResponseHandler();
+ client.complete( taskId, users.get( "bobba" ).getId(), responseHandler );
+
+ responseHandler = new BlockingTaskOperationResponseHandler();
+ client.start( taskId2, users.get( "bobba" ).getId(), responseHandler );
+
+ taskSummaryResponseHandler = new BlockingTaskSummaryResponseHandler();
+ client.getTasksAssignedAsPotentialOwner(users.get( "bobba" ).getId(), "en-UK", taskSummaryResponseHandler);
+ tasks = taskSummaryResponseHandler.getResults();
+ assertEquals(2, tasks.size());
+
+ Payload payload = handler.getPayload();
+ TaskCompletedEvent event = ( TaskCompletedEvent ) payload.get();
+ assertNotNull( event );
+
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId, getTaskResponseHandler );
+ task = getTaskResponseHandler.getTask();
+ assertEquals( Status.Completed , task.getTaskData().getStatus() );
+
+ responseHandler = new BlockingTaskOperationResponseHandler();
+ client.complete( taskId2, users.get( "bobba" ).getId(), responseHandler );
+
+ payload = handler.getPayload();
+ event = ( TaskCompletedEvent ) payload.get();
+ assertNotNull( event );
+
+ BlockingGetTaskResponseHandler getTaskResponseHandler2 = new BlockingGetTaskResponseHandler();
+ client.getTask( taskId2, getTaskResponseHandler2 );
+ task2 = getTaskResponseHandler2.getTask();
+ assertEquals( Status.Completed , task2.getTaskData().getStatus() );
+ }
+
+}
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-24 10:50:10 UTC (rev 23046)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java 2008-09-24 13:37:13 UTC (rev 23047)
@@ -1,40 +1,17 @@
package org.drools.task.service;
-import java.io.InputStreamReader;
-import java.io.Reader;
import java.io.StringReader;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
-import java.util.ArrayList;
import java.util.Date;
-import java.util.List;
import java.util.Map;
-import javax.persistence.EntityManager;
-
import org.apache.commons.collections.map.HashedMap;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
-import org.drools.task.AccessType;
-import org.drools.task.Attachment;
-import org.drools.task.Content;
import org.drools.task.BaseTest;
-import org.drools.task.Comment;
-import org.drools.task.Deadline;
import org.drools.task.Status;
import org.drools.task.Task;
-import org.drools.task.query.TaskSummary;
-import org.drools.task.service.TaskClientHandler.AddAttachmentResponseHandler;
-import org.drools.task.service.TaskClientHandler.AddCommentResponseHandler;
-import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
-import org.drools.task.service.TaskClientHandler.GetContentResponseHandler;
-import org.drools.task.service.TaskClientHandler.GetTaskResponseHandler;
-import org.drools.task.service.TaskClientHandler.TaskSummaryResponseHandler;
-import org.drools.task.service.TaskServiceEscalationTest.MockEscalatedDeadlineHandler.Item;
-import org.drools.task.service.TaskServiceTest.BlockingAllOpenTasksForUseResponseHandler;
-import org.drools.task.utils.CollectionUtils;
-import junit.framework.TestCase;
-
public class TaskServiceLifeCycleTest extends BaseTest {
MinaTaskServer server;
MinaTaskClient client;
More information about the jboss-svn-commits
mailing list