[jboss-svn-commits] JBL Code SVN: r32485 - in labs/jbossrules/trunk/drools-process/drools-process-task: src/main/java/org/drools/process/workitem/wsht and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Apr 9 11:23:29 EDT 2010
Author: KrisVerlaenen
Date: 2010-04-09 11:23:27 -0400 (Fri, 09 Apr 2010)
New Revision: 32485
Removed:
labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/CommandBasedWSHumanTaskHandlerTest.java
Modified:
labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/CommandBasedWSHumanTaskHandler.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/MessagingTaskEventListener.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventKey.java
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/TaskClientHandler.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/TaskServiceSession.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBlockingResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddAttachmentResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddCommentResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddTaskResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteAttachmentResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteCommentResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingEventResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetContentResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetTaskResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingSetContentResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskOperationResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskSummaryResponseHandler.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml
Log:
JBRULES-2471: Human task handler does not support restarting session for already created tasks
- reverted commit as it makes tests unstable, need to investigate first
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml 2010-04-09 15:23:27 UTC (rev 32485)
@@ -61,7 +61,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.1.117</version>
+ <version>1.0.77</version>
<scope>test</scope>
</dependency>
<dependency>
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/CommandBasedWSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/CommandBasedWSHumanTaskHandler.java 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/CommandBasedWSHumanTaskHandler.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -14,6 +14,7 @@
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.drools.SystemEventListenerFactory;
+import org.drools.eventmessaging.EventKey;
import org.drools.eventmessaging.EventResponseHandler;
import org.drools.eventmessaging.Payload;
import org.drools.runtime.KnowledgeRuntime;
@@ -26,7 +27,6 @@
import org.drools.task.I18NText;
import org.drools.task.OrganizationalEntity;
import org.drools.task.PeopleAssignments;
-import org.drools.task.Status;
import org.drools.task.SubTasksStrategy;
import org.drools.task.SubTasksStrategyFactory;
import org.drools.task.Task;
@@ -40,6 +40,7 @@
import org.drools.task.service.ContentData;
import org.drools.task.service.MinaTaskClient;
import org.drools.task.service.TaskClientHandler;
+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.responsehandlers.AbstractBaseResponseHandler;
@@ -50,6 +51,7 @@
private int port = 9123;
private MinaTaskClient client;
private KnowledgeRuntime session;
+ private Map<Long, Long> idMapping = new HashMap<Long, Long>();
public CommandBasedWSHumanTaskHandler(KnowledgeRuntime session) {
this.session = session;
@@ -73,13 +75,6 @@
"Could not connect task client");
}
}
- TaskEventKey key = new TaskEventKey(TaskCompletedEvent.class, -1);
- TaskCompletedHandler eventResponseHandler = new TaskCompletedHandler();
- client.registerForEvent(key, true, eventResponseHandler);
- key = new TaskEventKey(TaskFailedEvent.class, -1);
- client.registerForEvent(key, true, eventResponseHandler);
- key = new TaskEventKey(TaskSkippedEvent.class, -1);
- client.registerForEvent(key, true, eventResponseHandler);
}
public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
@@ -183,7 +178,9 @@
e.printStackTrace();
}
}
- client.addTask(task, content, null);
+ TaskWorkItemAddTaskResponseHandler taskResponseHandler =
+ new TaskWorkItemAddTaskResponseHandler(this.client, workItem.getId());
+ client.addTask(task, content, taskResponseHandler);
}
public void dispose() {
@@ -193,18 +190,62 @@
}
public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
- GetTaskResponseHandler abortTaskResponseHandler = new AbortTaskResponseHandler();
- client.getTaskByWorkItemId(workItem.getId(), abortTaskResponseHandler);
+ Long taskId = idMapping.get(workItem.getId());
+ if (taskId != null) {
+ synchronized (idMapping) {
+ idMapping.remove(taskId);
+ }
+ client.skip(taskId, "Administrator", null);
+ }
}
+
+ public class TaskWorkItemAddTaskResponseHandler extends AbstractBaseResponseHandler implements AddTaskResponseHandler {
+
+ private long workItemId;
+
+ public TaskWorkItemAddTaskResponseHandler(MinaTaskClient client, long workItemId) {
+ this.workItemId = workItemId;
+ }
+
+ public void execute(long taskId) {
+ synchronized ( idMapping ) {
+ idMapping.put(workItemId, taskId);
+ }
+// System.out.println("Created task " + taskId + " for work item " + workItemId);
+
+ EventKey key = new TaskEventKey(TaskCompletedEvent.class, taskId );
+ TaskCompletedHandler eventResponseHandler =
+ new TaskCompletedHandler(workItemId, taskId);
+ client.registerForEvent( key, true, eventResponseHandler );
+ key = new TaskEventKey(TaskFailedEvent.class, taskId );
+ client.registerForEvent( key, true, eventResponseHandler );
+ key = new TaskEventKey(TaskSkippedEvent.class, taskId );
+ client.registerForEvent( key, true, eventResponseHandler );
+ }
+ }
private class TaskCompletedHandler extends AbstractBaseResponseHandler implements EventResponseHandler {
+ private long workItemId;
+ private long taskId;
+ public TaskCompletedHandler(long workItemId, long taskId) {
+ this.workItemId = workItemId;
+ this.taskId = taskId;
+ }
+
public void execute(Payload payload) {
TaskEvent event = ( TaskEvent ) payload.get();
- long taskId = event.getTaskId();
- GetTaskResponseHandler getTaskResponseHandler =
- new GetCompletedTaskResponseHandler();
- client.getTask(taskId, getTaskResponseHandler);
+ if ( event.getTaskId() != taskId ) {
+ // defensive check that should never happen, just here for testing
+ setError(new IllegalStateException("Expected task id and arrived task id do not march"));
+ return;
+ }
+ if (event instanceof TaskCompletedEvent) {
+ GetTaskResponseHandler getTaskResponseHandler = new GetCompletedTaskResponseHandler();
+ client.getTask(taskId, getTaskResponseHandler);
+ } else {
+ session.getWorkItemManager().abortWorkItem(workItemId);
+ }
}
}
@@ -212,22 +253,16 @@
public void execute(Task task) {
long workItemId = task.getTaskData().getWorkItemId();
- if (task.getTaskData().getStatus() == Status.Completed) {
- System.out.println("Notification of completed task " + workItemId);
- String userId = task.getTaskData().getActualOwner().getId();
- Map<String, Object> results = new HashMap<String, Object>();
- results.put("ActorId", userId);
- long contentId = task.getTaskData().getOutputContentId();
- if (contentId != -1) {
- GetContentResponseHandler getContentResponseHandler =
- new GetResultContentResponseHandler(task, results);
- client.getContent(contentId, getContentResponseHandler);
- } else {
- session.getWorkItemManager().completeWorkItem(workItemId, results);
- }
+ String userId = task.getTaskData().getActualOwner().getId();
+ Map<String, Object> results = new HashMap<String, Object>();
+ results.put("ActorId", userId);
+ long contentId = task.getTaskData().getOutputContentId();
+ if (contentId != -1) {
+ GetContentResponseHandler getContentResponseHandler =
+ new GetResultContentResponseHandler(task, results);
+ client.getContent(contentId, getContentResponseHandler);
} else {
- System.out.println("Notification of completed task " + workItemId);
- session.getWorkItemManager().abortWorkItem(workItemId);
+ session.getWorkItemManager().completeWorkItem(workItemId, results);
}
}
}
@@ -267,14 +302,4 @@
}
}
}
-
- private class AbortTaskResponseHandler extends AbstractBaseResponseHandler implements GetTaskResponseHandler {
-
- public void execute(Task task) {
- if (task != null) {
- client.skip(task.getId(), "Administrator", null);
- }
- }
- }
-
}
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-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -31,7 +31,8 @@
private String ipAddress = "127.0.0.1";
private int port = 9123;
private MinaTaskClient client;
- private WorkItemManager manager = null;
+ private Map<Long, WorkItemManager> managers = new HashMap<Long, WorkItemManager>();
+ private Map<Long, Long> idMapping = new HashMap<Long, Long>();
public void setConnection(String ipAddress, int port) {
this.ipAddress = ipAddress;
@@ -50,30 +51,10 @@
throw new IllegalArgumentException(
"Could not connect task client");
}
- TaskEventKey key = new TaskEventKey(TaskCompletedEvent.class, -1);
- TaskCompletedHandler eventResponseHandler =
- new TaskCompletedHandler(manager, client);
- client.registerForEvent(key, true, eventResponseHandler);
- key = new TaskEventKey(TaskFailedEvent.class, -1);
- client.registerForEvent(key, true, eventResponseHandler);
- key = new TaskEventKey(TaskSkippedEvent.class, -1);
- client.registerForEvent(key, true, eventResponseHandler);
}
}
-
- public void setManager(WorkItemManager manager) {
- this.manager = manager;
- }
public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
- if (this.manager == null) {
- this.manager = manager;
- } else {
- if (this.manager != manager) {
- throw new IllegalArgumentException(
- "This WSHumanTaskHandler can only be used for one WorkItemManager");
- }
- }
connect();
Task task = new Task();
String taskName = (String) workItem.getParameter("TaskName");
@@ -174,7 +155,10 @@
e.printStackTrace();
}
}
- client.addTask(task, content, null);
+ TaskWorkItemAddTaskResponseHandler taskResponseHandler =
+ new TaskWorkItemAddTaskResponseHandler(this.client, this.managers,
+ this.idMapping, manager, workItem.getId());
+ client.addTask(task, content, taskResponseHandler);
}
public void dispose() {
@@ -184,26 +168,93 @@
}
public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
- GetTaskResponseHandler abortTaskResponseHandler =
- new AbortTaskResponseHandler(client);
- client.getTaskByWorkItemId(workItem.getId(), abortTaskResponseHandler);
+ Long taskId = idMapping.get(workItem.getId());
+ if (taskId != null) {
+ synchronized (idMapping) {
+ idMapping.remove(taskId);
+ }
+ synchronized (managers) {
+ managers.remove(taskId);
+ }
+ client.skip(taskId, "Administrator", null);
+ }
}
+
+ public static class TaskWorkItemAddTaskResponseHandler extends AbstractBaseResponseHandler implements AddTaskResponseHandler {
+ private Map<Long, WorkItemManager> managers;
+ private Map<Long, Long> idMapping;
+ private WorkItemManager manager;
+ private long workItemId;
+ private MinaTaskClient client;
+
+ public TaskWorkItemAddTaskResponseHandler(MinaTaskClient client,
+ Map<Long, WorkItemManager> managers, Map<Long, Long> idMapping,
+ WorkItemManager manager, long workItemId) {
+ this.client = client;
+ this.managers = managers;
+ this.idMapping = idMapping;
+ this.manager = manager;
+ this.workItemId = workItemId;
+ }
+
+ public void execute(long taskId) {
+ synchronized ( managers ) {
+ managers.put(taskId, this.manager);
+ }
+ synchronized ( idMapping ) {
+ idMapping.put(workItemId, taskId);
+ }
+// System.out.println("Created task " + taskId + " for work item " + workItemId);
+
+ EventKey key = new TaskEventKey(TaskCompletedEvent.class, taskId );
+ TaskCompletedHandler eventResponseHandler =
+ new TaskCompletedHandler(workItemId, taskId, managers, client);
+ client.registerForEvent( key, true, eventResponseHandler );
+ key = new TaskEventKey(TaskFailedEvent.class, taskId );
+ client.registerForEvent( key, true, eventResponseHandler );
+ key = new TaskEventKey(TaskSkippedEvent.class, taskId );
+ client.registerForEvent( key, true, eventResponseHandler );
+ }
+ }
private static class TaskCompletedHandler extends AbstractBaseResponseHandler implements EventResponseHandler {
- private WorkItemManager manager;
+ private long workItemId;
+ private long taskId;
+ private Map<Long, WorkItemManager> managers;
private MinaTaskClient client;
- public TaskCompletedHandler(WorkItemManager manager, MinaTaskClient client) {
- this.manager = manager;
+ public TaskCompletedHandler(long workItemId, long taskId, Map<Long, WorkItemManager> managers,
+ MinaTaskClient client) {
+ this.workItemId = workItemId;
+ this.taskId = taskId;
+ this.managers = managers;
this.client = client;
}
public void execute(Payload payload) {
TaskEvent event = ( TaskEvent ) payload.get();
- long taskId = event.getTaskId();
- GetTaskResponseHandler getTaskResponseHandler =
- new GetCompletedTaskResponseHandler(manager, client);
- client.getTask(taskId, getTaskResponseHandler);
+ if ( event.getTaskId() != taskId ) {
+ // defensive check that should never happen, just here for testing
+ setError(new IllegalStateException("Expected task id and arrived task id do not march"));
+ return;
+ }
+ if (event instanceof TaskCompletedEvent) {
+ synchronized ( this.managers ) {
+ WorkItemManager manager = this.managers.get(taskId);
+ if (manager != null) {
+ GetTaskResponseHandler getTaskResponseHandler =
+ new GetCompletedTaskResponseHandler(manager, client);
+ client.getTask(taskId, getTaskResponseHandler);
+ }
+ }
+ } else {
+ synchronized ( this.managers ) {
+ WorkItemManager manager = this.managers.get(taskId);
+ if (manager != null) {
+ manager.abortWorkItem(workItemId);
+ }
+ }
+ }
}
}
@@ -219,20 +270,16 @@
public void execute(Task task) {
long workItemId = task.getTaskData().getWorkItemId();
- if (task.getTaskData().getStatus() == Status.Completed) {
- String userId = task.getTaskData().getActualOwner().getId();
- Map<String, Object> results = new HashMap<String, Object>();
- results.put("ActorId", userId);
- long contentId = task.getTaskData().getOutputContentId();
- if (contentId != -1) {
- GetContentResponseHandler getContentResponseHandler =
- new GetResultContentResponseHandler(manager, task, results);
- client.getContent(contentId, getContentResponseHandler);
- } else {
- manager.completeWorkItem(workItemId, results);
- }
+ String userId = task.getTaskData().getActualOwner().getId();
+ Map<String, Object> results = new HashMap<String, Object>();
+ results.put("ActorId", userId);
+ long contentId = task.getTaskData().getOutputContentId();
+ if (contentId != -1) {
+ GetContentResponseHandler getContentResponseHandler =
+ new GetResultContentResponseHandler(manager, task, results);
+ client.getContent(contentId, getContentResponseHandler);
} else {
- manager.abortWorkItem(workItemId);
+ manager.completeWorkItem(workItemId, results);
}
}
}
@@ -273,20 +320,4 @@
}
}
}
-
- private static class AbortTaskResponseHandler extends AbstractBaseResponseHandler implements GetTaskResponseHandler {
-
- private MinaTaskClient client;
-
- public AbortTaskResponseHandler(MinaTaskClient client) {
- this.client = client;
- }
-
- public void execute(Task task) {
- if (task != null) {
- client.skip(task.getId(), "Administrator", null);
- }
- }
- }
-
}
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 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/MessagingTaskEventListener.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -39,18 +39,8 @@
EventKey key = new TaskEventKey(TaskCompletedEvent.class, event.getTaskId() );
List<EventTriggerTransport> targets = keys.getTargets( key );
if ( targets == null ){
- key = new TaskEventKey(TaskCompletedEvent.class, -1);
- targets = keys.getTargets( key );
- if (targets == null) {
- return;
- }
- } else {
- key = new TaskEventKey(TaskCompletedEvent.class, -1);
- List<EventTriggerTransport> additionalTargets = keys.getTargets( key );
- if (additionalTargets != null) {
- targets.addAll(additionalTargets);
- }
- }
+ return;
+ }
Payload payload = new EventPayload( event );
for ( Iterator<EventTriggerTransport> it = targets.iterator(); it.hasNext(); ) {
EventTriggerTransport target = it.next();
@@ -68,17 +58,7 @@
EventKey key = new TaskEventKey(TaskFailedEvent.class, event.getTaskId() );
List<EventTriggerTransport> targets = keys.getTargets( key );
if ( targets == null ){
- key = new TaskEventKey(TaskFailedEvent.class, -1);
- targets = keys.getTargets( key );
- if (targets == null) {
- return;
- }
- } else {
- key = new TaskEventKey(TaskFailedEvent.class, -1);
- List<EventTriggerTransport> additionalTargets = keys.getTargets( key );
- if (additionalTargets != null) {
- targets.addAll(additionalTargets);
- }
+ return;
}
Payload payload = new EventPayload( event );
for ( Iterator<EventTriggerTransport> it = targets.iterator(); it.hasNext(); ) {
@@ -97,17 +77,7 @@
EventKey key = new TaskEventKey(TaskSkippedEvent.class, event.getTaskId() );
List<EventTriggerTransport> targets = keys.getTargets( key );
if ( targets == null ){
- key = new TaskEventKey(TaskSkippedEvent.class, -1);
- targets = keys.getTargets( key );
- if (targets == null) {
- return;
- }
- } else {
- key = new TaskEventKey(TaskSkippedEvent.class, -1);
- List<EventTriggerTransport> additionalTargets = keys.getTargets( key );
- if (additionalTargets != null) {
- targets.addAll(additionalTargets);
- }
+ return;
}
Payload payload = new EventPayload( event );
for ( Iterator<EventTriggerTransport> it = targets.iterator(); it.hasNext(); ) {
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventKey.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventKey.java 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventKey.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -10,7 +10,7 @@
public class TaskEventKey implements EventKey, Externalizable {
private Class<? extends TaskEvent> event;
- private long taskId = -1;
+ private long taskId;
public TaskEventKey() {
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 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -72,9 +72,6 @@
QueryTasksAssignedAsTaskStakeholder,
QueryTaskSummaryResponse,
- QueryTaskByWorkItemId,
- QueryTaskByWorkItemIdResponse,
-
RegisterForEventRequest,
EventTriggerResponse,
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 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -367,18 +367,6 @@
session.write( cmd );
}
- public void getTaskByWorkItemId(long workItemId,
- GetTaskResponseHandler responseHandler) {
- List<Object> args = new ArrayList<Object>(1);
- args.add(workItemId);
- Command cmd = new Command( counter.getAndIncrement(),
- CommandName.QueryTaskByWorkItemId,
- args);
- handler.addResponseHandler( cmd.getId(),
- responseHandler);
- session.write(cmd);
- }
-
public void getTasksAssignedAsBusinessAdministrator(String userId,
String language,
TaskSummaryResponseHandler responseHandler) {
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskClientHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskClientHandler.java 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskClientHandler.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -165,18 +165,6 @@
}
break;
}
- case QueryTaskByWorkItemIdResponse: {
- GetTaskResponseHandler responseHandler = (GetTaskResponseHandler) responseHandlers.remove(cmd.getId());
- if (responseHandler != null) {
- if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
- responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
- } else {
- Task result = (Task) cmd.getArguments().get(0);
- responseHandler.execute(result);
- }
- }
- break;
- }
case EventTriggerResponse: {
EventResponseHandler responseHandler = (EventResponseHandler) responseHandlers.remove(cmd.getId());
if (responseHandler != null) {
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 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -180,17 +180,6 @@
session.write(resultsCmnd);
break;
}
- case QueryTaskByWorkItemId: {
- response = CommandName.QueryTaskByWorkItemIdResponse;
- Task result = taskSession.getTaskByWorkItemId((Long) cmd.getArguments().get(0));
- List args = new ArrayList(1);
- args.add(result);
- Command resultsCmnd = new Command(cmd.getId(),
- CommandName.QueryTaskByWorkItemIdResponse,
- args);
- session.write(resultsCmnd);
- break;
- }
case QueryTasksOwned: {
response = CommandName.QueryTaskSummaryResponse;
List<TaskSummary> results = taskSession.getTasksOwned((String) cmd.getArguments().get(0),
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 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -490,13 +490,6 @@
return (List<DeadlineSummary>) em.createNamedQuery("UnescalatedDeadlines").getResultList();
}
- public Task getTaskByWorkItemId(final long workItemId) {
- final Query task = em.createNamedQuery("TaskByWorkItemId");
- task.setParameter("workItemId", workItemId);
-
- return (Task) task.getSingleResult();
- }
-
public List<TaskSummary> getTasksOwned(final String userId, final String language) {
final Query tasksOwned = em.createNamedQuery("TasksOwned");
tasksOwned.setParameter("userId", userId);
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBlockingResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddAttachmentResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddCommentResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddTaskResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteAttachmentResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteCommentResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingEventResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetContentResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetTaskResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingSetContentResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskOperationResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskSummaryResponseHandler.java
___________________________________________________________________
Name: svn:mergeinfo
-
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml 2010-04-09 15:23:27 UTC (rev 32485)
@@ -532,15 +532,4 @@
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
- <named-query name="TaskByWorkItemId">
- <query>
-select
- t
-from
- Task t
-where
- t.taskData.workItemId = :workItemId
- </query>
- <!-- hint name="org.hibernate.timeout" value="200"/ -->
- </named-query>
</entity-mappings>
Deleted: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/CommandBasedWSHumanTaskHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/CommandBasedWSHumanTaskHandlerTest.java 2010-04-09 15:08:54 UTC (rev 32484)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/CommandBasedWSHumanTaskHandlerTest.java 2010-04-09 15:23:27 UTC (rev 32485)
@@ -1,776 +0,0 @@
-package org.drools.process.workitem.wsht;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import org.apache.mina.transport.socket.nio.NioSocketConnector;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.SystemEventListenerFactory;
-import org.drools.WorkingMemory;
-import org.drools.impl.EnvironmentFactory;
-import org.drools.process.instance.WorkItem;
-import org.drools.process.instance.WorkItemManagerFactory;
-import org.drools.process.instance.impl.WorkItemImpl;
-import org.drools.runtime.KnowledgeSessionConfiguration;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.process.WorkItemHandler;
-import org.drools.task.AccessType;
-import org.drools.task.BaseTest;
-import org.drools.task.Status;
-import org.drools.task.Task;
-import org.drools.task.query.TaskSummary;
-import org.drools.task.service.ContentData;
-import org.drools.task.service.MinaTaskClient;
-import org.drools.task.service.MinaTaskServer;
-import org.drools.task.service.PermissionDeniedException;
-import org.drools.task.service.TaskClientHandler;
-import org.drools.task.service.responsehandlers.BlockingGetContentResponseHandler;
-import org.drools.task.service.responsehandlers.BlockingGetTaskResponseHandler;
-import org.drools.task.service.responsehandlers.BlockingTaskOperationResponseHandler;
-import org.drools.task.service.responsehandlers.BlockingTaskSummaryResponseHandler;
-
-public class CommandBasedWSHumanTaskHandlerTest extends BaseTest {
- private static final int DEFAULT_WAIT_TIME = 5000;
- private static final int MANAGER_COMPLETION_WAIT_TIME = DEFAULT_WAIT_TIME;
- private static final int MANAGER_ABORT_WAIT_TIME = DEFAULT_WAIT_TIME;
-
- MinaTaskServer server;
- MinaTaskClient client;
- CommandBasedWSHumanTaskHandler handler;
- StatefulKnowledgeSession ksession;
-
- @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(SystemEventListenerFactory.getSystemEventListener()));
- NioSocketConnector connector = new NioSocketConnector();
- SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
- client.connect(connector, address);
-
- Properties properties = new Properties();
- properties.setProperty("drools.workItemManagerFactory",
- "org.drools.process.workitem.wsht.CommandBasedWSHumanTaskHandlerTest$TestWorkItemManagerFactory");
- KnowledgeSessionConfiguration conf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(properties);
- ksession = KnowledgeBaseFactory.newKnowledgeBase().newStatefulKnowledgeSession(conf, EnvironmentFactory.newEnvironment());
- handler = new CommandBasedWSHumanTaskHandler(ksession);
- }
-
- protected void tearDown() throws Exception {
- handler.dispose();
- client.disconnect();
- server.stop();
- super.tearDown();
- }
-
- public void testTask() throws Exception {
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskName");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
- TaskSummary task = tasks.get(0);
- assertEquals("TaskName", task.getName());
- assertEquals(10, task.getPriority());
- assertEquals("Comment", task.getDescription());
- assertEquals(Status.Reserved, task.getStatus());
- assertEquals("Darth Vader", task.getActualOwner().getId());
-
- System.out.println("Starting task " + task.getId());
- BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(task.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started task " + task.getId());
-
- System.out.println("Completing task " + task.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.complete(task.getId(), "Darth Vader", null, operationResponseHandler);
- operationResponseHandler.waitTillDone(15000);
- System.out.println("Completed task " + task.getId());
-
- assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
- }
-
- public void testTaskMultipleActors() throws Exception {
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskName");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader, Dalai Lama");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
- TaskSummary task = tasks.get(0);
- assertEquals("TaskName", task.getName());
- assertEquals(10, task.getPriority());
- assertEquals("Comment", task.getDescription());
- assertEquals(Status.Ready, task.getStatus());
-
- System.out.println("Claiming task " + task.getId());
- BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.claim(task.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Claimed task " + task.getId());
-
- System.out.println("Starting task " + task.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(task.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started task " + task.getId());
-
- System.out.println("Completing task " + task.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.complete(task.getId(), "Darth Vader", null, operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Completed task " + task.getId());
-
- assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
- }
-
- public void testTaskGroupActors() throws Exception {
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskName");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("GroupId", "Crusaders");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- List<String> groupIds = new ArrayList<String>();
- groupIds.add("Crusaders");
- client.getTasksAssignedAsPotentialOwner(null, groupIds, "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
- TaskSummary taskSummary = tasks.get(0);
- assertEquals("TaskName", taskSummary.getName());
- assertEquals(10, taskSummary.getPriority());
- assertEquals("Comment", taskSummary.getDescription());
- assertEquals(Status.Ready, taskSummary.getStatus());
-
- System.out.println("Claiming task " + taskSummary.getId());
- BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.claim(taskSummary.getId(), "Darth Vader", operationResponseHandler);
- PermissionDeniedException denied = null;
- try {
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- } catch (PermissionDeniedException e) {
- denied = e;
- }
-
- assertNotNull("Should get permissed denied exception", denied);
- System.out.println("Claimed task " + taskSummary.getId());
-
- //Check if the parent task is InProgress
- BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(taskSummary.getId(), getTaskResponseHandler);
- Task task = getTaskResponseHandler.getTask();
- assertEquals(Status.Ready, task.getTaskData().getStatus());
- }
-
- public void testTaskSingleAndGroupActors() throws Exception {
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task One");
- workItem.setParameter("TaskName", "TaskNameOne");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("GroupId", "Crusaders");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- workItem = new WorkItemImpl();
- workItem.setName("Human Task Two");
- workItem.setParameter("TaskName", "TaskNameTwo");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- List<String> groupIds = new ArrayList<String>();
- groupIds.add("Crusaders");
- client.getTasksAssignedAsPotentialOwner("Darth Vader", groupIds, "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(2, tasks.size());
- }
-
- public void testTaskFail() throws Exception {
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskName");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
- TaskSummary task = tasks.get(0);
- assertEquals("TaskName", task.getName());
- assertEquals(10, task.getPriority());
- assertEquals("Comment", task.getDescription());
- assertEquals(Status.Reserved, task.getStatus());
- assertEquals("Darth Vader", task.getActualOwner().getId());
-
- System.out.println("Starting task " + task.getId());
- BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(task.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started task " + task.getId());
-
- System.out.println("Failing task " + task.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.fail(task.getId(), "Darth Vader", null, operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Failed task " + task.getId());
-
- assertTrue(manager.waitTillAborted(MANAGER_ABORT_WAIT_TIME));
- }
-
- public void testTaskSkip() throws Exception {
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskName");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
- TaskSummary task = tasks.get(0);
- assertEquals("TaskName", task.getName());
- assertEquals(10, task.getPriority());
- assertEquals("Comment", task.getDescription());
- assertEquals(Status.Reserved, task.getStatus());
- assertEquals("Darth Vader", task.getActualOwner().getId());
-
- System.out.println("Skipping task " + task.getId());
- BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.skip(task.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Skipped task " + task.getId());
-
- assertTrue(manager.waitTillAborted(MANAGER_ABORT_WAIT_TIME));
- }
-
- public void testTaskAbortSkippable() throws Exception {
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskName");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- handler.abortWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(0, tasks.size());
- }
-
- public void testTaskAbortNotSkippable() throws Exception {
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskName");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- workItem.setParameter("Skippable", "false");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
-
- handler.abortWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
- }
-
- public void testTaskData() throws Exception {
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskName");
- workItem.setParameter("Comment", "Comment");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- workItem.setParameter("Content", "This is the content");
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
- TaskSummary taskSummary = tasks.get(0);
- assertEquals("TaskName", taskSummary.getName());
- assertEquals(10, taskSummary.getPriority());
- assertEquals("Comment", taskSummary.getDescription());
- assertEquals(Status.Reserved, taskSummary.getStatus());
- assertEquals("Darth Vader", taskSummary.getActualOwner().getId());
-
- BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(taskSummary.getId(), getTaskResponseHandler);
- Task task = getTaskResponseHandler.getTask();
- assertEquals(AccessType.Inline, task.getTaskData().getDocumentAccessType());
- long contentId = task.getTaskData().getDocumentContentId();
- assertTrue(contentId != -1);
- BlockingGetContentResponseHandler getContentResponseHandler = new BlockingGetContentResponseHandler();
- client.getContent(contentId, getContentResponseHandler);
- ByteArrayInputStream bis = new ByteArrayInputStream(getContentResponseHandler.getContent().getContent());
- ObjectInputStream in = new ObjectInputStream(bis);
- Object data = in.readObject();
- in.close();
- assertEquals("This is the content", data);
-
- System.out.println("Starting task " + task.getId());
- BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(task.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started task " + task.getId());
-
- System.out.println("Completing task " + task.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- ContentData result = new ContentData();
- result.setAccessType(AccessType.Inline);
- result.setType("java.lang.String");
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(bos);
- out.writeObject("This is the result");
- out.close();
- result.setContent(bos.toByteArray());
- client.complete(task.getId(), "Darth Vader", result, operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Completed task " + task.getId());
-
- assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
- Map<String, Object> results = manager.getResults();
- assertNotNull(results);
- assertEquals("Darth Vader", results.get("ActorId"));
- assertEquals("This is the result", results.get("Result"));
- }
-
- public void testOnAllSubTasksEndParentEndStrategy() throws Exception {
-
- //Create the parent task
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskNameParent");
- workItem.setParameter("Comment", "CommentParent");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- //Set the subtask policy
- workItem.setParameter("SubTaskStrategies", "OnAllSubTasksEndParentEnd");
- handler.executeWorkItem(workItem, manager);
-
-
- Thread.sleep(500);
-
- //Test if the task is succesfully created
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
- TaskSummary task = tasks.get(0);
- assertEquals("TaskNameParent", task.getName());
- assertEquals(10, task.getPriority());
- assertEquals("CommentParent", task.getDescription());
- assertEquals(Status.Reserved, task.getStatus());
- assertEquals("Darth Vader", task.getActualOwner().getId());
-
- //Create the child task
- workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskNameChild1");
- workItem.setParameter("Comment", "CommentChild1");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- workItem.setParameter("ParentId", task.getId());
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- //Create the child task2
- workItem = new WorkItemImpl();
- workItem.setName("Human Task2");
- workItem.setParameter("TaskName", "TaskNameChild2");
- workItem.setParameter("Comment", "CommentChild2");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- workItem.setParameter("ParentId", task.getId());
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- //Start the parent task
- System.out.println("Starting task " + task.getId());
- BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(task.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started task " + task.getId());
-
- //Check if the parent task is InProgress
- BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(task.getId(), getTaskResponseHandler);
- Task parentTask = getTaskResponseHandler.getTask();
- assertEquals(Status.InProgress, parentTask.getTaskData().getStatus());
- assertEquals(users.get("darth"), parentTask.getTaskData().getActualOwner());
-
- //Get all the subtask created for the parent task based on the potential owner
- responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getSubTasksAssignedAsPotentialOwner(parentTask.getId(), "Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> subTasks = responseHandler.getResults();
- assertEquals(2, subTasks.size());
- TaskSummary subTaskSummary1 = subTasks.get(0);
- TaskSummary subTaskSummary2 = subTasks.get(1);
- assertNotNull(subTaskSummary1);
- assertNotNull(subTaskSummary2);
-
- //Starting the sub task 1
- System.out.println("Starting sub task " + subTaskSummary1.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started sub task " + subTaskSummary1.getId());
-
- //Starting the sub task 2
- System.out.println("Starting sub task " + subTaskSummary2.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(subTaskSummary2.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started sub task " + subTaskSummary2.getId());
-
- //Check if the child task 1 is InProgress
- getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(subTaskSummary1.getId(), getTaskResponseHandler);
- Task subTask1 = getTaskResponseHandler.getTask();
- assertEquals(Status.InProgress, subTask1.getTaskData().getStatus());
- assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
-
- //Check if the child task 2 is InProgress
- getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(subTaskSummary2.getId(), getTaskResponseHandler);
- Task subTask2 = getTaskResponseHandler.getTask();
- assertEquals(Status.InProgress, subTask2.getTaskData().getStatus());
- assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
-
- // Complete the child task 1
- System.out.println("Completing sub task " + subTask1.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.complete(subTask1.getId(), "Darth Vader", null, operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Completed sub task " + subTask1.getId());
-
- // Complete the child task 2
- System.out.println("Completing sub task " + subTask2.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.complete(subTask2.getId(), "Darth Vader", null, operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Completed sub task " + subTask2.getId());
-
- //Check if the child task 1 is Completed
-
- getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(subTask1.getId(), getTaskResponseHandler);
- subTask1 = getTaskResponseHandler.getTask();
- assertEquals(Status.Completed, subTask1.getTaskData().getStatus());
- assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
-
- //Check if the child task 2 is Completed
-
- getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(subTask2.getId(), getTaskResponseHandler);
- subTask2 = getTaskResponseHandler.getTask();
- assertEquals(Status.Completed, subTask2.getTaskData().getStatus());
- assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
-
- // Check is the parent task is Complete
- getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(parentTask.getId(), getTaskResponseHandler);
- parentTask = getTaskResponseHandler.getTask();
- assertEquals(Status.Completed, parentTask.getTaskData().getStatus());
- assertEquals(users.get("darth"), parentTask.getTaskData().getActualOwner());
-
- assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
- }
-
- public void testOnParentAbortAllSubTasksEndStrategy() throws Exception {
-
- //Create the parent task
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskNameParent");
- workItem.setParameter("Comment", "CommentParent");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- //Set the subtask policy
- workItem.setParameter("SubTaskStrategies", "OnParentAbortAllSubTasksEnd");
- handler.executeWorkItem(workItem, manager);
-
-
- Thread.sleep(500);
-
- //Test if the task is succesfully created
- BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> tasks = responseHandler.getResults();
- assertEquals(1, tasks.size());
- TaskSummary task = tasks.get(0);
- assertEquals("TaskNameParent", task.getName());
- assertEquals(10, task.getPriority());
- assertEquals("CommentParent", task.getDescription());
- assertEquals(Status.Reserved, task.getStatus());
- assertEquals("Darth Vader", task.getActualOwner().getId());
-
- //Create the child task
- workItem = new WorkItemImpl();
- workItem.setName("Human Task");
- workItem.setParameter("TaskName", "TaskNameChild1");
- workItem.setParameter("Comment", "CommentChild1");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- workItem.setParameter("ParentId", task.getId());
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- //Create the child task2
- workItem = new WorkItemImpl();
- workItem.setName("Human Task2");
- workItem.setParameter("TaskName", "TaskNameChild2");
- workItem.setParameter("Comment", "CommentChild2");
- workItem.setParameter("Priority", "10");
- workItem.setParameter("ActorId", "Darth Vader");
- workItem.setParameter("ParentId", task.getId());
- handler.executeWorkItem(workItem, manager);
-
- Thread.sleep(500);
-
- //Start the parent task
- System.out.println("Starting task " + task.getId());
- BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(task.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started task " + task.getId());
-
- //Check if the parent task is InProgress
- BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(task.getId(), getTaskResponseHandler);
- Task parentTask = getTaskResponseHandler.getTask();
- assertEquals(Status.InProgress, parentTask.getTaskData().getStatus());
- assertEquals(users.get("darth"), parentTask.getTaskData().getActualOwner());
-
- //Get all the subtask created for the parent task based on the potential owner
- responseHandler = new BlockingTaskSummaryResponseHandler();
- client.getSubTasksAssignedAsPotentialOwner(parentTask.getId(), "Darth Vader", "en-UK", responseHandler);
- List<TaskSummary> subTasks = responseHandler.getResults();
- assertEquals(2, subTasks.size());
- TaskSummary subTaskSummary1 = subTasks.get(0);
- TaskSummary subTaskSummary2 = subTasks.get(1);
- assertNotNull(subTaskSummary1);
- assertNotNull(subTaskSummary2);
-
- //Starting the sub task 1
- System.out.println("Starting sub task " + subTaskSummary1.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started sub task " + subTaskSummary1.getId());
-
- //Starting the sub task 2
- System.out.println("Starting sub task " + subTaskSummary2.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.start(subTaskSummary2.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Started sub task " + subTaskSummary2.getId());
-
- //Check if the child task 1 is InProgress
- getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(subTaskSummary1.getId(), getTaskResponseHandler);
- Task subTask1 = getTaskResponseHandler.getTask();
- assertEquals(Status.InProgress, subTask1.getTaskData().getStatus());
- assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
-
- //Check if the child task 2 is InProgress
- getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(subTaskSummary2.getId(), getTaskResponseHandler);
- Task subTask2 = getTaskResponseHandler.getTask();
- assertEquals(Status.InProgress, subTask2.getTaskData().getStatus());
- assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
-
- // Complete the parent task
- System.out.println("Completing parent task " + parentTask.getId());
- operationResponseHandler = new BlockingTaskOperationResponseHandler();
- client.skip(parentTask.getId(), "Darth Vader", operationResponseHandler);
- operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
- System.out.println("Completed parent task " + parentTask.getId());
-
- //Check if the child task 1 is Completed
- getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(subTaskSummary1.getId(), getTaskResponseHandler);
- subTask1 = getTaskResponseHandler.getTask();
- assertEquals(Status.Completed, subTask1.getTaskData().getStatus());
- assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
-
- //Check if the child task 2 is Completed
- getTaskResponseHandler = new BlockingGetTaskResponseHandler();
- client.getTask(subTaskSummary2.getId(), getTaskResponseHandler);
- subTask2 = getTaskResponseHandler.getTask();
- assertEquals(Status.Completed, subTask2.getTaskData().getStatus());
- assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
-
- assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
- }
-
- private static class TestWorkItemManager implements org.drools.process.instance.WorkItemManager {
-
- private volatile boolean completed;
- private volatile boolean aborted;
- private volatile Map<String, Object> results;
-
- public synchronized boolean waitTillCompleted(long time) {
- if (!isCompleted()) {
- try {
- wait(time);
- } catch (InterruptedException e) {
- // swallow and return state of completed
- }
- }
-
- return isCompleted();
- }
-
- public synchronized boolean waitTillAborted(long time) {
- if (!isAborted()) {
- try {
- wait(time);
- } catch (InterruptedException e) {
- // swallow and return state of aborted
- }
- }
-
- return isAborted();
- }
-
- public void abortWorkItem(long id) {
- setAborted(true);
- }
-
- public synchronized boolean isAborted() {
- return aborted;
- }
-
- private synchronized void setAborted(boolean aborted) {
- this.aborted = aborted;
- notifyAll();
- }
-
- public void completeWorkItem(long id, Map<String, Object> results) {
- this.results = results;
- setCompleted(true);
- }
-
- private synchronized void setCompleted(boolean completed) {
- this.completed = completed;
- notifyAll();
- }
-
- public synchronized boolean isCompleted() {
- return completed;
- }
-
- public WorkItem getWorkItem(long id) {
- return null;
- }
-
- public Set<WorkItem> getWorkItems() {
- return null;
- }
-
- public Map<String, Object> getResults() {
- return results;
- }
-
- public void internalAbortWorkItem(long id) {
- }
-
- public void internalAddWorkItem(WorkItem workItem) {
- }
-
- public void internalExecuteWorkItem(WorkItem workItem) {
- }
-
- public void registerWorkItemHandler(String workItemName, WorkItemHandler handler) {
- }
-
- }
-
- private static TestWorkItemManager manager =
- new CommandBasedWSHumanTaskHandlerTest.TestWorkItemManager();
-
- public static class TestWorkItemManagerFactory implements WorkItemManagerFactory {
-
- public org.drools.process.instance.WorkItemManager createWorkItemManager(WorkingMemory workingMemory) {
- return (org.drools.process.instance.WorkItemManager)
- CommandBasedWSHumanTaskHandlerTest.manager;
- }
-
- }
-
-}
More information about the jboss-svn-commits
mailing list