[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