[jboss-svn-commits] JBL Code SVN: r34605 - in labs/jbossrules/trunk/drools-grid: drools-grid-remote-api/src/main/java/org/drools/grid/remote and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 9 08:12:28 EDT 2010


Author: salaboy21
Date: 2010-08-09 08:12:27 -0400 (Mon, 09 Aug 2010)
New Revision: 34605

Added:
   labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceRemoteClient.java
Removed:
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericDirectoryProvider.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericHumanTaskProvider.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java
   labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceImpl.java
Modified:
   labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GridConnection.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/WorkingMemoryEntryPointRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/RemoteMinaNodeConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceByPrioritySelectionStrategy.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceProviderRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaConnectionHumanTask.java
   labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaHumanTaskConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/BaseTaskServiceTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandlerTest.java
Log:
JBRULES-2618: Drools Grid Services - Improve and clean tests
	- cleaning up the APIs and improving the tests

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GridConnection.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GridConnection.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GridConnection.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -70,8 +70,7 @@
         NodeConnectionType type;
         try {
             type = connector.getNodeConnectionType();
-            connector.connect();
-
+           
             type.setConnector(connector);
             type.setConnection(this);
 
@@ -101,8 +100,6 @@
         try {
             type = connector.getNodeConnectionType();
 
-            connector.connect();
-
             type.setConnector(connector);
             type.setConnection(this);
 
@@ -129,9 +126,7 @@
         HumanTaskNode humanTaskNode = null;
         try {
             type = connector.getNodeConnectionType();
-
             connector.connect();
-
             type.setConnector(connector);
             type.setConnection(this);
 
@@ -156,8 +151,6 @@
             try {
                 type = connector.getNodeConnectionType();
 
-                connector.connect();
-
                 type.setConnector(connector);
                 type.setConnection(this);
                 executionNodes.add(NodeFactory.newExecutionNode(type));
@@ -175,7 +168,6 @@
             try {
                 type = connector.getNodeConnectionType();
 
-                connector.connect();
                 type.setConnector(connector);
                 type.setConnection(this);
                 directoryNodes.add(NodeFactory.newDirectoryNode(type));
@@ -187,14 +179,28 @@
 
     }
 
-    public List<HumanTaskNode> getHumanTaskNodes() {
-        throw new UnsupportedOperationException("not Implemented yet!");
+    public List<HumanTaskNode> getHumanTaskNodes() throws ConnectorException {
+        List<HumanTaskNode> humanTaskNodes = new ArrayList<HumanTaskNode>();
+        for (GenericNodeConnector connector : humanTaskNodeConnectors) {
+            NodeConnectionType type;
+            try {
+                type = connector.getNodeConnectionType();
+
+                type.setConnector(connector);
+                type.setConnection(this);
+                humanTaskNodes.add(NodeFactory.newHumanTaskNode(type));
+            } catch (RemoteException ex) {
+                Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
+            }
+        }
+        return humanTaskNodes;
     }
 
     public void dispose() throws ConnectorException {
         for (GenericNodeConnector connector : executionNodeConnectors) {
             try {
                 connector.disconnect();
+                
             } catch (RemoteException ex) {
                 Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
             }
@@ -202,6 +208,7 @@
         for (GenericNodeConnector connector : directoryNodeConnectors) {
             try {
                 connector.disconnect();
+                
             } catch (RemoteException ex) {
                 Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
             }
@@ -209,6 +216,7 @@
         for (GenericNodeConnector connector : humanTaskNodeConnectors) {
             try {
                 connector.disconnect();
+                
             } catch (RemoteException ex) {
                 Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
             }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -43,12 +43,12 @@
  */
 public class DirectoryLookupProviderRemoteClient implements DirectoryLookupFactoryService {
 
-    private GenericNodeConnector client;
+    private GenericNodeConnector connector;
     private GenericConnection connection;
     private MessageSession messageSession;
 
-    public DirectoryLookupProviderRemoteClient(GenericNodeConnector client, GenericConnection connection) {
-        this.client = client;
+    public DirectoryLookupProviderRemoteClient(GenericNodeConnector connector, GenericConnection connection) {
+        this.connector = connector;
         this.messageSession = new MessageSession();
         this.connection = connection;
     }
@@ -68,7 +68,7 @@
             DirectoryNodeService directoryNode = connection.getDirectoryNode().get(DirectoryNodeService.class);
             try {
                 
-                directoryNode.register(identifier, client.getId());
+                directoryNode.register(identifier, connector.getId());
             } catch (RemoteException ex) {
                 Logger.getLogger(DirectoryLookupProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
             }
@@ -84,10 +84,12 @@
 
 
             try {
-                Object object = client.write(msg).getPayload();
+                connector.connect();
+                Object object = connector.write(msg).getPayload();
                 if (!(object instanceof FinishedCommand)) {
                     throw new RuntimeException("Response was not correctly ended");
                 }
+                connector.disconnect();
             } catch (Exception e) {
                 throw new RuntimeException("Unable to execute message", e);
             }
@@ -118,17 +120,14 @@
                 Logger.getLogger(DirectoryLookupProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
             }
 
-            client = GenericConnectorFactory.newConnector(connectorString);
-            try {
-                client.connect();
-            } catch (RemoteException ex) {
-                Logger.getLogger(DirectoryLookupProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
-            }
+            connector = GenericConnectorFactory.newConnector(connectorString);
+           
             //I need to add the new Connector to the connection to be able to clean it up/disconect it!
-            connection.addExecutionNode(client);
+            connection.addExecutionNode(connector);
 
             try {
-                Object object = client.write(msg).getPayload();
+                connector.connect();
+                Object object = connector.write(msg).getPayload();
                 if (object == null) {
                     throw new RuntimeException("Response was not correctly received");
                 }
@@ -138,13 +137,13 @@
                 CommandExecutor executor = null;
                 switch (Integer.parseInt(type)) {
                     case 0: {
-                        executor = new StatefulKnowledgeSessionRemoteClient(instanceId, client, messageSession);
+                        executor = new StatefulKnowledgeSessionRemoteClient(instanceId, connector, messageSession);
                         break;
                     }
                     default: {
                     }
                 }
-
+                connector.disconnect();
                 return executor;
             } catch (Exception e) {
                 throw new RuntimeException("Unable to execute message", e);
@@ -201,18 +200,16 @@
 
 
             try {
-                Object object = client.write(msg).getPayload();
+                connector.connect();
+                Object object = connector.write(msg).getPayload();
                 if (!(object instanceof FinishedCommand)) {
                     throw new RuntimeException("Response was not correctly ended");
                 }
+                connector.disconnect();
             } catch (Exception e) {
                 throw new RuntimeException("Unable to execute message", e);
             }
-            try {
-                directoryNode.dispose();
-            } catch (RemoteException ex) {
-                Logger.getLogger(DirectoryLookupProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
-            }
+           
 
         } catch (ConnectorException ex) {
             Logger.getLogger(DirectoryLookupProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -25,10 +25,10 @@
     implements
     KnowledgeBaseFactoryService {
     
-    private GenericNodeConnector client;
+    private GenericNodeConnector connector;
     private MessageSession          messageSession;
-    public KnowledgeBaseProviderRemoteClient(GenericNodeConnector client) {
-         this.client = client;
+    public KnowledgeBaseProviderRemoteClient(GenericNodeConnector connector) {
+         this.connector = connector;
          this.messageSession = new MessageSession();
     }
 
@@ -53,19 +53,20 @@
                                                            localId,
                                                            new NewKnowledgeBaseCommand( conf ) ) );
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write( msg ).getPayload();
 
             if ( !(object instanceof FinishedCommand) ) {
                 throw new RuntimeException( "Response was not correctly ended" );
             }
-
+            connector.disconnect();
         } catch ( Exception e ) {
             throw new RuntimeException( "Unable to execute message",
                                         e );
         }
 
         return new KnowledgeBaseRemoteClient( localId,
-                                              client, messageSession );
+                                              connector, messageSession );
 
     }
 
@@ -103,27 +104,28 @@
         registerKBaseInDirectories(kbaseId);
 
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write( msg ).getPayload();
 
             if ( !(object instanceof FinishedCommand) ) {
                 throw new RuntimeException( "Response was not correctly ended" );
             }
-
+            connector.disconnect();
         } catch ( Exception e ) {
             throw new RuntimeException( "Unable to execute message",
                                         e );
         }
 
         return new KnowledgeBaseRemoteClient( localId,
-                                              client, messageSession );
+                                              connector, messageSession );
         
     }
 
     private void registerKBaseInDirectories(String kbaseId) {
         try {
-            DirectoryNodeService directory = client.getConnection().getDirectoryNode().get(DirectoryNodeService.class);
-            directory.registerKBase(kbaseId, client.getId());
-            directory.dispose();
+            DirectoryNodeService directory = connector.getConnection().getDirectoryNode().get(DirectoryNodeService.class);
+            directory.registerKBase(kbaseId, connector.getId());
+            
         } catch (RemoteException ex) {
             Logger.getLogger(KnowledgeBaseProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
         } catch (ConnectorException ex) {
@@ -145,19 +147,20 @@
         registerKBaseInDirectories(kbaseId);
 
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write( msg ).getPayload();
 
             if ( !(object instanceof FinishedCommand) ) {
                 throw new RuntimeException( "Response was not correctly ended" );
             }
-
+            connector.disconnect();
         } catch ( Exception e ) {
             throw new RuntimeException( "Unable to execute message",
                                         e );
         }
 
         return new KnowledgeBaseRemoteClient( localId,
-                                              client, messageSession );
+                                              connector, messageSession );
     }
 
     public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration(Properties properties, ClassLoader... classLoader) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -25,18 +25,17 @@
 import org.drools.grid.internal.MessageSession;
 
 public class KnowledgeBaseRemoteClient
-    implements
-    KnowledgeBase {
+        implements
+        KnowledgeBase {
 
+    private GenericNodeConnector connector;
+    private MessageSession messageSession;
+    private String instanceId;
 
-    private GenericNodeConnector       client;
-    private MessageSession              messageSession;
-    private String                     instanceId;
-
     public KnowledgeBaseRemoteClient(String instanceId,
-                                     GenericNodeConnector client, MessageSession messageSession) {
+            GenericNodeConnector connector, MessageSession messageSession) {
         this.instanceId = instanceId;
-        this.client = client;
+        this.connector = connector;
         this.messageSession = messageSession;
     }
 
@@ -44,30 +43,31 @@
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
         String kuilderInstanceId = ((CollectionClient<KnowledgePackage>) kpackages).getParentInstanceId();
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new KnowledgeBaseAddKnowledgePackagesCommand(),
-                                                                                  kuilderInstanceId,
-                                                                                  instanceId,
-                                                                                  null,
-                                                                                  kresultsId ) );
-        
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(new KnowledgeBaseAddKnowledgePackagesCommand(),
+                kuilderInstanceId,
+                instanceId,
+                null,
+                kresultsId));
+
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write(msg).getPayload();
 
-            if ( !(object instanceof FinishedCommand) ) {
-                throw new RuntimeException( "Response was not correctly ended" );
+            if (!(object instanceof FinishedCommand)) {
+                throw new RuntimeException("Response was not correctly ended");
             }
-
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+            connector.disconnect();
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
     }
 
     public FactType getFactType(String packageName,
-                                String typeName) {
+            String typeName) {
         // TODO Auto-generated method stub
         return null;
     }
@@ -88,47 +88,48 @@
     }
 
     public Rule getRule(String packageName,
-                        String ruleName) {
+            String ruleName) {
         // TODO Auto-generated method stub
         return null;
     }
 
     public StatefulKnowledgeSession newStatefulKnowledgeSession() {
-        return newStatefulKnowledgeSession( null,
-                                            null );
+        return newStatefulKnowledgeSession(null,
+                null);
     }
 
     public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf,
-                                                                Environment environment) {
+            Environment environment) {
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
         String localId = UUID.randomUUID().toString();
 
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new SetVariableCommand( "__TEMP__",
-                                                           localId,
-                                                           new KnowledgeContextResolveFromContextCommand( new NewStatefulKnowledgeSessionCommand( conf ),
-                                                                                                          null,
-                                                                                                          instanceId,
-                                                                                                          null,
-                                                                                                          kresultsId ) ) );
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new SetVariableCommand("__TEMP__",
+                localId,
+                new KnowledgeContextResolveFromContextCommand(new NewStatefulKnowledgeSessionCommand(conf),
+                null,
+                instanceId,
+                null,
+                kresultsId)));
 
         try {
-            Object object = client.write( msg ).getPayload();
-            
-            if ( !(object instanceof FinishedCommand) ) {
-                throw new RuntimeException( "Response was not correctly ended" );
-            }
+            connector.connect();
+            Object object = connector.write(msg).getPayload();
 
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+            if (!(object instanceof FinishedCommand)) {
+                throw new RuntimeException("Response was not correctly ended");
+            }
+            connector.disconnect();
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
 
-        return new StatefulKnowledgeSessionRemoteClient( localId,
-                                                         client, messageSession );
+        return new StatefulKnowledgeSessionRemoteClient(localId,
+                connector, messageSession);
     }
 
     public StatelessKnowledgeSession newStatelessKnowledgeSession(KnowledgeSessionConfiguration conf) {
@@ -143,23 +144,19 @@
 
     public void removeKnowledgePackage(String packageName) {
         // TODO Auto-generated method stub
-
     }
 
     public void removeProcess(String processId) {
         // TODO Auto-generated method stub
-
     }
 
     public void removeRule(String packageName,
-                           String ruleName) {
+            String ruleName) {
         // TODO Auto-generated method stub
-
     }
 
     public void addEventListener(KnowledgeBaseEventListener listener) {
         // TODO Auto-generated method stub
-
     }
 
     public Collection<KnowledgeBaseEventListener> getKnowledgeBaseEventListeners() {
@@ -169,13 +166,12 @@
 
     public void removeEventListener(KnowledgeBaseEventListener listener) {
         // TODO Auto-generated method stub
+    }
 
+    public void removeFunction(String packageName, String ruleName) {
+        // TODO Auto-generated method stub
     }
 
-	public void removeFunction(String packageName, String ruleName) {
-		// TODO Auto-generated method stub
-	}
-
     public Query getQuery(String packageName, String queryName) {
         throw new UnsupportedOperationException("Not supported yet.");
     }
@@ -187,5 +183,4 @@
     public Collection<StatefulKnowledgeSession> getStatefulKnowledgeSessions() {
         throw new UnsupportedOperationException("Not supported yet.");
     }
-
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -24,12 +24,12 @@
     implements
     KnowledgeBuilderFactoryService {
     
-    private GenericNodeConnector client;
+    private GenericNodeConnector connector;
     private MessageSession messageSession;
-    public KnowledgeBuilderProviderRemoteClient(GenericNodeConnector client) {
+    public KnowledgeBuilderProviderRemoteClient(GenericNodeConnector connector) {
         
         this.messageSession = new MessageSession();
-        this.client = client;
+        this.connector = connector;
 
     }
 
@@ -48,19 +48,20 @@
                                                            new NewKnowledgeBuilderCommand( null ) ) );
 
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write( msg ).getPayload();
 
             if ( !(object instanceof FinishedCommand) ) {
                 throw new RuntimeException( "Response was not correctly ended" );
             }
-
+            connector.disconnect();
         } catch ( Exception e ) {
             throw new RuntimeException( "Unable to execute message",
                                         e );
         }
 
         return new KnowledgeBuilderRemoteClient( localId,
-                                                 client, messageSession );
+                                                 connector, messageSession );
     }
 
     public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -25,13 +25,13 @@
     KnowledgeBuilder {
     
     private String                     instanceId;
-    private final GenericNodeConnector client;
+    private final GenericNodeConnector connector;
     private final MessageSession messageSession;
 
     public KnowledgeBuilderRemoteClient(String instanceId,
-                                        GenericNodeConnector client, MessageSession messageSession) {
+                                        GenericNodeConnector connector, MessageSession messageSession) {
         this.instanceId = instanceId;
-        this.client = client;
+        this.connector = connector;
         this.messageSession = messageSession;
     }
 
@@ -57,12 +57,13 @@
                                                                                   null ) );
 
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write( msg ).getPayload();
 
             if ( !(object instanceof FinishedCommand) ) {
                 throw new RuntimeException( "Response was not correctly ended" );
             }
-
+            connector.disconnect();
         } catch ( Exception e ) {
             throw new RuntimeException( "Unable to execute message",
                                         e );
@@ -84,12 +85,13 @@
                                                                                   kresultsId ) );
 
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write( msg ).getPayload();
 
             if ( object == null ) {
                 throw new RuntimeException( "Response was not correctly received" );
             }
-
+            connector.disconnect();
             return (KnowledgeBuilderErrors) ((ExecutionResults) object).getValue( commandId );            
 
         } catch ( Exception e ) {
@@ -117,12 +119,13 @@
                                                                                   kresultsId ) );
 
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write( msg ).getPayload();
 
             if ( object == null ) {
                 throw new RuntimeException( "Response was not correctly received" );
             }
-
+            connector.disconnect();
             return (Boolean) ((ExecutionResults) object).getValue( commandId );
 
         } catch ( Exception e ) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -46,22 +46,20 @@
 /*
  * @author: salaboy
  */
-
 public class StatefulKnowledgeSessionRemoteClient
-    implements
-    StatefulKnowledgeSession {
+        implements
+        StatefulKnowledgeSession {
 
+    private GenericNodeConnector connector;
+    private MessageSession messageSession;
+    private String instanceId;
 
-    private GenericNodeConnector     client;
-    private MessageSession              messageSession;
-    private String                      instanceId;
-
     public StatefulKnowledgeSessionRemoteClient(String instanceId,
-                                                GenericNodeConnector client, MessageSession messageSession) {
+            GenericNodeConnector connector, MessageSession messageSession) {
         this.instanceId = instanceId;
-        this.client = client;
+        this.connector = connector;
         this.messageSession = messageSession;
-        
+
     }
 
     public String getInstanceId() {
@@ -70,7 +68,6 @@
 
     public void dispose() {
         // TODO Auto-generated method stub
-
     }
 
     public int getId() {
@@ -82,25 +79,26 @@
         String commandId = "ksession.fireAllRules" + messageSession.getNextId();
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( CommandFactory.newFireAllRules( commandId ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  instanceId,
-                                                                                  kresultsId ) );
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(CommandFactory.newFireAllRules(commandId),
+                null,
+                null,
+                instanceId,
+                kresultsId));
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write(msg).getPayload();
 
-            if ( object == null ) {
-                throw new RuntimeException( "Response was not correctly received" );
+            if (object == null) {
+                throw new RuntimeException("Response was not correctly received");
             }
-
-            return (Integer) ((ExecutionResults) object).getValue( commandId );
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+            connector.disconnect();
+            return (Integer) ((ExecutionResults) object).getValue(commandId);
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
     }
 
@@ -116,38 +114,37 @@
 
     public void fireUntilHalt() {
         // TODO Auto-generated method stub
-
     }
 
     public void fireUntilHalt(AgendaFilter agendaFilter) {
         // TODO Auto-generated method stub
-
     }
 
     public ExecutionResults execute(Command command) {
         String commandId = "ksession.execute" + messageSession.getNextId();
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new ExecuteCommand( commandId,
-                                                                                                      command ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  instanceId,
-                                                                                  kresultsId ) );
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(new ExecuteCommand(commandId,
+                command),
+                null,
+                null,
+                instanceId,
+                kresultsId));
 
         try {
-            Object object = client.write( msg ).getPayload();
-            if ( object == null ) {
-                throw new RuntimeException( "Response was not correctly received" );
+            connector.connect();
+            Object object = connector.write(msg).getPayload();
+            if (object == null) {
+                throw new RuntimeException("Response was not correctly received");
             }
-
-            return (ExecutionResults) ((ExecutionResults) object).getValue( commandId );
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+            connector.disconnect();
+            return (ExecutionResults) ((ExecutionResults) object).getValue(commandId);
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
     }
 
@@ -157,30 +154,31 @@
     }
 
     public Object getGlobal(String identifier) {
-         String commandId = "ksession.execute" + messageSession.getNextId();
+        String commandId = "ksession.execute" + messageSession.getNextId();
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new GetGlobalCommand( identifier ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  instanceId,
-                                                                                  kresultsId ) );
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(new GetGlobalCommand(identifier),
+                null,
+                null,
+                instanceId,
+                kresultsId));
 
         try {
-            Object result = client.write( msg ).getPayload();
-            if ( result == null ) {
-                throw new RuntimeException( "Response was not correctly received = null" );
+            connector.connect();
+            Object result = connector.write(msg).getPayload();
+            if (result == null) {
+                throw new RuntimeException("Response was not correctly received = null");
             }
+            connector.disconnect();
+            return result;
 
-           return result;
 
-
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
     }
 
@@ -200,47 +198,46 @@
     }
 
     public void registerExitPoint(String name,
-                                  ExitPoint exitPoint) {
+            ExitPoint exitPoint) {
         // TODO Auto-generated method stub
-
     }
 
     public void setGlobal(String identifier,
-                          Object object) {
+            Object object) {
         String commandId = "ksession.execute" + messageSession.getNextId();
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new SetGlobalCommand( identifier,
-                                                                                                      object ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  instanceId,
-                                                                                  kresultsId ) );
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(new SetGlobalCommand(identifier,
+                object),
+                null,
+                null,
+                instanceId,
+                kresultsId));
 
         try {
-            Object result = client.write( msg ).getPayload();
-            if ( result == null ) {
-                throw new RuntimeException( "Response was not correctly received = null" );
+            connector.connect();
+            Object result = connector.write(msg).getPayload();
+            if (result == null) {
+                throw new RuntimeException("Response was not correctly received = null");
             }
 
-            if ( !(result instanceof FinishedCommand)) {
-                throw new RuntimeException( "Response was not correctly received" );
+            if (!(result instanceof FinishedCommand)) {
+                throw new RuntimeException("Response was not correctly received");
             }
+            connector.disconnect();
 
-
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
 
     }
 
     public void unregisterExitPoint(String name) {
         // TODO Auto-generated method stub
-
     }
 
     public Agenda getAgenda() {
@@ -254,47 +251,47 @@
     }
 
     public QueryResults getQueryResults(String query,
-                                        Object[] arguments) {
+            Object[] arguments) {
         // TODO Auto-generated method stub
         return null;
     }
 
     public WorkingMemoryEntryPoint getWorkingMemoryEntryPoint(String name) {
-       String commandId = "ksession.getWorkingMemoryEntryPoint" + messageSession.getNextId();
+        String commandId = "ksession.getWorkingMemoryEntryPoint" + messageSession.getNextId();
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new GetWorkingMemoryEntryPointRemoteCommand( name ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  instanceId,
-                                                                                  name,
-                                                                                  kresultsId ) );
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(new GetWorkingMemoryEntryPointRemoteCommand(name),
+                null,
+                null,
+                instanceId,
+                name,
+                kresultsId));
 
         try {
-            Object object = client.write( msg ).getPayload();
+            connector.connect();
+            Object object = connector.write(msg).getPayload();
 
-            if ( object == null ) {
-                throw new RuntimeException( "Response was not correctly received" );
+            if (object == null) {
+                throw new RuntimeException("Response was not correctly received");
             }
-
-            return new WorkingMemoryEntryPointRemoteClient(name, client, messageSession);
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+            connector.disconnect();
+            return new WorkingMemoryEntryPointRemoteClient(name, connector, messageSession);
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
     }
 
-    public Collection< ? extends WorkingMemoryEntryPoint> getWorkingMemoryEntryPoints() {
+    public Collection<? extends WorkingMemoryEntryPoint> getWorkingMemoryEntryPoints() {
         // TODO Auto-generated method stub
         return null;
     }
 
     public void halt() {
         // TODO Auto-generated method stub
-
     }
 
     public FactHandle getFactHandle(Object object) {
@@ -328,47 +325,45 @@
     }
 
     public FactHandle insert(Object object) {
-         String commandId = "ksession.insert" + messageSession.getNextId();
+        String commandId = "ksession.insert" + messageSession.getNextId();
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new InsertObjectCommand(object, String.valueOf(object.hashCode()) ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  instanceId,
-                                                                                  kresultsId ) );
 
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(new InsertObjectCommand(object, String.valueOf(object.hashCode())),
+                null,
+                null,
+                instanceId,
+                kresultsId));
+
         try {
-            Object result = client.write( msg ).getPayload();
-            if ( object == null ) {
-                throw new RuntimeException( "Response was not correctly received" );
+            connector.connect();
+            Object result = connector.write(msg).getPayload();
+            if (object == null) {
+                throw new RuntimeException("Response was not correctly received");
             }
-            FactHandle handle = new DisconnectedFactHandle(((ExecutionResults) result).getFactHandle( String.valueOf(object.hashCode()) ).toString()) ;
-
-            return  handle;
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+            FactHandle handle = new DisconnectedFactHandle(((ExecutionResults) result).getFactHandle(String.valueOf(object.hashCode())).toString());
+            connector.disconnect();
+            return handle;
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
     }
 
     public void retract(FactHandle handle) {
         // TODO Auto-generated method stub
-
     }
 
     public void update(FactHandle handle,
-                       Object object) {
+            Object object) {
         // TODO Auto-generated method stub
-
     }
 
     public void abortProcessInstance(long id) {
         // TODO Auto-generated method stub
-
     }
 
     public ProcessInstance getProcessInstance(long id) {
@@ -382,98 +377,99 @@
     }
 
     public WorkItemManager getWorkItemManager() {
-    	 String kresultsId = "kresults_" + messageSession.getSessionId();
-         Message msg = new Message( messageSession.getSessionId(),
-                                    messageSession.counter.incrementAndGet(),
-                                    true,
-                                    new KnowledgeContextResolveFromContextCommand( new GetWorkItemManagerCommand(),
-                                                                                   null,
-                                                                                   null,
-                                                                                   instanceId,
-                                                                                   kresultsId ) );
-         try {
-             Object payload = client.write( msg ).getPayload();
-             WorkItemManager workItemManager = (WorkItemManager) ((ExecutionResults) payload).getValue( "workItemManager" );
-             ((WorkItemManagerRemoteClient)workItemManager).setClient(client);
-             ((WorkItemManagerRemoteClient)workItemManager).setMessageSession(messageSession);
-             ((WorkItemManagerRemoteClient)workItemManager).setInstanceId(instanceId);
-             return workItemManager;
-         } catch ( Exception e ) {
-             throw new RuntimeException( "Unable to execute message", e );
-         }
+        String kresultsId = "kresults_" + messageSession.getSessionId();
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                true,
+                new KnowledgeContextResolveFromContextCommand(new GetWorkItemManagerCommand(),
+                null,
+                null,
+                instanceId,
+                kresultsId));
+        try {
+            connector.connect();
+            Object payload = connector.write(msg).getPayload();
+            WorkItemManager workItemManager = (WorkItemManager) ((ExecutionResults) payload).getValue("workItemManager");
+            ((WorkItemManagerRemoteClient) workItemManager).setConnector(connector);
+            ((WorkItemManagerRemoteClient) workItemManager).setMessageSession(messageSession);
+            ((WorkItemManagerRemoteClient) workItemManager).setInstanceId(instanceId);
+            connector.disconnect();
+            return workItemManager;
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message", e);
+        }
     }
-    
-    public void registerWorkItemHandler(String name, String workItemHandler){
-        
+
+    public void registerWorkItemHandler(String name, String workItemHandler) {
+
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new RegisterRemoteWorkItemHandlerCommand(name, workItemHandler ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  instanceId,
-                                                                                  kresultsId ) );
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(new RegisterRemoteWorkItemHandlerCommand(name, workItemHandler),
+                null,
+                null,
+                instanceId,
+                kresultsId));
 
         try {
-            client.write( msg );
-            
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+            connector.connect();
+            connector.write(msg);
+            connector.disconnect();
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
 
 
     }
 
     public void signalEvent(String type,
-                            Object event) {
+            Object event) {
         // TODO Auto-generated method stub
-
     }
 
     public ProcessInstance startProcess(String processId) {
         String commandId = "ksession.execute" + messageSession.getNextId();
         String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( messageSession.getSessionId(),
-                                   messageSession.counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new StartProcessRemoteCommand( processId ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  instanceId,
-                                                                                  kresultsId ) );
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.counter.incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(new StartProcessRemoteCommand(processId),
+                null,
+                null,
+                instanceId,
+                kresultsId));
 
         try {
-            Object object = client.write( msg ).getPayload();
-            if ( object == null ) {
-                throw new RuntimeException( "Response was not correctly received" );
+            connector.connect();
+            Object object = connector.write(msg).getPayload();
+            if (object == null) {
+                throw new RuntimeException("Response was not correctly received");
             }
-
-            return (ProcessInstance) ((ExecutionResults) object).getValue( processId );
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
+            connector.disconnect();
+            return (ProcessInstance) ((ExecutionResults) object).getValue(processId);
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
         }
-        
+
     }
 
     public ProcessInstance startProcess(String processId,
-                                        Map<String, Object> parameters) {
+            Map<String, Object> parameters) {
         // TODO Auto-generated method stub
         return null;
     }
 
     public void addEventListener(WorkingMemoryEventListener listener) {
         // TODO Auto-generated method stub
-
     }
 
     public void addEventListener(AgendaEventListener listener) {
         // TODO Auto-generated method stub
-
     }
 
     public Collection<AgendaEventListener> getAgendaEventListeners() {
@@ -488,17 +484,14 @@
 
     public void removeEventListener(WorkingMemoryEventListener listener) {
         // TODO Auto-generated method stub
-
     }
 
     public void removeEventListener(AgendaEventListener listener) {
         // TODO Auto-generated method stub
-
     }
 
     public void addEventListener(ProcessEventListener listener) {
         // TODO Auto-generated method stub
-
     }
 
     public Collection<ProcessEventListener> getProcessEventListeners() {
@@ -508,7 +501,6 @@
 
     public void removeEventListener(ProcessEventListener listener) {
         // TODO Auto-generated method stub
-
     }
 
     public String getEntryPointId() {
@@ -522,10 +514,9 @@
     }
 
     public void signalEvent(String type,
-                            Object event,
-                            long processInstanceId) {
+            Object event,
+            long processInstanceId) {
         // TODO Auto-generated method stub
-        
     }
 
     public Calendars getCalendars() {
@@ -548,7 +539,4 @@
     public LiveQuery openLiveQuery(String query, Object[] arguments, ViewChangedEventListener listener) {
         throw new UnsupportedOperationException("Not supported yet.");
     }
-
-   
-
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -20,7 +20,7 @@
 
 	private static final long serialVersionUID = 1L;
 	
-	private GenericNodeConnector     client;
+	private GenericNodeConnector     connector;
         private MessageSession              messageSession;
 	private String instanceId;
 
@@ -39,7 +39,9 @@
                                                                                   instanceId,
                                                                                   kresultsId ) );
         try {
-            client.write( msg );
+            connector.connect();
+            connector.write( msg );
+            connector.disconnect();
         } catch ( Exception e ) {
             throw new RuntimeException( "Unable to execute message", e );
         }
@@ -49,8 +51,8 @@
 		throw new UnsupportedOperationException("Not supported yet.");
 	}
 
-        public void setClient(GenericNodeConnector client) {
-            this.client = client;
+        public void setConnector(GenericNodeConnector connector) {
+            this.connector = connector;
         }
 
         public void setMessageSession(MessageSession messageSession) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/WorkingMemoryEntryPointRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/WorkingMemoryEntryPointRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/WorkingMemoryEntryPointRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -36,12 +36,12 @@
  */
 public class WorkingMemoryEntryPointRemoteClient implements WorkingMemoryEntryPoint{
 
-     private GenericNodeConnector     client;
+     private GenericNodeConnector     connector;
     private MessageSession              messageSession;
     private String                      instanceId;
 
-    public WorkingMemoryEntryPointRemoteClient(String instanceId, GenericNodeConnector client, MessageSession messageSession) {
-        this.client = client;
+    public WorkingMemoryEntryPointRemoteClient(String instanceId, GenericNodeConnector connector, MessageSession messageSession) {
+        this.connector = connector;
         this.messageSession = messageSession;
         this.instanceId = instanceId;
     }
@@ -62,12 +62,13 @@
                                                                                   kresultsId ) );
 
         try {
-            Object result = client.write( msg ).getPayload();
+            connector.connect();
+            Object result = connector.write( msg ).getPayload();
             if ( object == null ) {
                 throw new RuntimeException( "Response was not correctly received" );
             }
             FactHandle handle = new DisconnectedFactHandle(((ExecutionResults) result).getFactHandle( String.valueOf(object.hashCode()) ).toString()) ;
-            
+            connector.disconnect();
             return  handle;
         } catch ( Exception e ) {
             throw new RuntimeException( "Unable to execute message",

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -14,7 +14,6 @@
  *  limitations under the License.
  *  under the License.
  */
-
 package org.drools.grid.remote.directory;
 
 import java.rmi.RemoteException;
@@ -43,107 +42,105 @@
  *
  * @author salaboy
  */
-public class DirectoryNodeRemoteClient implements DirectoryNodeService { 
+public class DirectoryNodeRemoteClient implements DirectoryNodeService {
+
     private GenericNodeConnector connector;
 
     DirectoryNodeRemoteClient(GenericNodeConnector connector) {
         this.connector = connector;
     }
 
-    public void register(String executorId, String resourceId) throws ConnectorException {
+    public void register(String executorId, String resourceId) throws ConnectorException, RemoteException {
+        connector.connect();
         List<Object> args = new ArrayList<Object>(2);
         args.add(executorId);
         args.add(resourceId);
         SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RegisterExecutor, args);
         Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
-        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
-        write(msg, handler);
-        
+        write(msg, null);
+        connector.disconnect();
+
     }
 
     public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException {
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
-    public GenericNodeConnector lookup(String resourceId) throws ConnectorException {
-        
+    public GenericNodeConnector lookup(String resourceId) throws ConnectorException, RemoteException {
+        connector.connect();
         List<Object> args = new ArrayList<Object>(1);
         args.add(resourceId);
         SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestLookupSessionId, args);
         Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
-        SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
-        return GenericConnectorFactory.newConnector((String)resultcmd.getArguments().get(0));
+        SimpleCommand resultcmd = (SimpleCommand) handler.getMessage().getPayload();
+        connector.disconnect();
+        return GenericConnectorFactory.newConnector((String) resultcmd.getArguments().get(0));
     }
 
-    public void registerKBase(String kbaseId, String resourceId) throws ConnectorException {
+    public void registerKBase(String kbaseId, String resourceId) throws ConnectorException, RemoteException {
+        connector.connect();
         List<Object> args = new ArrayList<Object>(2);
         args.add(kbaseId);
         args.add(resourceId);
         SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RegisterKBase, args);
         Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
-        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
-        write(msg, handler);
+        write(msg, null);
+        connector.disconnect();
     }
 
-    public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException {
+    public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException {
+        connector.connect();
         List<Object> args = new ArrayList<Object>(1);
         args.add(kbaseId);
         SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestKBaseId, args);
         Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
-        SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
-        String connectorString = (String)resultcmd.getArguments().get(0);
+        SimpleCommand resultcmd = (SimpleCommand) handler.getMessage().getPayload();
+        String connectorString = (String) resultcmd.getArguments().get(0);
         GenericNodeConnector currentConnector = GenericConnectorFactory.newConnector(connectorString);
-        try {
-            currentConnector.connect();
-        } catch (RemoteException ex) {
-            Logger.getLogger(DirectoryNodeRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
-        }
-        
-        return new KnowledgeBaseRemoteClient(kbaseId, currentConnector, new MessageSession() );
+        connector.disconnect();
+        return new KnowledgeBaseRemoteClient(kbaseId, currentConnector, new MessageSession());
     }
 
-   
-
-    public Map<String, String> getExecutorsMap() throws ConnectorException {
-
+    public Map<String, String> getExecutorsMap() throws ConnectorException, RemoteException {
+        connector.connect();
         SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestExecutorsMap, null);
         Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
-        SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
-        return (Map<String,String>)resultcmd.getArguments().get(0);
+        SimpleCommand resultcmd = (SimpleCommand) handler.getMessage().getPayload();
+        connector.disconnect();
+        return (Map<String, String>) resultcmd.getArguments().get(0);
     }
 
-
-    
-
     public void dispose() throws ConnectorException, RemoteException {
         this.connector.disconnect();
     }
 
-    public String lookupId(String resourceId) throws ConnectorException {
+    public String lookupId(String resourceId) throws ConnectorException, RemoteException {
+        connector.connect();
         List<Object> args = new ArrayList<Object>(1);
         args.add(resourceId);
         SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestLookupSessionId, args);
         Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
-        SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
-        return (String)resultcmd.getArguments().get(0);
+        SimpleCommand resultcmd = (SimpleCommand) handler.getMessage().getPayload();
+        connector.disconnect();
+        return (String) resultcmd.getArguments().get(0);
     }
 
-     private Message write(Message msg) throws ConnectorException, RemoteException{
+    private Message write(Message msg) throws ConnectorException, RemoteException {
         BlockingMessageResponseHandler responseHandler = new BlockingMessageResponseHandler();
 
         if (responseHandler != null) {
             addResponseHandler(msg.getResponseId(),
                     responseHandler);
         }
-        ((RemoteMinaDirectoryConnector)this.connector).getSession().write(msg);
+        ((RemoteMinaDirectoryConnector) this.connector).getSession().write(msg);
 
         Message returnMessage = responseHandler.getMessage();
         if (responseHandler.getError() != null) {
@@ -153,20 +150,20 @@
         return returnMessage;
     }
 
-    private void write(Message msg, MessageResponseHandler responseHandler)  {
+    private void write(Message msg, MessageResponseHandler responseHandler) {
         if (responseHandler != null) {
             addResponseHandler(msg.getResponseId(),
                     responseHandler);
         }
-       
-        ((RemoteMinaDirectoryConnector)this.connector).getSession().write(msg);
-        
 
+        ((RemoteMinaDirectoryConnector) this.connector).getSession().write(msg);
+
+
     }
 
     private void addResponseHandler(int id,
             MessageResponseHandler responseHandler) {
-        ((MinaIoHandler) ((RemoteMinaDirectoryConnector)this.connector).getSession().getHandler()).addResponseHandler(id,
+        ((MinaIoHandler) ((RemoteMinaDirectoryConnector) this.connector).getSession().getHandler()).addResponseHandler(id,
                 responseHandler);
 
     }
@@ -175,24 +172,25 @@
         return "Remote:Directory";
     }
 
-    
-
     public void unregister(String executorId) throws ConnectorException, RemoteException {
+        connector.connect();
         List<Object> args = new ArrayList<Object>(2);
         args.add(executorId);
         SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.UnRegisterExecutor, args);
         Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
-        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
-        write(msg, handler);
+        write(msg, null);
+        connector.disconnect();
     }
 
     public Map<String, String> getKBasesMap() throws ConnectorException, RemoteException {
-       SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestKBasesMap, null);
+        connector.connect();
+        SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestKBasesMap, null);
         Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
-        SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
-        return (Map<String,String>)resultcmd.getArguments().get(0);
+        SimpleCommand resultcmd = (SimpleCommand) handler.getMessage().getPayload();
+        connector.disconnect();
+        return (Map<String, String>) resultcmd.getArguments().get(0);
     }
 
     public void registerKBase(String kbaseId, KnowledgeBase kbase) throws ConnectorException, RemoteException {
@@ -207,10 +205,7 @@
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
-    
-
     public ServiceType getServiceType() throws ConnectorException, RemoteException {
         return ServiceType.REMOTE;
     }
-
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/RemoteMinaNodeConnector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/RemoteMinaNodeConnector.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/RemoteMinaNodeConnector.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -2,6 +2,7 @@
 
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
+import java.util.UUID;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -62,7 +63,7 @@
         try {
             this.connector = new NioSocketConnector();
             this.connector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
-            this.connector.getFilterChain().addLast(this.name + "codec",
+            this.connector.getFilterChain().addLast(this.name + "codec"+UUID.randomUUID().toString(),
                     new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
 
             ConnectFuture future1 = this.connector.connect(this.address);

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericDirectoryProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericDirectoryProvider.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericDirectoryProvider.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -1,31 +0,0 @@
-package org.drools.grid.services;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.drools.grid.GenericNodeConnector;
-
-/**
- * @author salaboy
- */
-public abstract class GenericDirectoryProvider {
-    protected Map<String, Object> parameters = new HashMap<String, Object>();
-
-
-    public abstract GenericNodeConnector getDirectoryConnector();
- 
-    
-    
-    public void setParameter(String name, Object value){
-        this.parameters.put(name, value);
-    }
-    public Object getParameter(String name){
-        return this.parameters.get(name);
-    }
-    public Map<String, Object> getParameters(){
-        return this.parameters;
-    }
-
-    public abstract DirectoryInstance getDirectoryInstance(String name);
-
-    public abstract String getId();
-}

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericHumanTaskProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericHumanTaskProvider.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericHumanTaskProvider.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -1,31 +0,0 @@
-package org.drools.grid.services;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.drools.grid.GenericHumanTaskConnector;
-
-/**
- * @author salaboy
- */
-public abstract class GenericHumanTaskProvider {
-    protected Map<String, Object> parameters = new HashMap<String, Object>();
-
-
-    public abstract GenericHumanTaskConnector getHumanTaskConnector();
-
-    
-    
-    public void setParameter(String name, Object value){
-        this.parameters.put(name, value);
-    }
-    public Object getParameter(String name){
-        return this.parameters.get(name);
-    }
-    public Map<String, Object> getParameters(){
-        return this.parameters;
-    }
-
-    public abstract TaskServerInstance getTaskServerInstance(String name);
-
-    public abstract String getId();
-}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -26,31 +26,49 @@
     /*
      * Creates a new TaskServer Instance that will be associated to a name using the
      * GenericNodeConnector provided.
+     * @param name
+     * @param connector
      */
     public TaskServerInstance(String name, GenericNodeConnector connector) {
         this.name = name;
         this.connector = connector;
     }
 
+    /*
+     * Get a HumanTaskNode based on the default NodeSelectionStrategy
+     */
     public HumanTaskNode getHumanTaskNode() throws ConnectorException {
         return getHumanTaskNode(defaultStrategy);
     }
 
+    /*
+     * Get a HumanTaskNode based on the provided NodeSelectionStrategy
+     * @param strategy
+     */
     public HumanTaskNode getHumanTaskNode(NodeSelectionStrategy strategy) throws ConnectorException{
         GenericConnection connection = getConnector().getConnection();
         return connection.getHumanTaskNode(strategy);
     }
 
+    /*
+     * Get all the HumanTaskNodes inside the TaskServerInstance.
+     * This can be expensive because it needs to get a connection to all the HumanTaskNodes.
+     */
     public List<HumanTaskNode> getHumanTaskNodes() throws ConnectorException{
         GenericConnection connection = getConnector().getConnection();
         return connection.getHumanTaskNodes();
     }
 
-
+    /*
+     * Get the GenericNodeConnector from this TaskServerInstance
+     */
     public GenericNodeConnector getConnector(){
         return this.connector;
     }
 
+    /*
+     * Get the TaskServerInstance name
+     */
     public String getName() {
         return name;
     }

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -1,77 +0,0 @@
-/*
- *  Copyright 2010 salaboy.
- * 
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- * 
- *       http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *  under the License.
- */
-
-package org.drools.grid.services.strategies;
-
-import java.util.Map;
-import org.drools.grid.services.ExecutionEnvironment;
-
-
-/**
- *
- * @author salaboy
- *
- * The Environment with lowest ping will be selected
- */
-public class LowPingFirstEnvironmentSelectionStrategy implements ExecutionEnvironmentSelectionStrategy {
-
-    private Map<String, ExecutionEnvironment> environments;
-
-    public LowPingFirstEnvironmentSelectionStrategy() {
-    }
-
-
-    public LowPingFirstEnvironmentSelectionStrategy(Map<String, ExecutionEnvironment> environments) {
-        this.environments = environments;
-    }
-
-
-    public ExecutionEnvironment getBestGridResource() {
-        ExecutionEnvironment selectedEnv = null;
-        for(ExecutionEnvironment env : this.environments.values()){
-            if(selectedEnv != null){
-//                try {
-//                    int oldping = Integer.parseInt(selectedEnv.getInfo().get("ping").toString());
-//                    long ping = env.ping();
-//                    if (oldping > ping) {
-//                        selectedEnv = env;
-//                    }
-//                } catch (IOException ex) {
-//                    Logger.getLogger(LowPingFirstEnvironmentSelectionStrategy.class.getName()).log(Level.SEVERE, null, ex);
-//                }
-
-            }
-
-        }
-
-        return selectedEnv;
-    }
-
-    public void setExecutionEnvironments(Map<String, ExecutionEnvironment> environments) {
-        this.environments = environments;
-    }
-
-    public ExecutionEnvironment getBestExecutionEnvironment(Map<String, ExecutionEnvironment> executionEnvironments) {
-        setExecutionEnvironments(environments);
-        return getBestGridResource();
-    }
-
-    
-    
-   
-
-}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceByPrioritySelectionStrategy.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceByPrioritySelectionStrategy.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceByPrioritySelectionStrategy.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -50,7 +50,7 @@
             private Map<ConnectorType , Integer> priorities
                         = new HashMap<ConnectorType, Integer>() {
                 {
-                    put(ConnectorType.LOCAL, 1);
+                   // put(ConnectorType.LOCAL, 1);
                    // put("RioEnvironmentProvider", 2);
                    // put("HornetQEnvironmentProvider", 3);
                    put(ConnectorType.REMOTE, 4);

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -75,21 +75,21 @@
     public void directoryLocalTest() throws ConnectorException, RemoteException {
 
         GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
-        gridTopologyConfiguration.addDirectoryInstance(new DirectoryInstanceConfiguration("MyLocalDir", new LocalProvider()));
-        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
+        gridTopologyConfiguration
+                .addDirectoryInstance(new DirectoryInstanceConfiguration("MyLocalDir", new LocalProvider()));
+        gridTopologyConfiguration
+                .addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
 
         grid = GridTopologyFactory.build(gridTopologyConfiguration);
-
         Assert.assertNotNull(grid);
 
         DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         Assert.assertNotNull("Directory Instance null", directory);
 
         DirectoryNodeService dir = directory.getDirectoryNode().get(DirectoryNodeService.class);
-        directory.getConnector().disconnect();
+        //directory.getConnector().disconnect();
 
         Assert.assertNotNull("Dir Null", dir);
-        System.out.println("Dir = " + dir.getExecutorsMap());
         Assert.assertEquals(2, dir.getExecutorsMap().size());
 
         grid.dispose();
@@ -106,21 +106,15 @@
         gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
         gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv2", new LocalProvider()));
 
-
         grid = GridTopologyFactory.build(gridTopologyConfiguration);
 
-
         Assert.assertNotNull(grid);
 
-
-
-
-        //DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         DirectoryInstance directory = grid.getDirectoryInstance("MyLocalDir");
         Assert.assertNotNull("DirInstance is null!", directory);
 
         DirectoryNodeService dir = directory.getDirectoryNode().get(DirectoryNodeService.class);
-        ;
+        
         Assert.assertNotNull("Dir is null!", dir);
         //This assertion is not deterministic
         //Assert.assertEquals(4, dir.getExecutorsMap().size());
@@ -129,14 +123,12 @@
         Assert.assertNotNull("DirInstance 2 is null!", directory2);
 
         DirectoryNodeService dir2 = directory2.getDirectoryNode().get(DirectoryNodeService.class);
-        ;
+        
         Assert.assertNotNull("Dir 2 is null!", dir2);
         //This assertion is not deterministic
         //Assert.assertEquals(3, dir2.getExecutorsMap().size());
 
         // the only thing that is for sure is
-        System.out.println("dir1 exec map" + dir.getExecutorsMap());
-        System.out.println("dir2 exec map" + dir2.getExecutorsMap());
         Assert.assertTrue((dir2.getExecutorsMap().size() + dir.getExecutorsMap().size()) > 4);
 
         grid.dispose();
@@ -149,26 +141,14 @@
 
         GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
         gridTopologyConfiguration.addDirectoryInstance(new DirectoryInstanceConfiguration("MyLocalDir", new LocalProvider()));
-
-
         gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
 
-
-
         grid = GridTopologyFactory.build(gridTopologyConfiguration);
-
-
         Assert.assertNotNull(grid);
 
-
-
-
-
-
         ExecutionEnvironment ee = grid.getBestExecutionEnvironment(new ExecutionEnvByPrioritySelectionStrategy());
         Assert.assertNotNull(ee);
-        System.out.println("EE Name = " + ee.getName());
-
+        
         ExecutionNode node = ee.getExecutionNode();
         Assert.assertNotNull(node);
 
@@ -212,7 +192,8 @@
 
         kbase = dirService.lookupKBase("DoctorsKBase");
         Assert.assertNotNull(kbase);
-        directory.getConnector().disconnect();
+        //directory.getConnector().disconnect();
+
         grid.dispose();
 
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -65,10 +65,11 @@
  * @author salaboy
  */
 public class RegisterMinaDirectoryTest {
+
     private GridTopology grid;
     private MinaAcceptor serverDir;
     private MinaAcceptor serverNode;
- 
+
     public RegisterMinaDirectoryTest() {
     }
 
@@ -83,8 +84,8 @@
     @Before
     public void setUp() throws InterruptedException, IOException {
 
-       System.out.println("Dir Server 1 Starting!");
-         // Directory Server configuration
+        System.out.println("Dir Server 1 Starting!");
+        // Directory Server configuration
         SocketAddress dirAddress = new InetSocketAddress("127.0.0.1", 9123);
         SocketAcceptor dirAcceptor = new NioSocketAcceptor();
 
@@ -99,7 +100,7 @@
 
         //Execution Node related stuff
 
-           System.out.println("Exec Server 1 Starting!");
+        System.out.println("Exec Server 1 Starting!");
         // the servers should be started in a different machine (jvm or physical) or in another thread
         SocketAddress address = new InetSocketAddress("127.0.0.1", 9124);
         NodeData nodeData = new NodeData();
@@ -112,15 +113,15 @@
         serverNode.start();
         System.out.println("Exec Server 1 Started! at = " + address.toString());
 
-        
 
+
     }
 
     @After
     public void tearDown() throws InterruptedException, ConnectorException, RemoteException {
 
         Thread.sleep(3000);
-        
+
         Assert.assertEquals(0, serverNode.getCurrentSessions());
         serverNode.stop();
         System.out.println("Execution Server Stopped!");
@@ -133,19 +134,15 @@
     }
 
     @Test
-     public void directoryRemoteTest() throws ConnectorException, RemoteException {
+    public void directoryRemoteTest() throws ConnectorException, RemoteException {
         GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
         gridTopologyConfiguration.addDirectoryInstance(new DirectoryInstanceConfiguration("MyMinaDir", new MinaProvider("127.0.0.1", 9123)));
         gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
         gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyRemoteEnv", new MinaProvider("127.0.0.1", 9124)));
 
-
         grid = GridTopologyFactory.build(gridTopologyConfiguration);
-
         Assert.assertNotNull(grid);
-       
 
-
         DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         Assert.assertNotNull(directory);
 
@@ -153,14 +150,11 @@
         Assert.assertNotNull(dir);
         Map<String, String> dirMap = dir.getExecutorsMap();
         
-        directory.getConnector().disconnect();
-
-
         Assert.assertNotNull("Dir Null", dirMap);
 
         Assert.assertEquals(3, dirMap.size());
 
-        System.out.println("dir.getDirectoryMap() = "+dirMap);
+        System.out.println("dir.getDirectoryMap() = " + dirMap);
 
         Assert.assertEquals(3, dirMap.size());
         Assert.assertEquals(0, serverNode.getCurrentSessions());
@@ -168,7 +162,7 @@
 
         ExecutionEnvironment ee = grid.getExecutionEnvironment("MyRemoteEnv");
         Assert.assertNotNull(ee);
-        
+
         // Give me an ExecutionNode in the selected environment
         // For the Mina we have just one Execution Node per server instance
         ExecutionNode node = ee.getExecutionNode();
@@ -219,16 +213,13 @@
         int fired = ksession.fireAllRules();
 
         Assert.assertEquals(2, fired);
-
-        
-
         grid.dispose();
 
-        
 
-     }
 
-     @Test
+    }
+
+    @Test
     public void directoryInstanceRetriveKSessionFromEE() throws ConnectorException, RemoteException {
 
         GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
@@ -237,13 +228,7 @@
 
 
         grid = GridTopologyFactory.build(gridTopologyConfiguration);
-
-
         Assert.assertNotNull(grid);
-
-
-       
-
         //Then we can get the registered Execution Environments by Name
 
         ExecutionEnvironment ee = grid.getExecutionEnvironment("MyMinaExecutionEnv1");
@@ -293,27 +278,18 @@
         Assert.assertNotNull(ksession);
 
         node.get(DirectoryLookupFactoryService.class).register("sessionName", ksession);
-       
+
         grid.disconnect();
 
         DirectoryInstance directoryInstance = grid.getDirectoryInstance();
         DirectoryNodeService directory = directoryInstance.getDirectoryNode().get(DirectoryNodeService.class);
         GenericNodeConnector connector = directory.lookup("sessionName");
-        
-        directoryInstance.getConnector().disconnect();
 
-        
-        //System.out.println("Connector -->"+connector.getId());
+        node = grid.getExecutionEnvironment(connector).getExecutionNode();
+        ksession = (StatefulKnowledgeSession) node.get(DirectoryLookupFactoryService.class).lookup("sessionName");
+        Assert.assertNotNull(ksession);
 
-       node = grid.getExecutionEnvironment(connector).getExecutionNode();
-//
-       ksession = (StatefulKnowledgeSession) node.get(DirectoryLookupFactoryService.class).lookup("sessionName");
-       Assert.assertNotNull(ksession);
+        grid.dispose();
 
-       grid.dispose();
-
     }
-
-
-   
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -21,10 +21,8 @@
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import org.junit.Assert;
-import org.drools.grid.services.configuration.GenericProvider;
 import org.drools.grid.services.configuration.LocalProvider;
 import org.drools.grid.services.configuration.MinaProvider;
-
 import java.rmi.RemoteException;
 import org.apache.mina.transport.socket.SocketAcceptor;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
@@ -42,7 +40,6 @@
 import org.drools.grid.remote.mina.MinaIoHandler;
 import org.drools.grid.services.ExecutionEnvironment;
 import org.drools.grid.services.GridTopology;
-import org.drools.grid.services.configuration.DirectoryInstanceConfiguration;
 import org.drools.grid.services.configuration.ExecutionEnvironmentConfiguration;
 import org.drools.grid.services.configuration.GridTopologyConfiguration;
 import org.drools.grid.services.factory.GridTopologyFactory;
@@ -61,7 +58,7 @@
  */
 public class ServiceAPITest {
 
-    private MinaAcceptor server1;
+    private MinaAcceptor server;
     private GridTopology grid;
     
     public ServiceAPITest() {
@@ -86,19 +83,19 @@
         acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
                 new GenericMessageHandlerImpl(nodeData,
                 SystemEventListenerFactory.getSystemEventListener())));
-        server1 = new MinaAcceptor(acceptor, address);
-        server1.start();
+        server = new MinaAcceptor(acceptor, address);
+        server.start();
         System.out.println("Server 1 Started! at = " + address.toString());
 
     }
 
     @After
     public void tearDown() throws ConnectorException, RemoteException {
-        System.out.println("Disconecting all clients");
+        
         grid.dispose();
         System.out.println("Stoping Server 1!");
-        Assert.assertEquals(0, server1.getCurrentSessions());
-        server1.stop();
+        Assert.assertEquals(0, server.getCurrentSessions());
+        server.stop();
     }
 
     
@@ -106,20 +103,16 @@
      public void mixedTopologyMinaAndLocal() throws ConnectorException, RemoteException {
 
         GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
-        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyMinaEnv", new MinaProvider("127.0.0.1", 9123)));
-        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
+        gridTopologyConfiguration
+                .addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyMinaEnv", new MinaProvider("127.0.0.1", 9123)));
+        gridTopologyConfiguration
+                .addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
 
-
         grid = GridTopologyFactory.build(gridTopologyConfiguration);
-
-
         Assert.assertNotNull(grid);
 
-        
-
         ExecutionEnvironment ee = grid.getBestExecutionEnvironment(new ExecutionEnvByPrioritySelectionStrategy());
         Assert.assertNotNull(ee);
-        System.out.println("EE Name = "+ee.getName());
 
         ExecutionNode node = ee.getExecutionNode();
         Assert.assertNotNull(node);
@@ -163,10 +156,6 @@
         int fired = ksession.fireAllRules();
         Assert.assertEquals(2, fired);
 
-
-        grid.dispose();
-
-
      }
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -73,7 +73,7 @@
     private String ipAddress = "127.0.0.1";
     private int port = 9124;
     private GenericNodeConnector connector;
-    private HumanTaskServiceImpl client;
+    private HumanTaskServiceRemoteClient client;
     private KnowledgeRuntime session;
     private Map<Long, Long> idMapping = new HashMap<Long, Long>();
     private Map<Long, WorkItemManager> managers = new HashMap<Long, WorkItemManager>();
@@ -93,9 +93,9 @@
             connector = new RemoteMinaHumanTaskConnector("client ht",
                     ipAddress, port,
                     SystemEventListenerFactory.getSystemEventListener());
+            int id = ((StatefulKnowledgeSession) session).getId();
             connector.connect();
-            int id = ((StatefulKnowledgeSession) session).getId();
-            client = new HumanTaskServiceImpl(connector, id);
+            client = new HumanTaskServiceRemoteClient(connector, id);
         }
     }
 

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceImpl.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceImpl.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -1,440 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.grid.task;
-
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.drools.eventmessaging.EventKey;
-import org.drools.grid.ConnectorException;
-import org.drools.grid.GenericNodeConnector;
-import org.drools.grid.internal.Message;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.AddAttachmentMessageResponseHandler;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.AddCommentMessageResponseHandler;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.AddTaskMessageResponseHandler;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.DeleteAttachmentMessageResponseHandler;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.DeleteCommentMessageResponseHandler;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.GetContentMessageResponseHandler;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.GetTaskMessageResponseHandler;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.SetDocumentMessageResponseHandler;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.TaskOperationMessageResponseHandler;
-import org.drools.grid.task.TaskClientMessageHandlerImpl.TaskSummaryMessageResponseHandler;
-import org.drools.grid.task.eventmessaging.EventMessageResponseHandler;
-import org.drools.task.Attachment;
-import org.drools.task.Comment;
-import org.drools.task.Content;
-import org.drools.task.Task;
-import org.drools.task.service.Command;
-import org.drools.task.service.CommandName;
-import org.drools.task.service.ContentData;
-import org.drools.task.service.FaultData;
-import org.drools.task.service.Operation;
-
-/**
- * @author salaboy
- * @author Lucas Amador
- *
- */
-public class HumanTaskServiceImpl implements HumanTaskService {
-
-    private final GenericNodeConnector client;
-    private final AtomicInteger counter;
-    private int sessionId;
-    private String clientName;
-
-    public HumanTaskServiceImpl(GenericNodeConnector client, int sessionId) {
-        this.client = client;
-        this.counter = new AtomicInteger();
-        this.clientName = String.valueOf(sessionId);
-        this.sessionId = sessionId;
-
-    }
-
-
-
-    public void disconnect() throws ConnectorException {
-        try {
-            this.client.disconnect();
-        } catch (RemoteException ex) {
-            Logger.getLogger(HumanTaskServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
-        }
-        }
-
-    public void addTask(Task task, ContentData content, AddTaskMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(task);
-        args.add(content);
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.AddTaskRequest, args);
-
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public Task getTask(long taskId, GetTaskMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(1);
-        args.add(taskId);
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.GetTaskRequest, args);
-
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-        client.write(msg, responseHandler);
-        return null;
-    }
-
-    public void addComment(long taskId, Comment comment, AddCommentMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(taskId);
-        args.add(comment);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.AddCommentRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void deleteComment(long taskId, long commentId, DeleteCommentMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(taskId);
-        args.add(commentId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.DeleteCommentRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void addAttachment(long taskId, Attachment attachment, Content content, AddAttachmentMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(taskId);
-        args.add(attachment);
-        args.add(content);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.AddAttachmentRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void deleteAttachment(long taskId, long attachmentId, long contentId, DeleteAttachmentMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(taskId);
-        args.add(attachmentId);
-        args.add(contentId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.DeleteAttachmentRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void setDocumentContent(long taskId, Content content, SetDocumentMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(taskId);
-        args.add(content);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.SetDocumentContentRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getContent(long contentId, GetContentMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(1);
-        args.add(contentId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.GetContentRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void claim(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(Operation.Claim);
-        args.add(taskId);
-        args.add(userId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void start(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(Operation.Start);
-        args.add(taskId);
-        args.add(userId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void stop(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(Operation.Stop);
-        args.add(taskId);
-        args.add(userId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void release(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(Operation.Release);
-        args.add(taskId);
-        args.add(userId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void suspend(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(Operation.Suspend);
-        args.add(taskId);
-        args.add(userId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void resume(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(Operation.Resume);
-        args.add(taskId);
-        args.add(userId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void skip(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(Operation.Skip);
-        args.add(taskId);
-        args.add(userId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void delegate(long taskId, String userId, String targetUserId, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(4);
-        args.add(Operation.Delegate);
-        args.add(taskId);
-        args.add(userId);
-        args.add(targetUserId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void forward(long taskId, String userId, String targetEntityId, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(4);
-        args.add(Operation.Forward);
-        args.add(taskId);
-        args.add(userId);
-        args.add(targetEntityId);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void complete(long taskId, String userId, ContentData outputData, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(5);
-        args.add(Operation.Complete);
-        args.add(taskId);
-        args.add(userId);
-        args.add(null);
-        args.add(outputData);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void fail(long taskId, String userId, FaultData faultData, TaskOperationMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(5);
-        args.add(Operation.Fail);
-        args.add(taskId);
-        args.add(userId);
-        args.add(null);
-        args.add(faultData);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getTasksOwned(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(userId);
-        args.add(language);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksOwned, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getTasksAssignedAsBusinessAdministrator(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(userId);
-        args.add(language);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsBusinessAdministrator, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getTasksAssignedAsExcludedOwner(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(userId);
-        args.add(language);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsExcludedOwner, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getTasksAssignedAsPotentialOwner(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(userId);
-        args.add(language);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsPotentialOwner, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getTasksAssignedAsPotentialOwner(String userId, List<String> groupIds, String language, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(userId);
-        args.add(groupIds);
-        args.add(language);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsPotentialOwnerWithGroup, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getSubTasksAssignedAsPotentialOwner(long parentId, String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(parentId);
-        args.add(userId);
-        args.add(language);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QuerySubTasksAssignedAsPotentialOwner, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getSubTasksByParent(long parentId, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(parentId);
-        //@TODO: un hard code this
-        args.add("en-UK");
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryGetSubTasksByParentTaskId, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getTasksAssignedAsRecipient(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(userId);
-        args.add(language);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsRecipient, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getTasksAssignedAsTaskInitiator(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(userId);
-        args.add(language);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsTaskInitiator, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void getTasksAssignedAsTaskStakeholder(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
-        List<Object> args = new ArrayList<Object>(2);
-        args.add(userId);
-        args.add(language);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsTaskStakeholder, args);
-        Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public void registerForEvent(EventKey key, boolean remove, EventMessageResponseHandler responseHandler) { //@TODO: look for the event stuff
-        List<Object> args = new ArrayList<Object>(3);
-        args.add(key);
-        args.add(remove);
-        args.add(clientName);
-
-        Command cmd = new Command(counter.getAndIncrement(), CommandName.RegisterForEventRequest, args);
-        int responseId = counter.incrementAndGet();
-        Message msg = new Message(sessionId, responseId, false, cmd);
-
-        client.write(msg, responseHandler);
-    }
-
-    public String getId() throws ConnectorException, RemoteException {
-        return "Remote:Task:";
-    }
-
-    public ServiceType getServiceType() throws ConnectorException, RemoteException {
-        return ServiceType.REMOTE;
-    }
-}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceProviderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceProviderRemoteClient.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceProviderRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -15,11 +15,6 @@
  */
 package org.drools.grid.task;
 
-import java.rmi.RemoteException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.drools.grid.ConnectorException;
-import org.drools.grid.GenericHumanTaskConnector;
 import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.HumanTaskNodeService;
 
@@ -57,17 +52,7 @@
     }
 
     public HumanTaskNodeService newHumanTaskService() {
-        HumanTaskServiceImpl humanTaskServiceImpl = null;
-        try {
-
-            this.connector.connect();
-        } catch (RemoteException ex) {
-            Logger.getLogger(HumanTaskServiceProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
-
-        } catch (ConnectorException ex) {
-            Logger.getLogger(HumanTaskServiceProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
-        }
-        humanTaskServiceImpl = new HumanTaskServiceImpl(this.connector, this.id);
+        HumanTaskServiceRemoteClient humanTaskServiceImpl = new HumanTaskServiceRemoteClient(this.connector, this.id);
         return humanTaskServiceImpl;
     }
 }

Copied: labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceRemoteClient.java (from rev 34592, labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceImpl.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceRemoteClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceRemoteClient.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -0,0 +1,464 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.grid.task;
+
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.drools.eventmessaging.EventKey;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.AddAttachmentMessageResponseHandler;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.AddCommentMessageResponseHandler;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.AddTaskMessageResponseHandler;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.DeleteAttachmentMessageResponseHandler;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.DeleteCommentMessageResponseHandler;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.GetContentMessageResponseHandler;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.GetTaskMessageResponseHandler;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.SetDocumentMessageResponseHandler;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.TaskOperationMessageResponseHandler;
+import org.drools.grid.task.TaskClientMessageHandlerImpl.TaskSummaryMessageResponseHandler;
+import org.drools.grid.task.eventmessaging.EventMessageResponseHandler;
+import org.drools.task.Attachment;
+import org.drools.task.Comment;
+import org.drools.task.Content;
+import org.drools.task.Task;
+import org.drools.task.service.Command;
+import org.drools.task.service.CommandName;
+import org.drools.task.service.ContentData;
+import org.drools.task.service.FaultData;
+import org.drools.task.service.Operation;
+
+
+/**
+ * @author salaboy
+ * @author Lucas Amador
+ *
+ */
+public class HumanTaskServiceRemoteClient implements HumanTaskService {
+
+    private final GenericNodeConnector connector;
+    private final AtomicInteger counter;
+    private int sessionId;
+    private String clientName;
+    private int DEFAULT_WAIT_TIME = 3000;
+
+    public HumanTaskServiceRemoteClient(GenericNodeConnector connector, int sessionId) {
+        this.connector = connector;
+        this.counter = new AtomicInteger();
+        this.clientName = String.valueOf(sessionId);
+        this.sessionId = sessionId;
+
+    }
+
+
+
+    public void disconnect() throws ConnectorException {
+        try {
+            this.connector.disconnect();
+        } catch (RemoteException ex) {
+            Logger.getLogger(HumanTaskServiceRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        }
+
+    public void addTask(Task task, ContentData content, AddTaskMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(task);
+            args.add(content);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.AddTaskRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+           
+       
+    }
+
+    public Task getTask(long taskId, GetTaskMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(1);
+            args.add(taskId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.GetTaskRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+        
+        return null;
+    }
+
+    public void addComment(long taskId, Comment comment, AddCommentMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(taskId);
+            args.add(comment);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.AddCommentRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+          
+    }
+
+    public void deleteComment(long taskId, long commentId, DeleteCommentMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(taskId);
+            args.add(commentId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.DeleteCommentRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+    }
+
+    public void addAttachment(long taskId, Attachment attachment, Content content, AddAttachmentMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(taskId);
+            args.add(attachment);
+            args.add(content);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.AddAttachmentRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+    }
+
+    public void deleteAttachment(long taskId, long attachmentId, long contentId, DeleteAttachmentMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(taskId);
+            args.add(attachmentId);
+            args.add(contentId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.DeleteAttachmentRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+    }
+
+    public void setDocumentContent(long taskId, Content content, SetDocumentMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(taskId);
+            args.add(content);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.SetDocumentContentRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+    }
+
+    public void getContent(long contentId, GetContentMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(1);
+            args.add(contentId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.GetContentRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+    }
+
+    public void claim(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(Operation.Claim);
+            args.add(taskId);
+            args.add(userId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+    }
+
+    public void start(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(Operation.Start);
+            args.add(taskId);
+            args.add(userId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+    }
+
+    public void stop(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(Operation.Stop);
+            args.add(taskId);
+            args.add(userId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+    }
+
+    public void release(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(Operation.Release);
+            args.add(taskId);
+            args.add(userId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+
+          
+    }
+
+    public void suspend(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(Operation.Suspend);
+            args.add(taskId);
+            args.add(userId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+         
+    }
+
+    public void resume(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(Operation.Resume);
+            args.add(taskId);
+            args.add(userId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+         
+    }
+
+    public void skip(long taskId, String userId, TaskOperationMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(Operation.Skip);
+            args.add(taskId);
+            args.add(userId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+         
+    }
+
+    public void delegate(long taskId, String userId, String targetUserId, TaskOperationMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(4);
+            args.add(Operation.Delegate);
+            args.add(taskId);
+            args.add(userId);
+            args.add(targetUserId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+         
+    }
+
+    public void forward(long taskId, String userId, String targetEntityId, TaskOperationMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(4);
+            args.add(Operation.Forward);
+            args.add(taskId);
+            args.add(userId);
+            args.add(targetEntityId);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+         
+    }
+
+    public void complete(long taskId, String userId, ContentData outputData, TaskOperationMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(5);
+            args.add(Operation.Complete);
+            args.add(taskId);
+            args.add(userId);
+            args.add(null);
+            args.add(outputData);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+           
+    }
+
+    public void fail(long taskId, String userId, FaultData faultData, TaskOperationMessageResponseHandler responseHandler) {
+            
+            List<Object> args = new ArrayList<Object>(5);
+            args.add(Operation.Fail);
+            args.add(taskId);
+            args.add(userId);
+            args.add(null);
+            args.add(faultData);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.OperationRequest, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+    }
+
+    public void getTasksOwned(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+        
+           
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(userId);
+            args.add(language);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksOwned, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+           
+    }
+
+    public void getTasksAssignedAsBusinessAdministrator(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(userId);
+            args.add(language);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsBusinessAdministrator, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+          
+    }
+
+    public void getTasksAssignedAsExcludedOwner(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(userId);
+            args.add(language);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsExcludedOwner, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+           
+    }
+
+    public void getTasksAssignedAsPotentialOwner(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(userId);
+            args.add(language);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsPotentialOwner, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+        
+    }
+
+    public void getTasksAssignedAsPotentialOwner(String userId, List<String> groupIds, String language, TaskSummaryMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(userId);
+            args.add(groupIds);
+            args.add(language);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsPotentialOwnerWithGroup, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+       
+    }
+
+    public void getSubTasksAssignedAsPotentialOwner(long parentId, String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+       
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(parentId);
+            args.add(userId);
+            args.add(language);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QuerySubTasksAssignedAsPotentialOwner, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+      
+    }
+
+    public void getSubTasksByParent(long parentId, TaskSummaryMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(parentId);
+            //@TODO: un hard code this
+            args.add("en-UK");
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryGetSubTasksByParentTaskId, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+        
+    }
+
+    public void getTasksAssignedAsRecipient(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(userId);
+            args.add(language);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsRecipient, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+        
+    }
+
+    public void getTasksAssignedAsTaskInitiator(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(userId);
+            args.add(language);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsTaskInitiator, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+         
+    }
+
+    public void getTasksAssignedAsTaskStakeholder(String userId, String language, TaskSummaryMessageResponseHandler responseHandler) {
+        
+            List<Object> args = new ArrayList<Object>(2);
+            args.add(userId);
+            args.add(language);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.QueryTasksAssignedAsTaskStakeholder, args);
+            Message msg = new Message(sessionId, counter.incrementAndGet(), false, cmd);
+            connector.write(msg, responseHandler);
+            
+         
+    }
+
+    public void registerForEvent(EventKey key, boolean remove, EventMessageResponseHandler responseHandler) { //@TODO: look for the event stuff
+        
+            List<Object> args = new ArrayList<Object>(3);
+            args.add(key);
+            args.add(remove);
+            args.add(clientName);
+            Command cmd = new Command(counter.getAndIncrement(), CommandName.RegisterForEventRequest, args);
+            int responseId = counter.incrementAndGet();
+            Message msg = new Message(sessionId, responseId, false, cmd);
+            connector.write(msg, responseHandler);
+            
+         
+    }
+
+    public String getId() throws ConnectorException, RemoteException {
+        return "Remote:Task:";
+    }
+
+    public ServiceType getServiceType() throws ConnectorException, RemoteException {
+        return ServiceType.REMOTE;
+    }
+
+   
+}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaConnectionHumanTask.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaConnectionHumanTask.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaConnectionHumanTask.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -47,7 +47,7 @@
     }
 
     public void init(){
-        services.put(HumanTaskService.class, new HumanTaskServiceImpl(connector, connector.getSessionId()));
+        services.put(HumanTaskService.class, new HumanTaskServiceRemoteClient(connector, connector.getSessionId()));
         
     }
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaHumanTaskConnector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaHumanTaskConnector.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaHumanTaskConnector.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -3,6 +3,8 @@
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.rmi.RemoteException;
+import java.util.Random;
+import java.util.UUID;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -10,7 +12,6 @@
 import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.future.IoFuture;
 import org.apache.mina.core.future.IoFutureListener;
-import org.apache.mina.core.session.IdleStatus;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
@@ -22,7 +23,6 @@
 import org.drools.grid.ConnectorType;
 import org.drools.grid.GenericConnection;
 import org.drools.grid.GenericNodeConnector;
-import org.drools.grid.HumanTaskNodeService;
 import org.drools.grid.NodeConnectionType;
 
 import org.drools.grid.internal.Message;
@@ -36,6 +36,7 @@
         GenericNodeConnector {
 
     protected IoSession session;
+    protected int sessionId;
     protected final String name;
     protected AtomicInteger counter;
     protected SocketConnector connector;
@@ -47,17 +48,16 @@
             String providerAddress, Integer providerPort,
             SystemEventListener eventListener) {
 
-        SocketConnector minaconnector = new NioSocketConnector();
-        minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+       
         if (name == null) {
             throw new IllegalArgumentException("Name can not be null");
         }
         this.name = name;
         this.counter = new AtomicInteger();
         this.address = new InetSocketAddress(providerAddress, providerPort);
-        this.connector = minaconnector;
         this.eventListener = eventListener;
         this.connection = new GridConnection();
+        this.sessionId = new Random().nextInt();
     }
 
     public void connect() throws ConnectorException {
@@ -67,7 +67,9 @@
         }
 
         try {
-            this.connector.getFilterChain().addLast("codec",
+            this.connector =  new NioSocketConnector();
+            this.connector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+            this.connector.getFilterChain().addLast(this.name+"codec"+UUID.randomUUID().toString(),
                     new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
 
             ConnectFuture future1 = this.connector.connect(this.address);
@@ -160,7 +162,7 @@
     }
 
     public int getSessionId() {
-        return (int) session.getId();
+        return this.sessionId;
     }
 
     public AtomicInteger getCounter() {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/BaseTaskServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/BaseTaskServiceTest.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/BaseTaskServiceTest.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -96,7 +96,7 @@
         System.out.println("Completing task " + task.getId());
         operationResponseHandler = new BlockingTaskOperationMessageResponseHandler();
         humanTaskClient.complete(task.getId(), "Darth Vader", null, operationResponseHandler);
-        operationResponseHandler.waitTillDone(15000);
+        
         System.out.println("Completed task " + task.getId());
         Assert.assertTrue(manager.waitTillCompleted(DEFAULT_WAIT_TIME));
         Thread.sleep(500);

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandlerTest.java	2010-08-09 11:53:43 UTC (rev 34604)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandlerTest.java	2010-08-09 12:12:27 UTC (rev 34605)
@@ -26,6 +26,7 @@
 import java.util.Properties;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;
+import junit.framework.Assert;
 import org.apache.commons.collections.map.HashedMap;
 
 import org.apache.mina.transport.socket.SocketAcceptor;
@@ -34,8 +35,6 @@
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactoryService;
 import org.drools.SystemEventListenerFactory;
-import org.drools.grid.ExecutionNode;
-import org.drools.grid.GenericHumanTaskConnector;
 import org.drools.grid.GenericNodeConnector;
 import org.drools.io.impl.ClassPathResource;
 import org.drools.runtime.StatefulKnowledgeSession;
@@ -164,35 +163,34 @@
 
 
         connection.addExecutionNode(minaClient);
-
+        connection.addHumanTaskNode(htMinaClient);
         node = connection.getExecutionNode(new ReturnAlwaysTheFirstSelectionStrategy());
-        //nodeConnection.connect();
         
         
         
+        
 
         
         KnowledgeBase kbase = this.node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
         StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        int sessionId = ksession.getId();
+       
+        this.humanTaskClient = connection.getHumanTaskNode().get(HumanTaskService.class);
 
-        node.set(HumanTaskFactoryService.class, new HumanTaskServiceProviderRemoteClient(htMinaClient, sessionId));
-
-        this.humanTaskClient = (HumanTaskService) this.node.get(HumanTaskFactoryService.class).newHumanTaskService();
-        
-
         this.handler = new CommandBasedServicesWSHumanTaskHandler(ksession);
         
         
     }
     @After
     public void tearDown() throws Exception {
-        this.humanTaskClient.disconnect();
+
+        Thread.sleep(3000);
         
         connection.dispose();
-        
+        this.humanTaskClient.disconnect();
+        Assert.assertEquals(0, server.getCurrentSessions());
         this.handler.dispose();
         this.server.stop();
+        Assert.assertEquals(0, humanTaskServer.getCurrentSessions());
         this.humanTaskServer.stop();
         
         taskSession.dispose();



More information about the jboss-svn-commits mailing list