[jboss-svn-commits] JBL Code SVN: r32685 - in labs/jbossrules/trunk/drools-process/drools-process-task: src/main/java/org/drools/process/workitem/wsht and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Apr 30 09:12:16 EDT 2010
Author: KrisVerlaenen
Date: 2010-04-30 09:12:15 -0400 (Fri, 30 Apr 2010)
New Revision: 32685
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
- reapplied fix
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml 2010-04-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml 2010-04-30 13:12:15 UTC (rev 32685)
@@ -61,7 +61,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.0.77</version>
+ <version>1.1.117</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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/CommandBasedWSHumanTaskHandler.java 2010-04-30 13:12:15 UTC (rev 32685)
@@ -14,7 +14,6 @@
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;
@@ -27,6 +26,7 @@
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,7 +40,6 @@
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;
@@ -51,7 +50,6 @@
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;
@@ -75,6 +73,13 @@
"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) {
@@ -178,9 +183,7 @@
e.printStackTrace();
}
}
- TaskWorkItemAddTaskResponseHandler taskResponseHandler =
- new TaskWorkItemAddTaskResponseHandler(this.client, workItem.getId());
- client.addTask(task, content, taskResponseHandler);
+ client.addTask(task, content, null);
}
public void dispose() {
@@ -190,62 +193,18 @@
}
public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
- Long taskId = idMapping.get(workItem.getId());
- if (taskId != null) {
- synchronized (idMapping) {
- idMapping.remove(taskId);
- }
- client.skip(taskId, "Administrator", null);
- }
+ GetTaskResponseHandler abortTaskResponseHandler = new AbortTaskResponseHandler();
+ client.getTaskByWorkItemId(workItem.getId(), abortTaskResponseHandler);
}
-
- 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();
- 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);
- }
+ long taskId = event.getTaskId();
+ GetTaskResponseHandler getTaskResponseHandler =
+ new GetCompletedTaskResponseHandler();
+ client.getTask(taskId, getTaskResponseHandler);
}
}
@@ -253,16 +212,22 @@
public void execute(Task task) {
long workItemId = task.getTaskData().getWorkItemId();
- 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);
+ 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);
+ }
} else {
- session.getWorkItemManager().completeWorkItem(workItemId, results);
+ System.out.println("Notification of completed task " + workItemId);
+ session.getWorkItemManager().abortWorkItem(workItemId);
}
}
}
@@ -302,4 +267,14 @@
}
}
}
+
+ 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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java 2010-04-30 13:12:15 UTC (rev 32685)
@@ -31,8 +31,7 @@
private String ipAddress = "127.0.0.1";
private int port = 9123;
private MinaTaskClient client;
- private Map<Long, WorkItemManager> managers = new HashMap<Long, WorkItemManager>();
- private Map<Long, Long> idMapping = new HashMap<Long, Long>();
+ private WorkItemManager manager = null;
public void setConnection(String ipAddress, int port) {
this.ipAddress = ipAddress;
@@ -51,10 +50,30 @@
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");
@@ -155,10 +174,7 @@
e.printStackTrace();
}
}
- TaskWorkItemAddTaskResponseHandler taskResponseHandler =
- new TaskWorkItemAddTaskResponseHandler(this.client, this.managers,
- this.idMapping, manager, workItem.getId());
- client.addTask(task, content, taskResponseHandler);
+ client.addTask(task, content, null);
}
public void dispose() {
@@ -168,93 +184,26 @@
}
public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
- Long taskId = idMapping.get(workItem.getId());
- if (taskId != null) {
- synchronized (idMapping) {
- idMapping.remove(taskId);
- }
- synchronized (managers) {
- managers.remove(taskId);
- }
- client.skip(taskId, "Administrator", null);
- }
+ GetTaskResponseHandler abortTaskResponseHandler =
+ new AbortTaskResponseHandler(client);
+ client.getTaskByWorkItemId(workItem.getId(), abortTaskResponseHandler);
}
-
- 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 long workItemId;
- private long taskId;
- private Map<Long, WorkItemManager> managers;
+ private WorkItemManager manager;
private MinaTaskClient client;
- public TaskCompletedHandler(long workItemId, long taskId, Map<Long, WorkItemManager> managers,
- MinaTaskClient client) {
- this.workItemId = workItemId;
- this.taskId = taskId;
- this.managers = managers;
+ public TaskCompletedHandler(WorkItemManager manager, MinaTaskClient client) {
+ this.manager = manager;
this.client = client;
}
public void execute(Payload payload) {
TaskEvent event = ( TaskEvent ) payload.get();
- 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);
- }
- }
- }
+ long taskId = event.getTaskId();
+ GetTaskResponseHandler getTaskResponseHandler =
+ new GetCompletedTaskResponseHandler(manager, client);
+ client.getTask(taskId, getTaskResponseHandler);
}
}
@@ -270,16 +219,20 @@
public void execute(Task task) {
long workItemId = task.getTaskData().getWorkItemId();
- 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);
+ 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);
+ }
} else {
- manager.completeWorkItem(workItemId, results);
+ manager.abortWorkItem(workItemId);
}
}
}
@@ -320,4 +273,20 @@
}
}
}
+
+ 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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/MessagingTaskEventListener.java 2010-04-30 13:12:15 UTC (rev 32685)
@@ -39,8 +39,18 @@
EventKey key = new TaskEventKey(TaskCompletedEvent.class, event.getTaskId() );
List<EventTriggerTransport> targets = keys.getTargets( key );
if ( targets == null ){
- return;
- }
+ 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);
+ }
+ }
Payload payload = new EventPayload( event );
for ( Iterator<EventTriggerTransport> it = targets.iterator(); it.hasNext(); ) {
EventTriggerTransport target = it.next();
@@ -58,7 +68,17 @@
EventKey key = new TaskEventKey(TaskFailedEvent.class, event.getTaskId() );
List<EventTriggerTransport> targets = keys.getTargets( key );
if ( targets == null ){
- return;
+ 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);
+ }
}
Payload payload = new EventPayload( event );
for ( Iterator<EventTriggerTransport> it = targets.iterator(); it.hasNext(); ) {
@@ -77,7 +97,17 @@
EventKey key = new TaskEventKey(TaskSkippedEvent.class, event.getTaskId() );
List<EventTriggerTransport> targets = keys.getTargets( key );
if ( targets == null ){
- return;
+ 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);
+ }
}
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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventKey.java 2010-04-30 13:12:15 UTC (rev 32685)
@@ -10,7 +10,7 @@
public class TaskEventKey implements EventKey, Externalizable {
private Class<? extends TaskEvent> event;
- private long taskId;
+ private long taskId = -1;
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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java 2010-04-30 13:12:15 UTC (rev 32685)
@@ -72,6 +72,9 @@
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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java 2010-04-30 13:12:15 UTC (rev 32685)
@@ -367,6 +367,18 @@
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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskClientHandler.java 2010-04-30 13:12:15 UTC (rev 32685)
@@ -165,6 +165,18 @@
}
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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java 2010-04-30 13:12:15 UTC (rev 32685)
@@ -180,6 +180,17 @@
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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServiceSession.java 2010-04-30 13:12:15 UTC (rev 32685)
@@ -490,6 +490,13 @@
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-29 18:57:08 UTC (rev 32684)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml 2010-04-30 13:12:15 UTC (rev 32685)
@@ -532,4 +532,15 @@
</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>
More information about the jboss-svn-commits
mailing list