[jboss-svn-commits] JBL Code SVN: r30584 - in labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm: src/main/java/org/drools/vsm and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Dec 10 15:56:44 EST 2009
Author: salaboy21
Date: 2009-12-10 15:56:44 -0500 (Thu, 10 Dec 2009)
New Revision: 30584
Added:
labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/
labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/GenericEventTransport.java
labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/TaskClientMessageHandlerImpl.java
labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/TaskServerMessageHandlerImpl.java
labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerHumanTaskMinaRemoteTest.java
Modified:
labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/pom.xml
labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java
labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/remote/ServiceManagerRemoteClient.java
labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTestBase.java
Log:
adapt VSM to use HumanTaskService inside it
Modified: labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/pom.xml
===================================================================
--- labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/pom.xml 2009-12-10 16:33:39 UTC (rev 30583)
+++ labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/pom.xml 2009-12-10 20:56:44 UTC (rev 30584)
@@ -88,8 +88,13 @@
<artifactId>cli</artifactId>
<version>4.0-M3-SNAPSHOT</version>
</dependency>
-
-
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-process-task</artifactId>
+ <version>5.1.0.SNAPSHOT</version>
+
+ <type>jar</type>
+ </dependency>
</dependencies>
<repositories>
<repository>
@@ -119,5 +124,6 @@
</pluginRepository>
</pluginRepositories>
-
+
</project>
+
Modified: labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java
===================================================================
--- labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java 2009-12-10 16:33:39 UTC (rev 30583)
+++ labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java 2009-12-10 20:56:44 UTC (rev 30584)
@@ -83,6 +83,10 @@
}
+ public HumanTaskServiceProvider getHumanTaskService() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
public static class RemoveKnowledgeBuilderProvider
implements
KnowledgeBuilderProvider {
Modified: labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/remote/ServiceManagerRemoteClient.java
===================================================================
--- labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/remote/ServiceManagerRemoteClient.java 2009-12-10 16:33:39 UTC (rev 30583)
+++ labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/remote/ServiceManagerRemoteClient.java 2009-12-10 20:56:44 UTC (rev 30584)
@@ -1,6 +1,7 @@
package org.drools.vsm.remote;
import java.util.Collection;
+import java.util.List;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;
@@ -32,15 +33,20 @@
ServiceManager {
public GenericConnector client;
+ public List<GenericConnector> services;
+
public AtomicInteger counter;
+ private int sessionId = -1;
+
public ServiceManagerRemoteClient(String name,
- GenericConnector client) {
+ GenericConnector client, List<GenericConnector> services) {
this.client = client;
this.counter = new AtomicInteger();
+ this.services = services;
}
- private int sessionId = -1;
+
public boolean connect() {
boolean connected = this.client.connect();
@@ -73,7 +79,40 @@
e );
}
}
+ //Connecting with services
+ for(GenericConnector connector : services){
+ boolean serviceConnected = connector.connect();
+ if ( serviceConnected ) {
+ String commandId = "service.connected" + getNextId();
+ String kresultsId = "kresults_" + getSessionId();
+ Message msg = new Message( -1,
+ counter.incrementAndGet(),
+ false,
+ new KnowledgeContextResolveFromContextCommand( new ServiceManagerClientConnectCommand( commandId ),
+ null,
+ null,
+ null,
+ kresultsId ) );
+
+ try {
+ Object object = connector.write( msg ).getPayload();
+
+ if ( object == null ) {
+ throw new RuntimeException( "Response was not correctly received" );
+ }
+
+ System.out.println("Service Connected");
+
+
+ } catch ( Exception e ) {
+ throw new RuntimeException( "Unable to execute message",
+ e );
+ }
+ }
+ }
+
+
return connected;
}
@@ -197,6 +236,10 @@
}
+ public HumanTaskServiceProvider getHumanTaskService() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
public static class RemoveKnowledgeBuilderProvider
implements
KnowledgeBuilderProvider {
Added: labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/GenericEventTransport.java
===================================================================
--- labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/GenericEventTransport.java (rev 0)
+++ labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/GenericEventTransport.java 2009-12-10 20:56:44 UTC (rev 30584)
@@ -0,0 +1,42 @@
+package org.drools.vsm.task;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+import org.drools.eventmessaging.EventTriggerTransport;
+import org.drools.eventmessaging.Payload;
+import org.drools.task.service.Command;
+import org.drools.task.service.CommandName;
+import org.drools.vsm.GenericIoWriter;
+import org.drools.vsm.Message;
+
+public class GenericEventTransport implements EventTriggerTransport {
+ private String uuid;
+ private Map<String, GenericIoWriter> sessions;
+ private int responseId;
+ private boolean remove;
+
+ GenericEventTransport(String uuid, int responseId, Map<String, GenericIoWriter> sessions, boolean remove) {
+ this.uuid = uuid;
+ this.responseId = responseId;
+ this.sessions = sessions;
+ this.remove = remove;
+ }
+
+ public void trigger(Payload payload) {
+ GenericIoWriter session = sessions.get( uuid );
+ List args = new ArrayList( 1 );
+ args.add( payload );
+ Command resultsCmnd = new Command( responseId, CommandName.EventTriggerResponse, args);
+ session.write(new Message(Integer.parseInt(uuid),
+ responseId,
+ false,
+ resultsCmnd ), null);
+ }
+
+ public boolean isRemove() {
+ return this.remove;
+ }
+}
Added: labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/TaskClientMessageHandlerImpl.java
===================================================================
--- labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/TaskClientMessageHandlerImpl.java (rev 0)
+++ labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/TaskClientMessageHandlerImpl.java 2009-12-10 20:56:44 UTC (rev 30584)
@@ -0,0 +1,243 @@
+package org.drools.vsm.task;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.SystemEventListener;
+import org.drools.eventmessaging.EventResponseHandler;
+import org.drools.eventmessaging.Payload;
+import org.drools.task.Content;
+import org.drools.task.Task;
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.BaseMinaHandler.ResponseHandler;
+import org.drools.task.service.Command;
+import org.drools.vsm.GenericIoWriter;
+import org.drools.vsm.GenericMessageHandler;
+import org.drools.vsm.Message;
+
+public class TaskClientMessageHandlerImpl implements GenericMessageHandler {
+
+ /**
+ * Listener used for logging
+ */
+ private SystemEventListener systemEventListener;
+ protected Map<Integer, ResponseHandler> responseHandlers;
+
+ public TaskClientMessageHandlerImpl(SystemEventListener systemEventListener) {
+ this.systemEventListener = systemEventListener;
+ }
+
+
+ public void exceptionCaught(GenericIoWriter session,
+ Throwable cause) throws Exception {
+ systemEventListener.exception("Uncaught exception on client", cause);
+ }
+
+
+ public void messageReceived(GenericIoWriter session, Message msg) throws Exception {
+ Command cmd = (Command) msg.getPayload();
+
+ systemEventListener.debug("Message receieved on client : " + cmd.getName());
+ systemEventListener.debug("Arguments : " + Arrays.toString(cmd.getArguments().toArray()));
+
+ switch (cmd.getName()) {
+ case OperationResponse: {
+ TaskOperationResponseHandler responseHandler = (TaskOperationResponseHandler) 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 {
+ responseHandler.setIsDone(true);
+ }
+ }
+ break;
+ }
+ case GetTaskResponse: {
+ 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 task = (Task) cmd.getArguments().get(0);
+ responseHandler.execute(task);
+ }
+ }
+ break;
+ }
+ case AddTaskResponse: {
+ AddTaskResponseHandler responseHandler = (AddTaskResponseHandler) 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 {
+ long taskId = (Long) cmd.getArguments().get(0);
+ responseHandler.execute(taskId);
+ }
+ }
+ break;
+ }
+ case AddCommentResponse: {
+ AddCommentResponseHandler responseHandler = (AddCommentResponseHandler) 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 {
+ long commentId = (Long) cmd.getArguments().get(0);
+ responseHandler.execute(commentId);
+ }
+ }
+ break;
+ }
+ case DeleteCommentResponse: {
+ DeleteCommentResponseHandler responseHandler = (DeleteCommentResponseHandler) 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 {
+ responseHandler.setIsDone(true);
+ }
+ }
+ break;
+ }
+ case AddAttachmentResponse: {
+ AddAttachmentResponseHandler responseHandler = (AddAttachmentResponseHandler) 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 {
+ long attachmentId = (Long) cmd.getArguments().get(0);
+ long contentId = (Long) cmd.getArguments().get(1);
+ responseHandler.execute(attachmentId,
+ contentId);
+ }
+ }
+ break;
+ }
+ case DeleteAttachmentResponse: {
+ DeleteAttachmentResponseHandler responseHandler = (DeleteAttachmentResponseHandler) 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 {
+ responseHandler.setIsDone(true);
+ }
+ }
+ break;
+ }
+ case GetContentResponse: {
+ GetContentResponseHandler responseHandler = (GetContentResponseHandler) 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 {
+ Content content = (Content) cmd.getArguments().get(0);
+ responseHandler.execute(content);
+ }
+ }
+ break;
+ }
+ case SetDocumentContentResponse: {
+ SetDocumentResponseHandler responseHandler = (SetDocumentResponseHandler) 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 {
+ long contentId = (Long) cmd.getArguments().get(0);
+ responseHandler.execute(contentId);
+ }
+ }
+ break;
+ }
+ case QueryTaskSummaryResponse: {
+ TaskSummaryResponseHandler responseHandler = (TaskSummaryResponseHandler) 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 {
+ List<TaskSummary> results = (List<TaskSummary>) cmd.getArguments().get(0);
+ responseHandler.execute(results);
+ }
+ }
+ break;
+ }
+ case EventTriggerResponse: {
+ EventResponseHandler responseHandler = (EventResponseHandler) 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 {
+ Payload payload = (Payload) cmd.getArguments().get(0);
+ responseHandler.execute(payload);
+ }
+ }
+ break;
+ }
+ }
+ }
+ public void addResponseHandler(int id, ResponseHandler responseHandler) {
+ responseHandlers.put( id, responseHandler );
+ }
+
+
+ public static interface GetTaskResponseHandler
+ extends
+ ResponseHandler {
+ public void execute(Task task);
+ }
+
+ public static interface AddTaskResponseHandler
+ extends
+ ResponseHandler {
+ public void execute(long taskId);
+ }
+
+ public static interface TaskOperationResponseHandler
+ extends
+ ResponseHandler {
+ public void setIsDone(boolean done);
+ }
+
+ public static interface AddCommentResponseHandler
+ extends
+ ResponseHandler {
+ public void execute(long commentId);
+ }
+
+ public static interface DeleteCommentResponseHandler
+ extends
+ ResponseHandler {
+ public void setIsDone(boolean done);
+ }
+
+ public static interface AddAttachmentResponseHandler
+ extends
+ ResponseHandler {
+ public void execute(long attachmentId,
+ long contentId);
+ }
+
+ public static interface DeleteAttachmentResponseHandler
+ extends
+ ResponseHandler {
+ public void setIsDone(boolean done);
+ }
+
+ public static interface SetDocumentResponseHandler
+ extends
+ ResponseHandler {
+ public void execute(long contentId);
+ }
+
+ public static interface GetContentResponseHandler
+ extends
+ ResponseHandler {
+ public void execute(Content content);
+ }
+
+ public static interface TaskSummaryResponseHandler
+ extends
+ ResponseHandler {
+ public void execute(List<TaskSummary> results);
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/TaskServerMessageHandlerImpl.java
===================================================================
--- labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/TaskServerMessageHandlerImpl.java (rev 0)
+++ labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/main/java/org/drools/vsm/task/TaskServerMessageHandlerImpl.java 2009-12-10 20:56:44 UTC (rev 30584)
@@ -0,0 +1,434 @@
+package org.drools.vsm.task;
+
+import org.apache.mina.core.service.IoHandlerAdapter;
+import org.apache.mina.core.session.IdleStatus;
+import org.apache.mina.core.session.IoSession;
+import org.drools.SystemEventListener;
+import org.drools.eventmessaging.EventKey;
+import org.drools.task.Attachment;
+import org.drools.task.Comment;
+import org.drools.task.Content;
+import org.drools.task.Task;
+import org.drools.task.query.TaskSummary;
+import org.drools.vsm.GenericIoWriter;
+import org.drools.vsm.Message;
+
+import java.util.*;
+import org.drools.task.service.Command;
+import org.drools.task.service.CommandName;
+import org.drools.task.service.ContentData;
+import org.drools.task.service.MinaEventTransport;
+import org.drools.task.service.Operation;
+import org.drools.task.service.TaskService;
+import org.drools.task.service.TaskServiceSession;
+import org.drools.vsm.GenericMessageHandler;
+
+public class TaskServerMessageHandlerImpl implements GenericMessageHandler {
+ private final TaskService service;
+ private final Map<String, GenericIoWriter> clients;
+
+ /**
+ * Listener used for logging
+ */
+ private final SystemEventListener systemEventListener;
+
+ public TaskServerMessageHandlerImpl(TaskService service, SystemEventListener systemEventListener) {
+ this.service = service;
+ this.clients = new HashMap<String, GenericIoWriter>();
+ this.systemEventListener = systemEventListener;
+ }
+
+
+ public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
+ systemEventListener.exception("Uncaught exception on Server", cause);
+ }
+
+
+ public void messageReceived(GenericIoWriter session, Message msg) throws Exception {
+ Command cmd = (Command) ((Message)msg).getPayload();
+ TaskServiceSession taskSession = service.createSession();
+ CommandName response = null;
+ try {
+ systemEventListener.debug("Message receieved on server : " + cmd.getName());
+ systemEventListener.debug("Arguments : " + Arrays.toString(cmd.getArguments().toArray()));
+
+ switch (cmd.getName()) {
+ case OperationRequest: {
+ response = CommandName.OperationResponse;
+ Operation operation = (Operation) cmd.getArguments().get(0);
+
+ systemEventListener.debug("Command receieved on server was operation of type: " + operation);
+
+ long taskId = (Long) cmd.getArguments().get(1);
+ String userId = (String) cmd.getArguments().get(2);
+ String targetEntityId = null;
+ if (cmd.getArguments().size() > 3) {
+ targetEntityId = (String) cmd.getArguments().get(3);
+ }
+ ContentData data = null;
+ if (cmd.getArguments().size() > 4) {
+ data = (ContentData) cmd.getArguments().get(4);
+ }
+ taskSession.taskOperation(operation, taskId, userId, targetEntityId, data);
+
+ List args = Collections.emptyList();
+
+ Command resultsCmnd = new Command(cmd.getId(), CommandName.OperationResponse, args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case GetTaskRequest: {
+ response = CommandName.GetTaskResponse;
+ long taskId = (Long) cmd.getArguments().get(0);
+
+ Task task = taskSession.getTask(taskId);
+
+ List args = new ArrayList(1);
+ args.add(task);
+ Command resultsCmnd = new Command(cmd.getId(), CommandName.GetTaskResponse, args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+
+ break;
+ }
+ case AddTaskRequest: {
+ response = CommandName.AddTaskResponse;
+ Task task = (Task) cmd.getArguments().get(0);
+ ContentData content = (ContentData) cmd.getArguments().get(1);
+ taskSession.addTask(task, content);
+
+ List args = new ArrayList(1);
+ args.add(task.getId());
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.AddTaskResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case AddCommentRequest: {
+ response = CommandName.AddCommentResponse;
+ Comment comment = (Comment) cmd.getArguments().get(1);
+ taskSession.addComment((Long) cmd.getArguments().get(0),
+ comment);
+
+ List args = new ArrayList(1);
+ args.add(comment.getId());
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.AddCommentResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case DeleteCommentRequest: {
+ response = CommandName.DeleteCommentResponse;
+ long taskId = (Long) cmd.getArguments().get(0);
+ long commentId = (Long) cmd.getArguments().get(1);
+ taskSession.deleteComment(taskId,
+ commentId);
+
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.DeleteCommentResponse,
+ Collections.emptyList());
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case AddAttachmentRequest: {
+ response = CommandName.AddAttachmentResponse;
+ Attachment attachment = (Attachment) cmd.getArguments().get(1);
+ Content content = (Content) cmd.getArguments().get(2);
+ taskSession.addAttachment((Long) cmd.getArguments().get(0),
+ attachment,
+ content);
+
+ List args = new ArrayList(2);
+ args.add(attachment.getId());
+ args.add(content.getId());
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.AddAttachmentResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case DeleteAttachmentRequest: {
+ response = CommandName.DeleteAttachmentResponse;
+ long taskId = (Long) cmd.getArguments().get(0);
+ long attachmentId = (Long) cmd.getArguments().get(1);
+ long contentId = (Long) cmd.getArguments().get(2);
+ taskSession.deleteAttachment(taskId,
+ attachmentId,
+ contentId);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.DeleteAttachmentResponse,
+ Collections.emptyList());
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case SetDocumentContentRequest: {
+ response = CommandName.SetDocumentContentResponse;
+ long taskId = (Long) cmd.getArguments().get(0);
+ Content content = (Content) cmd.getArguments().get(1);
+ taskSession.setDocumentContent(taskId,
+ content);
+
+ List args = new ArrayList(1);
+ args.add(content.getId());
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.SetDocumentContentResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case GetContentRequest: {
+ response = CommandName.GetContentResponse;
+ long contentId = (Long) cmd.getArguments().get(0);
+ Content content = taskSession.getContent(contentId);
+ List args = new ArrayList(1);
+ args.add(content);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.GetContentResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksOwned: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksOwned((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsBusinessAdministrator: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsBusinessAdministrator((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsPotentialOwner: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsPotentialOwner((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsPotentialOwnerWithGroup: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsPotentialOwner(
+ (String) cmd.getArguments().get(0),
+ (List<String>) cmd.getArguments().get(1),
+ (String) cmd.getArguments().get(2));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsPotentialOwnerByGroup: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsPotentialOwnerByGroup((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QuerySubTasksAssignedAsPotentialOwner: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getSubTasksAssignedAsPotentialOwner((Long) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1),
+ (String) cmd.getArguments().get(2));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryGetSubTasksByParentTaskId: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getSubTasksByParent((Long) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+
+
+ case QueryTasksAssignedAsTaskInitiator: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsTaskInitiator((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsExcludedOwner: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsExcludedOwner((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsRecipient: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsRecipient((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case QueryTasksAssignedAsTaskStakeholder: {
+ response = CommandName.QueryTaskSummaryResponse;
+ List<TaskSummary> results = taskSession.getTasksAssignedAsTaskStakeholder((String) cmd.getArguments().get(0),
+ (String) cmd.getArguments().get(1));
+ List args = new ArrayList(1);
+ args.add(results);
+ Command resultsCmnd = new Command(cmd.getId(),
+ CommandName.QueryTaskSummaryResponse,
+ args);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
+ case RegisterForEventRequest: {
+ response = CommandName.EventTriggerResponse;
+ EventKey key = (EventKey) cmd.getArguments().get(0);
+ boolean remove = (Boolean) cmd.getArguments().get(1);
+ String uuid = (String) cmd.getArguments().get(2);
+ clients.put(uuid,
+ session);
+ GenericEventTransport transport = new GenericEventTransport(uuid, //this is wrong
+ cmd.getId(), //this is wrong
+ clients,
+ remove);
+ service.getEventKeys().register(key,
+ transport);
+ break;
+ }
+ case RegisterClient: {
+ String uuid = (String) cmd.getArguments().get(0);
+ clients.put(uuid, session);
+ break;
+ }
+ default: {
+ systemEventListener.debug("Unknown command recieved on server");
+ }
+ }
+ } catch (RuntimeException e) {
+ systemEventListener.exception(e.getMessage(),e);
+ e.printStackTrace(System.err);
+ List<Object> list = new ArrayList<Object>(1);
+ list.add(e);
+ Command resultsCmnd = new Command(cmd.getId(), response, list);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ } finally {
+ taskSession.dispose();
+ }
+ }
+
+
+ public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
+ systemEventListener.debug("Server IDLE " + session.getIdleCount(status));
+ }
+
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerHumanTaskMinaRemoteTest.java
===================================================================
--- labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerHumanTaskMinaRemoteTest.java (rev 0)
+++ labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerHumanTaskMinaRemoteTest.java 2009-12-10 20:56:44 UTC (rev 30584)
@@ -0,0 +1,108 @@
+package org.drools.vsm;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.apache.mina.transport.socket.SocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.SystemEventListenerFactory;
+import org.drools.task.service.TaskClientHandler;
+import org.drools.task.service.TaskServerHandler;
+import org.drools.task.service.TaskService;
+import org.drools.task.service.TaskServiceSession;
+import org.drools.vsm.mina.MinaAcceptor;
+import org.drools.vsm.mina.MinaConnector;
+import org.drools.vsm.mina.MinaIoHandler;
+import org.drools.vsm.remote.ServiceManagerRemoteClient;
+import org.drools.vsm.task.TaskClientMessageHandlerImpl;
+import org.drools.vsm.task.TaskServerMessageHandlerImpl;
+
+public class ServiceManagerHumanTaskMinaRemoteTest extends ServiceManagerTestBase {
+
+ AcceptorService server;
+ AcceptorService humanTaskServer;
+ private EntityManagerFactory emf;
+ private TaskService taskService;
+ protected TaskServiceSession taskSession;
+
+ protected void setUp() throws Exception {
+ // Configure persistence to be used inside the WSHT Service
+ // Use persistence.xml configuration
+ emf = Persistence.createEntityManagerFactory("org.drools.task");
+ taskService = new TaskService(emf, SystemEventListenerFactory.getSystemEventListener());
+ taskSession = taskService.createSession();
+ // MockUserInfo userInfo = new MockUserInfo();
+ // taskService.setUserinfo(userInfo);
+
+ // END
+
+ // Execution Server
+ SocketAddress address = new InetSocketAddress("127.0.0.1",
+ 9123);
+ ServiceManagerData serverData = new ServiceManagerData();
+ // setup Server
+ SocketAcceptor acceptor = new NioSocketAcceptor();
+ acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new GenericMessageHandlerImpl(serverData,
+ SystemEventListenerFactory.getSystemEventListener())));
+ this.server = new MinaAcceptor(acceptor,
+ address);
+ this.server.start();
+ // End Execution Server
+
+
+ // Human task Server configuration
+ SocketAddress htAddress = new InetSocketAddress("127.0.0.1",
+ 9124);
+ SocketAcceptor htAcceptor = new NioSocketAcceptor();
+
+ htAcceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new TaskServerMessageHandlerImpl(taskService,
+ SystemEventListenerFactory.getSystemEventListener())));
+ this.humanTaskServer = new MinaAcceptor(htAcceptor, htAddress);
+ this.humanTaskServer.start();
+
+
+ // End Human task Server configuration
+
+ // setup the Service Manager Client
+ NioSocketConnector htclientConnector = new NioSocketConnector();
+ htclientConnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener() //Now I need to use MinaIoHandler because mina needs one
+ , new TaskClientMessageHandlerImpl(SystemEventListenerFactory.getSystemEventListener()) ));
+ GenericConnector htMinaClient = new MinaConnector( "client 1",
+ htclientConnector,
+ address,
+ SystemEventListenerFactory.getSystemEventListener() );
+
+ NioSocketConnector clientConnector = new NioSocketConnector();
+ clientConnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+ GenericConnector minaClient = new MinaConnector("client 1",
+ clientConnector,
+ address,
+ SystemEventListenerFactory.getSystemEventListener());
+
+ // Service Manager client, that contains a list of service beside the execution Server, in this case the HumanTaskService
+ List<GenericConnector> services = new ArrayList<GenericConnector>();
+ services.add(htMinaClient);
+ this.client = new ServiceManagerRemoteClient("client 1",
+ minaClient
+ //List of service
+ , services);
+
+ ((ServiceManagerRemoteClient) client).connect();
+
+
+
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ ((ServiceManagerRemoteClient) client).disconnect();
+ this.server.stop();
+ }
+}
Modified: labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTestBase.java
===================================================================
--- labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTestBase.java 2009-12-10 16:33:39 UTC (rev 30583)
+++ labs/jbossrules/branches/human-task-vsm_lucaz-salaboy/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTestBase.java 2009-12-10 20:56:44 UTC (rev 30584)
@@ -11,7 +11,9 @@
import org.drools.io.ResourceFactory;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.ProcessInstance;
+
public class ServiceManagerTestBase extends TestCase {
protected ServiceManager client;
@@ -174,4 +176,51 @@
//
// assertEquals( 2, (int ) ( Integer) results.getValue( "fired" ) );
}
+
+ public void testHumanTasks() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello1!!!\" ); \n";
+ str += "end \n";
+ str += "rule rule2 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello2!!!\" ); \n";
+ str += "end \n";
+
+ KnowledgeBuilderProvider kbuilderFactory = this.client.getKnowledgeBuilderFactory();
+ KnowledgeBuilder kbuilder = kbuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+ ResourceType.DRF );
+
+ if ( kbuilder.hasErrors() ) {
+ System.out.println( "Errors: " + kbuilder.getErrors() );
+ }
+
+ KnowledgeBaseProvider kbaseFactory = this.client.getKnowledgeBaseFactory();
+ KnowledgeBase kbase = kbaseFactory.newKnowledgeBase();
+
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess("org.drools.flow.example");
+ HumanTaskServiceProvider humanTaskServiceFactory = this.client.getHumanTaskService();
+ HumanTaskService htClient = humanTaskServiceClientFactory.newHumanTaskServiceClient();
+
+ ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new CommandBasedWSHumanTaskHandler(htClient));
+ int fired = ksession.fireAllRules();
+ assertEquals( 2,
+ fired );
+
+ List<TaskSummary> tasks = htClient.getAssignedTasksAssignedAsPotentialOwner(actorId);
+
+
+ }
}
More information about the jboss-svn-commits
mailing list