[jboss-svn-commits] JBL Code SVN: r32162 - in labs/jbossrules/branches/salaboy_ServiceAPIs: drools-services-grid/src/main/java/org/drools/services/grid and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Mar 21 00:18:30 EDT 2010
Author: salaboy21
Date: 2010-03-21 00:18:29 -0400 (Sun, 21 Mar 2010)
New Revision: 32162
Added:
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridSelectionStrategy.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/RandomSelectionStrategy.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/generic/MessageSession.java
Modified:
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridExecutionNodeConnection.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseGridClient.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseProviderGridClient.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderGridClient.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderProviderGridClient.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/StatefulKnowledgeSessionGridClient.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/WorkItemManagerGridClient.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ITGridExecutionTest.java
Log:
heavy refactoring, tomorrow need to add some tests and do a little modifications
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/generic/MessageSession.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/generic/MessageSession.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/generic/MessageSession.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,57 @@
+/*
+ * 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.services.generic;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ *
+ * @author salaboy
+ */
+public class MessageSession {
+
+ public AtomicInteger counter;
+ private int sessionId = -1;
+
+ public MessageSession() {
+ counter = new AtomicInteger();
+ }
+
+
+
+ public AtomicInteger getCounter() {
+ return counter;
+ }
+
+ public void setCounter(AtomicInteger counter) {
+ this.counter = counter;
+ }
+
+ public int getSessionId() {
+ return sessionId;
+ }
+
+ public void setSessionId(int sessionId) {
+ this.sessionId = sessionId;
+ }
+
+ public int getNextId() {
+ return this.counter.incrementAndGet();
+ }
+
+}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,29 @@
+/*
+ * 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.services.grid;
+
+import org.drools.runtime.CommandExecutor;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface DirectoryLookupFactoryService {
+ public void register(String key, CommandExecutor value);
+ public CommandExecutor lookup(String key);
+}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,146 @@
+/*
+ * 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.services.grid;
+
+import java.rmi.RemoteException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.command.FinishedCommand;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.services.command.LookupCommand;
+import org.drools.services.command.RegisterCommand;
+import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryLookupProviderGridClient implements DirectoryLookupFactoryService {
+
+ private ExecutionGridConnection gridClient;
+ private GridNodeExecutionService currentService;
+ private MessageSession messageSession;
+
+
+
+ public DirectoryLookupProviderGridClient(GridNodeExecutionService currentService, ExecutionGridConnection gridClient) {
+ this.currentService = currentService;
+ this.gridClient = gridClient;
+ this.messageSession = new MessageSession();
+ }
+
+ public void register(String identifier,
+ CommandExecutor executor) {
+ try {
+ String commandId = "client.lookup" + messageSession.getNextId();
+ String kresultsId = "kresults_" + messageSession.getSessionId();
+ int type;
+
+
+ if ( executor instanceof StatefulKnowledgeSession ) {
+ type = 0;
+ } else {
+ throw new IllegalArgumentException("Type is not supported for registration");
+ }
+ Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), false, new KnowledgeContextResolveFromContextCommand(new RegisterCommand(identifier, ((StatefulKnowledgeSessionGridClient) executor).getInstanceId(), type), null, null, null, null));
+ System.out.println("Registering " + identifier + " - - " + currentService.getId());
+ try {
+ DirectoryService directory = (DirectoryService) gridClient.getDirectories().iterator().next();
+ if (directory != null) {
+ directory.register(identifier, currentService.getId());
+ } else {
+ System.out.println("Directory == NULL!!!!!!!!");
+ }
+ } catch (RemoteException ex) {
+ Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ try {
+ Object object = currentService.write(msg).getPayload();
+ if (!(object instanceof FinishedCommand)) {
+ throw new RuntimeException("Response was not correctly ended");
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to execute message", e);
+ }
+ } catch ( RemoteException ex ) {
+ Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ public CommandExecutor lookup(String identifier) {
+ String commandId = "client.lookup" + messageSession.getNextId();
+ String kresultsId = "kresults_" + messageSession.getSessionId();
+
+ Message msg = new Message( messageSession.getSessionId(),
+ messageSession.getCounter().incrementAndGet(),
+ false,
+ new KnowledgeContextResolveFromContextCommand( new LookupCommand( identifier,
+ commandId ),
+ null,
+ null,
+ null,
+ kresultsId ) );
+ System.out.println("Looking up the session with identifier = "+identifier);
+ try {
+ //First I need to get the correct client GridNodeExecutionService with the identifier
+ DirectoryService directory = (DirectoryService) gridClient.getDirectories().iterator().next();
+ if(directory != null){
+ System.out.println("Setting session for identifier = "+identifier +" - client ="+currentService);
+ //HMMMMMMM?? is this correct?
+
+ currentService = directory.lookup(identifier);
+ }else{
+ System.out.println("Directory == NULL!!!!!!!!");
+ }
+ } catch (RemoteException ex) {
+ Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ try {
+ Object object = currentService.write( msg ).getPayload();
+
+ if ( object == null ) {
+ throw new RuntimeException( "Response was not correctly received" );
+ }
+ String value = (String) ((ExecutionResults) object).getValue( commandId );
+ String type = String.valueOf( value.charAt( 0 ) );
+ String instanceId = value.substring( 2 );
+
+ CommandExecutor executor = null;
+ switch ( Integer.parseInt( type ) ) {
+ case 0 : {
+ executor = new StatefulKnowledgeSessionGridClient( instanceId, currentService, messageSession );
+ break;
+ }
+ default : {
+
+ }
+
+ }
+
+ return executor;
+ } catch ( Exception e ) {
+ throw new RuntimeException( "Unable to execute message",
+ e );
+ }
+ }
+
+}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -14,71 +14,104 @@
* limitations under the License.
* under the License.
*/
-
package org.drools.services.grid;
import java.util.ArrayList;
import java.util.List;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.KnowledgeBuilderFactoryService;
import org.drools.services.ExecutionNode;
+import org.drools.services.grid.strategies.RandomSelectionStrategy;
/**
*
* @author salaboy
*/
+//Should I rename this class to something like GridClient?
public class ExecutionGridConnection {
- private List<ExecutionNode> nodes;
- // private DirectoryService directory;
- private String url;
+ //Cached Services
+ private List<GridNodeExecutionService> services;
+
+
+ //Cached Directories
+ private List<DirectoryService> directories;
+
+ //Clients
+ //private List<>
+
+
public ExecutionGridConnection() {
- this.nodes = new ArrayList<ExecutionNode>();
+ this.services = new ArrayList<GridNodeExecutionService>();
+ this.directories = new ArrayList<DirectoryService>();
}
- public void addNode(ExecutionNode node) {
- this.nodes.add(node);
+ public void addService(GridNodeExecutionService service) {
+
+ this.services.add(service);
+
}
- public ExecutionGridConnection(String url) {
- this.url = url;
+ public void addDirectory(DirectoryService directory) {
+ this.directories.add(directory);
}
- public List<ExecutionNode> connect(){
- return this.nodes;
+
+
+
+ //This will use the default/random strategy
+ public ExecutionNode getExecutionNode() {
+ GridNodeExecutionService currentService = getBestService(
+ new RandomSelectionStrategy(this));
+ ExecutionNode node = new ExecutionNode();
+ node.set(KnowledgeBuilderFactoryService.class,
+ new KnowledgeBuilderProviderGridClient( currentService, this ));
+
+ node.set(KnowledgeBaseFactoryService.class,
+ new KnowledgeBaseProviderGridClient( currentService, this ));
+
+
+ node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderGridClient(currentService,this));
+
+// new GridExecutionNodeConnection
+// ((GridNodeExecutionService)currentService).getId(),
+//
+//
+// new RioConnector("client1",SystemEventListenerFactory.getSystemEventListener(),
+// (GridNodeExecutionService)currentService)
+// ,env)
+
+ return node;
}
- public List<ExecutionNode> getNodes() {
- return nodes;
+ //This will use the strategy to return a new Execution Node
+ public ExecutionNode getExecutionNode(GridSelectionStrategy strategy){
+ return new ExecutionNode();
}
- public void setNodes(List<ExecutionNode> nodes) {
- this.nodes = nodes;
+ private GridNodeExecutionService getBestService(GridSelectionStrategy gridSelectionStrategy) {
+ return gridSelectionStrategy.getBestNode();
}
- public String getUrl() {
- return url;
+
+
+ public List<DirectoryService> getDirectories() {
+ return directories;
}
- public void setUrl(String url) {
- this.url = url;
+ public void setDirectories(List<DirectoryService> directories) {
+ this.directories = directories;
}
-// public DirectoryService getDirectory() {
-// return directory;
-// }
-//
-// public void setDirectory(DirectoryService directory) {
-// this.directory = directory;
-// }
- //dummy impls
- public ExecutionNode getPreferedExecutionNode() {
- return nodes.get(0);
+ public List<GridNodeExecutionService> getServices() {
+ return services;
}
- public ExecutionNode getAnotherExecutionNode(){
- return nodes.get(1);
+
+ public void setServices(List<GridNodeExecutionService> services) {
+ this.services = services;
}
-
}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridExecutionNodeConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridExecutionNodeConnection.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridExecutionNodeConnection.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -1,12 +1,9 @@
package org.drools.services.grid;
-import java.rmi.RemoteException;
import java.util.Collection;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactoryService;
@@ -16,20 +13,17 @@
import org.drools.builder.KnowledgeBuilderConfiguration;
import org.drools.builder.KnowledgeBuilderFactoryService;
import org.drools.command.Command;
-import org.drools.command.FinishedCommand;
import org.drools.command.KnowledgeContextResolveFromContextCommand;
import org.drools.persistence.jpa.JPAKnowledgeServiceProvider;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.Environment;
import org.drools.runtime.ExecutionResults;
-import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.services.ServiceManager;
import org.drools.services.command.ExecutionNodeClientConnectCommand;
-import org.drools.services.command.LookupCommand;
-import org.drools.services.command.RegisterCommand;
import org.drools.services.generic.GenericConnector;
import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
@@ -37,27 +31,22 @@
public class GridExecutionNodeConnection
implements
ServiceManager {
- private String name;
- public GenericConnector client;
+ private MessageSession messageSession;
- private List<GenericConnector> services;
- public AtomicInteger counter;
- private int sessionId = -1;
+ public GenericConnector client;
+ private ExecutionGridConnection gridClient;
+
- //@TODO: i need to refactor this to a service in the list of services???
- //private DirectoryService directoryService;
-
- private Environment env;
-
- public GridExecutionNodeConnection(String name, GenericConnector client, Environment env) {
- this.name = name;
+ public GridExecutionNodeConnection(GenericConnector client, MessageSession messageSession, ExecutionGridConnection gridClient) {
+
this.client = client;
- this.counter = new AtomicInteger();
- this.services = null;
- this.env = env;
+ this.messageSession = messageSession;
+
+ this.gridClient = gridClient;
+
}
@@ -68,11 +57,11 @@
boolean connected = this.client.connect();
if ( connected ) {
- String commandId = "serviceManager.connected" + getNextId();
- String kresultsId = "kresults_" + getSessionId();
+ String commandId = "serviceManager.connected" + messageSession.getNextId();
+ String kresultsId = "kresults_" + messageSession.getSessionId();
Message msg = new Message( -1,
- counter.incrementAndGet(),
+ messageSession.counter.incrementAndGet(),
false,
new KnowledgeContextResolveFromContextCommand( new ExecutionNodeClientConnectCommand( commandId ),
null,
@@ -87,7 +76,7 @@
throw new RuntimeException( "Response was not correctly received" );
}
- sessionId = (Integer) ((ExecutionResults) object).getValue( commandId );
+ messageSession.setSessionId((Integer) ((ExecutionResults) object).getValue( commandId ));
connected = true;
} catch ( Exception e ) {
@@ -96,25 +85,25 @@
}
}
// Connecting with services
- if (this.services != null) {
- for (GenericConnector connector : services){
- boolean serviceConnected = connector.connect();
- if ( serviceConnected ){
- System.out.println("Service Connected");
- }
- }
- }
+// if (this.services != null) {
+// for (GenericConnector connector : services){
+// boolean serviceConnected = connector.connect();
+// if ( serviceConnected ){
+// System.out.println("Service Connected");
+// }
+// }
+// }
return connected;
}
public void disconnect() {
this.client.disconnect();
- if (this.services != null){
- for (GenericConnector connector : this.services){
- connector.disconnect();
- }
- }
+// if (this.services != null){
+// for (GenericConnector connector : this.services){
+// connector.disconnect();
+// }
+// }
}
@@ -139,119 +128,33 @@
return null;
}
- public void register(String identifier,
- CommandExecutor executor) {
- String commandId = "client.lookup" + getNextId();
- String kresultsId = "kresults_" + getSessionId();
+
+ public void release(Object object) {
+ // TODO Auto-generated method stub
+ }
- int type;
- if ( executor instanceof StatefulKnowledgeSession ) {
- type = 0;
- } else {
- throw new IllegalArgumentException( "Type is not supported for registration" );
- }
+ public void release(String identifier) {
+ // TODO Auto-generated method stub
+ }
- Message msg = new Message( getSessionId(),
- counter.incrementAndGet(),
- false,
- new KnowledgeContextResolveFromContextCommand( new RegisterCommand( identifier,
- ((StatefulKnowledgeSessionGridClient) executor).getInstanceId(),
- type ),
- null,
- null,
- null,
- null ) );
- System.out.println("Registering "+identifier + " - - "+client.getId());
- try {
-
- DirectoryService directory = (DirectoryService) env.get("DIRECTORY_SERVICE");
- if(directory != null){
-
- directory.register(identifier, client.getId());
- }
- else{
- System.out.println("Directory == NULL!!!!!!!!");
- }
- } catch (RemoteException ex) {
- Logger.getLogger(GridExecutionNodeConnection.class.getName()).log(Level.SEVERE, null, ex);
- }
- try {
-
-
- Object object = client.write( msg ).getPayload();
-
-
- if ( !(object instanceof FinishedCommand) ) {
- throw new RuntimeException( "Response was not correctly ended" );
- }
- } catch ( Exception e ) {
- throw new RuntimeException( "Unable to execute message",
- e );
- }
+ @Override
+ public KnowledgeBuilderFactoryService getKnowledgeBuilderFactoryService() {
+ throw new UnsupportedOperationException("Not supported yet.");
}
- public CommandExecutor lookup(String identifier) {
- String commandId = "client.lookup" + getNextId();
- String kresultsId = "kresults_" + getSessionId();
-
- Message msg = new Message( getSessionId(),
- counter.incrementAndGet(),
- false,
- new KnowledgeContextResolveFromContextCommand( new LookupCommand( identifier,
- commandId ),
- null,
- null,
- null,
- kresultsId ) );
- System.out.println("Looking up the session with identifier = "+identifier);
- try {
- //First I need to get the correct client GridNodeExecutionService with the identifier
- DirectoryService directory = (DirectoryService) env.get("DIRECTORY_SERVICE");
- if(directory != null){
- System.out.println("Setting session for identifier = "+identifier +" - client ="+client);
- client.setSession(directory.lookup(identifier));
- }else{
- System.out.println("Directory == NULL!!!!!!!!");
- }
- } catch (RemoteException ex) {
- Logger.getLogger(GridExecutionNodeConnection.class.getName()).log(Level.SEVERE, null, ex);
- }
- try {
- Object object = client.write( msg ).getPayload();
-
- if ( object == null ) {
- throw new RuntimeException( "Response was not correctly received" );
- }
- String value = (String) ((ExecutionResults) object).getValue( commandId );
- String type = String.valueOf( value.charAt( 0 ) );
- String instanceId = value.substring( 2 );
-
- CommandExecutor executor = null;
- switch ( Integer.parseInt( type ) ) {
- case 0 : {
- executor = new StatefulKnowledgeSessionGridClient( instanceId,
- this , env);
- break;
- }
- default : {
-
- }
-
- }
-
- return executor;
- } catch ( Exception e ) {
- throw new RuntimeException( "Unable to execute message",
- e );
- }
+ @Override
+ public KnowledgeBaseFactoryService getKnowledgeBaseFactoryService() {
+ throw new UnsupportedOperationException("Not supported yet.");
}
- public void release(Object object) {
- // TODO Auto-generated method stub
+ @Override
+ public void register(String identifier, CommandExecutor executor) {
+ throw new UnsupportedOperationException("Not supported yet.");
}
- public void release(String identifier) {
- // TODO Auto-generated method stub
+ @Override
+ public CommandExecutor lookup(String identifer) {
+ throw new UnsupportedOperationException("Not supported yet.");
}
// public HumanTaskServiceProvider getHumanTaskService() {
@@ -260,16 +163,16 @@
// return null;
// }
- @Override
- public KnowledgeBuilderFactoryService getKnowledgeBuilderFactoryService() {
- return new KnowledgeBuilderProviderGridClient( this, env );
- }
+// @Override
+// public KnowledgeBuilderFactoryService getKnowledgeBuilderFactoryService() {
+// return new KnowledgeBuilderProviderGridClient( this, gridClient );
+// }
+//
+// @Override
+// public KnowledgeBaseFactoryService getKnowledgeBaseFactoryService() {
+// return new KnowledgeBaseProviderGridClient( this, gridClient );
+// }
- @Override
- public KnowledgeBaseFactoryService getKnowledgeBaseFactoryService() {
- return new KnowledgeBaseProviderGridClient( this, env );
- }
-
public static class RemoveKnowledgeBuilderProvider implements KnowledgeBuilderFactoryService {
public DecisionTableConfiguration newDecisionTableConfiguration() {
@@ -310,26 +213,26 @@
}
}
- public int getSessionId() {
- return sessionId;
- }
+// public int getSessionId() {
+// return sessionId;
+// }
+//
+// public int getNextId() {
+// return this.counter.incrementAndGet();
+// }
- public int getNextId() {
- return this.counter.incrementAndGet();
- }
-
public ExecutionResults execute(Command command) {
// TODO Auto-generated method stub
return null;
}
- public List<GenericConnector> getServices() {
- return services;
- }
-
- public String getName() {
- return this.name;
- }
+// public List<GenericConnector> getServices() {
+// return services;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
// public DirectoryService getRegistryService() {
// return directoryService;
@@ -342,6 +245,14 @@
public void setCurrentSessionService(GridNodeExecutionService sessionService){
this.client.setSession(sessionService);
}
+
+ public MessageSession getMessageSession() {
+ return messageSession;
+ }
+
+ public void setMessageSession(MessageSession messageSession) {
+ this.messageSession = messageSession;
+ }
// public List<GridNodeExecutionService> getSessionServices(){
//// List<GridNodeExecutionService> sessionServices =
@@ -358,4 +269,6 @@
// return ((RioConnector)this.client).getNodeServices();
// }
//
+
+
}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridSelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridSelectionStrategy.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,29 @@
+/*
+ * 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.services.grid;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface GridSelectionStrategy {
+
+ public GridNodeExecutionService getBestNode();
+
+
+}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseGridClient.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseGridClient.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -24,6 +24,7 @@
import org.drools.services.generic.CollectionClient;
import org.drools.services.generic.Message;
import org.drools.services.grid.command.NewStatefulKnowledgeSessionGridCommand;
+import org.drools.services.grid.rio.RioConnector;
public class KnowledgeBaseGridClient
@@ -32,20 +33,21 @@
private GridExecutionNodeConnection nodeConnection;
private String instanceId;
- private Environment env;
+ private ExecutionGridConnection gridClient;
+
public KnowledgeBaseGridClient(String instanceId,
- GridExecutionNodeConnection nodeConnection, Environment env) {
+ GridExecutionNodeConnection nodeConnection, ExecutionGridConnection gridClient) {
this.instanceId = instanceId;
this.nodeConnection = nodeConnection;
- this.env = env;
+ this.gridClient = gridClient;
}
public void addKnowledgePackages(Collection<KnowledgePackage> kpackages) {
- String kresultsId = "kresults_" + nodeConnection.getSessionId();
+ String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
String kuilderInstanceId = ((CollectionClient<KnowledgePackage>) kpackages).getParentInstanceId();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+ nodeConnection.getMessageSession().counter.incrementAndGet(),
false,
new KnowledgeContextResolveFromContextCommand( new KnowledgeBaseAddKnowledgePackagesCommand(),
kuilderInstanceId,
@@ -54,7 +56,7 @@
kresultsId ) );
try {
//I should register the kbase ID??
- DirectoryService directory = (DirectoryService)env.get("DIRECTORY_SERVICE");
+ DirectoryService directory = gridClient.getDirectories().iterator().next();
if(directory != null){
directory.registerKBase(instanceId, nodeConnection.client.getId());
}
@@ -110,12 +112,12 @@
public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf,
Environment environment) {
- String kresultsId = "kresults_" + nodeConnection.getSessionId();
+ String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
String localId = UUID.randomUUID().toString();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+ nodeConnection.getMessageSession().counter.incrementAndGet(),
false,
new SetVariableCommand( "__TEMP__",
localId,
@@ -138,7 +140,7 @@
}
return new StatefulKnowledgeSessionGridClient( localId,
- nodeConnection, env );
+ ((RioConnector)nodeConnection.client).getCurrentNodeService(),nodeConnection.getMessageSession() );
}
public StatelessKnowledgeSession newStatelessKnowledgeSession(KnowledgeSessionConfiguration conf) {
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseProviderGridClient.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseProviderGridClient.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -7,6 +7,7 @@
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseConfiguration;
import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
import org.drools.command.FinishedCommand;
import org.drools.command.NewKnowledgeBaseCommand;
@@ -14,17 +15,30 @@
import org.drools.runtime.Environment;
import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
+import org.drools.services.grid.rio.RioConnector;
public class KnowledgeBaseProviderGridClient
implements
KnowledgeBaseFactoryService {
- private GridExecutionNodeConnection nodeConnection;
+
+ private ExecutionGridConnection gridClient;
private String localId = "";
- private Environment env;
- public KnowledgeBaseProviderGridClient(GridExecutionNodeConnection nodeConnection, Environment env) {
- this.nodeConnection = nodeConnection;
- this.env = env;
+ private GridExecutionNodeConnection nodeConnection;
+ private MessageSession messageSession;
+
+ public KnowledgeBaseProviderGridClient(GridNodeExecutionService currentService, ExecutionGridConnection gridClient) {
+
+ this.gridClient = gridClient;
+ this.messageSession = new MessageSession();
+ this.nodeConnection = new GridExecutionNodeConnection(
+
+ //I need to specialize this class for include the RIO Connector, and solve the name problem
+ new RioConnector("client 1", SystemEventListenerFactory.getSystemEventListener(), (GridNodeExecutionService) currentService),
+ this.messageSession,
+ gridClient
+ );
}
@@ -43,8 +57,8 @@
localId = UUID.randomUUID().toString();
}
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( messageSession.getSessionId(),
+ messageSession.counter.incrementAndGet(),
false,
new SetVariableCommand( "__TEMP__",
localId,
@@ -62,7 +76,7 @@
}
return new KnowledgeBaseGridClient( localId,
- nodeConnection, env );
+ nodeConnection, gridClient);
}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderGridClient.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderGridClient.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -26,12 +26,12 @@
KnowledgeBuilder {
private GridExecutionNodeConnection nodeConnection;
private String instanceId;
- private Environment env;
+
public KnowledgeBuilderGridClient(String instanceId,
- GridExecutionNodeConnection nodeConnection, Environment env) {
+ GridExecutionNodeConnection nodeConnection) {
this.instanceId = instanceId;
this.nodeConnection = nodeConnection;
- this.env = env;
+
}
public void add(Resource resource,
@@ -44,8 +44,8 @@
public void add(Resource resource,
ResourceType resourceType,
ResourceConfiguration configuration) {
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+ nodeConnection.getMessageSession().counter.incrementAndGet(),
false,
new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderAddCommand( resource,
resourceType,
@@ -70,11 +70,11 @@
}
public KnowledgeBuilderErrors getErrors() {
- String commandId = "kbuilder.getErrors_" + nodeConnection.getNextId();
- String kresultsId = "kresults_" + nodeConnection.getSessionId();
+ String commandId = "kbuilder.getErrors_" + nodeConnection.getMessageSession().getNextId();
+ String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+ nodeConnection.getMessageSession().counter.incrementAndGet(),
false,
new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderGetErrorsCommand( commandId ),
instanceId,
@@ -103,11 +103,11 @@
}
public boolean hasErrors() {
- String commandId = "kbuilder.hasErrors_" + nodeConnection.getNextId();
- String kresultsId = "kresults_" + nodeConnection.getSessionId();
+ String commandId = "kbuilder.hasErrors_" + nodeConnection.getMessageSession().getNextId();
+ String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.getNextId(),
+ Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+ nodeConnection.getMessageSession().getNextId(),
false,
new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderHasErrorsCommand( commandId ),
instanceId,
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderProviderGridClient.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderProviderGridClient.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -4,10 +4,14 @@
package org.drools.services.grid;
+import java.rmi.RemoteException;
import java.util.Properties;
import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.drools.KnowledgeBase;
+import org.drools.SystemEventListenerFactory;
import org.drools.builder.DecisionTableConfiguration;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderConfiguration;
@@ -18,17 +22,32 @@
import org.drools.command.builder.NewKnowledgeBuilderCommand;
import org.drools.runtime.Environment;
import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
+import org.drools.services.grid.rio.RioConnector;
public class KnowledgeBuilderProviderGridClient
implements
KnowledgeBuilderFactoryService {
private GridExecutionNodeConnection nodeConnection;
- private Environment env;
+ private MessageSession messageSession;
+
- public KnowledgeBuilderProviderGridClient(GridExecutionNodeConnection nodeConnection, Environment env) {
- this.nodeConnection = nodeConnection;
- this.env = env;
+// public KnowledgeBuilderProviderGridClient(GridExecutionNodeConnection nodeConnection, Environment env) {
+// this.nodeConnection = nodeConnection;
+// this.env = env;
+// }
+
+ public KnowledgeBuilderProviderGridClient(GridNodeExecutionService currentService, ExecutionGridConnection gridClient) {
+ this.messageSession = new MessageSession();
+ this.nodeConnection = new GridExecutionNodeConnection(
+
+ //I need to specialize this class for include the RIO Connector, and solve the name problem
+ new RioConnector("client 1", SystemEventListenerFactory.getSystemEventListener(), (GridNodeExecutionService) currentService),
+ this.messageSession,
+ gridClient
+ );
+
}
public DecisionTableConfiguration newDecisionTableConfiguration() {
@@ -39,8 +58,8 @@
public KnowledgeBuilder newKnowledgeBuilder() {
String localId = UUID.randomUUID().toString();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( messageSession.getSessionId(),
+ messageSession.counter.incrementAndGet(),
false,
new SetVariableCommand( "__TEMP__",
localId,
@@ -59,7 +78,7 @@
}
return new KnowledgeBuilderGridClient( localId,
- nodeConnection, env );
+ nodeConnection );
}
public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/StatefulKnowledgeSessionGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/StatefulKnowledgeSessionGridClient.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/StatefulKnowledgeSessionGridClient.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -29,7 +29,9 @@
import org.drools.services.command.GetWorkItemManagerCommand;
import org.drools.services.command.RegisterRemoteWorkItemHandlerCommand;
import org.drools.services.command.StartProcessRemoteCommand;
+import org.drools.services.generic.GenericConnector;
import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
import org.drools.time.SessionClock;
@@ -37,17 +39,24 @@
implements
StatefulKnowledgeSession {
- private GridExecutionNodeConnection nodeConnection;
+ private GridNodeExecutionService nodeConnection;
private String instanceId;
- private Environment env;
+ private MessageSession messageSession;
+
- public StatefulKnowledgeSessionGridClient(String instanceId,
- GridExecutionNodeConnection nodeConnection, Environment env) {
+
+
+
+
+ StatefulKnowledgeSessionGridClient(String instanceId, GridNodeExecutionService currentService, MessageSession messageSession) {
this.instanceId = instanceId;
- this.nodeConnection = nodeConnection;
- this.env = env;
+ this.nodeConnection = currentService;
+ this.messageSession = messageSession;
}
+
+
+
public String getInstanceId() {
return this.instanceId;
}
@@ -63,11 +72,11 @@
}
public int fireAllRules() {
- String commandId = "ksession.fireAllRules" + nodeConnection.getNextId();
- String kresultsId = "kresults_" + nodeConnection.getSessionId();
+ String commandId = "ksession.fireAllRules" + messageSession.getNextId();
+ String kresultsId = "kresults_" + messageSession.getSessionId();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( messageSession.getSessionId(),
+ messageSession.getCounter().incrementAndGet(),
false,
new KnowledgeContextResolveFromContextCommand( new FireAllRulesCommand( commandId ),
null,
@@ -75,7 +84,7 @@
instanceId,
kresultsId ) );
try {
- Object object = nodeConnection.client.write( msg ).getPayload();
+ Object object = nodeConnection.write( msg ).getPayload();
if ( object == null ) {
throw new RuntimeException( "Response was not correctly received" );
@@ -109,11 +118,11 @@
}
public ExecutionResults execute(Command command) {
- String commandId = "ksession.execute" + nodeConnection.getNextId();
- String kresultsId = "kresults_" + nodeConnection.getSessionId();
+ String commandId = "ksession.execute" + messageSession.getNextId();
+ String kresultsId = "kresults_" + messageSession.getSessionId();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( messageSession.getSessionId(),
+ messageSession.counter.incrementAndGet(),
false,
new KnowledgeContextResolveFromContextCommand( new ExecuteCommand( commandId,
command ),
@@ -123,7 +132,7 @@
kresultsId ) );
try {
- Object object = nodeConnection.client.write( msg ).getPayload();if ( object == null ) {
+ Object object = nodeConnection.write( msg ).getPayload();if ( object == null ) {
throw new RuntimeException( "Response was not correctly received" );
}
@@ -269,9 +278,9 @@
}
public WorkItemManager getWorkItemManager() {
- String kresultsId = "kresults_" + nodeConnection.getSessionId();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ String kresultsId = "kresults_" + messageSession.getSessionId();
+ Message msg = new Message( messageSession.getSessionId(),
+ messageSession.counter.incrementAndGet(),
true,
new KnowledgeContextResolveFromContextCommand( new GetWorkItemManagerCommand(),
null,
@@ -279,9 +288,9 @@
instanceId,
kresultsId ) );
try {
- Object payload = nodeConnection.client.write( msg ).getPayload();
+ Object payload = nodeConnection.write( msg ).getPayload();
WorkItemManager workItemManager = (WorkItemManager) ((ExecutionResults) payload).getValue( "workItemManager" );
- ((WorkItemManagerGridClient)workItemManager).setServiceManager(nodeConnection);
+ //((WorkItemManagerGridClient)workItemManager).setServiceManager(nodeConnection);
((WorkItemManagerGridClient)workItemManager).setInstanceId(instanceId);
return workItemManager;
} catch ( Exception e ) {
@@ -291,10 +300,10 @@
public void registerWorkItemHandler(String name, String workItemHandler){
- String kresultsId = "kresults_" + nodeConnection.getSessionId();
+ String kresultsId = "kresults_" + messageSession.getSessionId();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( messageSession.getSessionId(),
+ messageSession.counter.incrementAndGet(),
false,
new KnowledgeContextResolveFromContextCommand( new RegisterRemoteWorkItemHandlerCommand(name, workItemHandler ),
null,
@@ -303,7 +312,7 @@
kresultsId ) );
try {
- nodeConnection.client.write( msg );
+ nodeConnection.write( msg );
} catch ( Exception e ) {
throw new RuntimeException( "Unable to execute message",
@@ -320,11 +329,11 @@
}
public ProcessInstance startProcess(String processId) {
- String commandId = "ksession.execute" + nodeConnection.getNextId();
- String kresultsId = "kresults_" + nodeConnection.getSessionId();
+ String commandId = "ksession.execute" + messageSession.getNextId();
+ String kresultsId = "kresults_" + messageSession.getSessionId();
- Message msg = new Message( nodeConnection.getSessionId(),
- nodeConnection.counter.incrementAndGet(),
+ Message msg = new Message( messageSession.getSessionId(),
+ messageSession.counter.incrementAndGet(),
false,
new KnowledgeContextResolveFromContextCommand( new StartProcessRemoteCommand( processId ),
null,
@@ -333,7 +342,7 @@
kresultsId ) );
try {
- Object object = nodeConnection.client.write( msg ).getPayload();
+ Object object = nodeConnection.write( msg ).getPayload();
if ( object == null ) {
throw new RuntimeException( "Response was not correctly received" );
}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/WorkItemManagerGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/WorkItemManagerGridClient.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/WorkItemManagerGridClient.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -19,7 +19,7 @@
private static final long serialVersionUID = 1L;
- private GridExecutionNodeConnection serviceManager;
+ private GridExecutionNodeConnection nodeConnection;
private String instanceId;
public void abortWorkItem(long id) {
@@ -27,9 +27,9 @@
}
public void completeWorkItem(long id, Map<String, Object> results) {
- String kresultsId = "kresults_" + serviceManager.getSessionId();
- Message msg = new Message( serviceManager.getSessionId(),
- serviceManager.counter.incrementAndGet(),
+ String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
+ Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+ nodeConnection.getMessageSession().counter.incrementAndGet(),
true,
new KnowledgeContextResolveFromContextCommand( new CompleteWorkItemCommand(id, results),
null,
@@ -37,7 +37,7 @@
instanceId,
kresultsId ) );
try {
- serviceManager.client.write( msg );
+ nodeConnection.client.write( msg );
} catch ( Exception e ) {
throw new RuntimeException( "Unable to execute message", e );
}
@@ -48,7 +48,7 @@
}
public void setServiceManager(GridExecutionNodeConnection serviceManager) {
- this.serviceManager = serviceManager;
+ this.nodeConnection = serviceManager;
}
public void setInstanceId(String instanceId) {
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/RandomSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/RandomSelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/RandomSelectionStrategy.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,41 @@
+/*
+ * 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.services.grid.strategies;
+
+import org.drools.services.grid.ExecutionGridConnection;
+import org.drools.services.grid.GridNodeExecutionService;
+import org.drools.services.grid.GridSelectionStrategy;
+
+/**
+ *
+ * @author salaboy
+ */
+public class RandomSelectionStrategy implements GridSelectionStrategy{
+
+ private ExecutionGridConnection connection;
+ public RandomSelectionStrategy(ExecutionGridConnection connection) {
+ this.connection = connection;
+ }
+
+
+ @Override
+ public GridNodeExecutionService getBestNode() {
+ return this.connection.getServices().iterator().next();
+ }
+
+}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -27,6 +27,7 @@
import org.drools.io.ResourceFactory;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.services.grid.DirectoryLookupFactoryService;
import org.drools.services.grid.ExecutionGridConnection;
import org.drools.services.grid.KnowledgeBaseProviderGridClient;
import org.junit.Assert;
@@ -169,10 +170,9 @@
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
- ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession1",
- ksession );
+ node.get(DirectoryLookupFactoryService.class).register( "ksession1", ksession );
- ExecutionResults results = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+ ExecutionResults results = node.get(DirectoryLookupFactoryService.class).lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
Assert.assertEquals( 2, (int ) ( Integer) results.getValue( "fired" ) );
}
@@ -185,7 +185,7 @@
str += "global java.util.List list \n";
str += "rule rule1 \n";
str += " dialect \"java\" \n";
- str += "when \n";
+ str += "when \n";
str += "then \n";
str += " System.out.println( \"hello1!!!\" ); \n";
str += "end \n";
@@ -213,94 +213,94 @@
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
System.out.println("registering a session!!!!!!!");
- ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession1",
+ node.get(DirectoryLookupFactoryService.class).register( "ksession1",
ksession );
System.out.println("Lookup ksession1!!!!!!!!!!!!!");
- ExecutionResults results = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+ ExecutionResults results = node.get(DirectoryLookupFactoryService.class).lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
Assert.assertEquals( 2,
(int) (Integer) results.getValue( "fired" ) );
System.out.println("TEst ENDED =========>");
}
- @Test
- public void twoSessionsIntoDifferentSessionServices(){
+// @Test
+// public void twoSessionsIntoDifferentSessionServices(){
+//
+// String str = "";
+// str += "package org.drools \n";
+// str += "global java.util.List list \n";
+// str += "rule rule1 \n";
+// str += " dialect \"java\" \n";
+// str += "when \n";
+// str += "then \n";
+// str += " System.out.println( \"hello1!!!\" ); \n";
+// str += "end \n";
+// str += "rule rule2 \n";
+// str += " dialect \"java\" \n";
+// str += "when \n";
+// str += "then \n";
+// str += " System.out.println( \"hello2!!!\" ); \n";
+// str += "end \n";
+//
+// KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+// Assert.assertNotNull(kbuilder);
+//
+// kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+// ResourceType.DRL );
+//
+// if ( kbuilder.hasErrors() ) {
+// System.out.println( "Errors: " + kbuilder.getErrors() );
+// }
+//
+// KnowledgeBase kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+// Assert.assertNotNull(kbase);
+//
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// StatefulKnowledgeSession ksession1 = kbase.newStatefulKnowledgeSession();
+// System.out.println("registering ksession1!");
+// ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession1", ksession1 );
+//
+// System.out.println("Let's go for the Second ksession");
+//
+// //((ServiceManagerGridClient)this.client).setCurrentSessionService((SessionService)((ServiceManagerGridClient)this.client).getSessionServices().get(1));
+// //If I do this here.. and I don't create a new Kbase. the context got nothing and cannot find the kbase in the new session service.. of course
+// node = connection.getAnotherExecutionNode();
+//
+// KnowledgeBuilder kbuilder2 = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+// Assert.assertNotNull(kbuilder2);
+//
+// kbuilder2.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+// ResourceType.DRL );
+//
+// if ( kbuilder2.hasErrors() ) {
+// System.out.println( "Errors: " + kbuilder2.getErrors() );
+// }
+//
+//
+// KnowledgeBase kbase2 = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+// Assert.assertNotNull(kbase2);
+//
+//
+// kbase2.addKnowledgePackages( kbuilder2.getKnowledgePackages() );
+//
+// StatefulKnowledgeSession ksession2 = kbase2.newStatefulKnowledgeSession();
+// System.out.println("registering ksession2!");
+// ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession2", ksession2 );
+//
+// System.out.println("Lookuping up ksession1 !");
+// ExecutionResults results1 = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+//
+// Assert.assertEquals( 2,
+// (int) (Integer) results1.getValue( "fired" ) );
+//
+// System.out.println("Lookuping up ksession2 !");
+// ExecutionResults results2 = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession2" ).execute( new FireAllRulesCommand( "fired" ) );
+//
+// Assert.assertEquals( 2,
+// (int) (Integer) results2.getValue( "fired" ) );
+//
+// }
- String str = "";
- str += "package org.drools \n";
- str += "global java.util.List list \n";
- str += "rule rule1 \n";
- str += " dialect \"java\" \n";
- str += "when \n";
- str += "then \n";
- str += " System.out.println( \"hello1!!!\" ); \n";
- str += "end \n";
- str += "rule rule2 \n";
- str += " dialect \"java\" \n";
- str += "when \n";
- str += "then \n";
- str += " System.out.println( \"hello2!!!\" ); \n";
- str += "end \n";
- KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
- Assert.assertNotNull(kbuilder);
- kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
- ResourceType.DRL );
-
- if ( kbuilder.hasErrors() ) {
- System.out.println( "Errors: " + kbuilder.getErrors() );
- }
-
- KnowledgeBase kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
- Assert.assertNotNull(kbase);
-
- kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
- StatefulKnowledgeSession ksession1 = kbase.newStatefulKnowledgeSession();
- System.out.println("registering ksession1!");
- ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession1", ksession1 );
-
- System.out.println("Let's go for the Second ksession");
-
- //((ServiceManagerGridClient)this.client).setCurrentSessionService((SessionService)((ServiceManagerGridClient)this.client).getSessionServices().get(1));
- //If I do this here.. and I don't create a new Kbase. the context got nothing and cannot find the kbase in the new session service.. of course
- node = connection.getAnotherExecutionNode();
-
- KnowledgeBuilder kbuilder2 = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
- Assert.assertNotNull(kbuilder2);
-
- kbuilder2.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
- ResourceType.DRL );
-
- if ( kbuilder2.hasErrors() ) {
- System.out.println( "Errors: " + kbuilder2.getErrors() );
- }
-
-
- KnowledgeBase kbase2 = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
- Assert.assertNotNull(kbase2);
-
-
- kbase2.addKnowledgePackages( kbuilder2.getKnowledgePackages() );
-
- StatefulKnowledgeSession ksession2 = kbase2.newStatefulKnowledgeSession();
- System.out.println("registering ksession2!");
- ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession2", ksession2 );
-
- System.out.println("Lookuping up ksession1 !");
- ExecutionResults results1 = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
-
- Assert.assertEquals( 2,
- (int) (Integer) results1.getValue( "fired" ) );
-
- System.out.println("Lookuping up ksession2 !");
- ExecutionResults results2 = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession2" ).execute( new FireAllRulesCommand( "fired" ) );
-
- Assert.assertEquals( 2,
- (int) (Integer) results2.getValue( "fired" ) );
-
- }
-
-
-
}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ITGridExecutionTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ITGridExecutionTest.java 2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ITGridExecutionTest.java 2010-03-21 04:18:29 UTC (rev 32162)
@@ -45,35 +45,38 @@
DirectoryService directoryService = (DirectoryService) testManager.waitForService(DirectoryService.class);
Assert.assertNotNull(directoryService);
- Environment env = new EnvironmentImpl();
- env.set("DIRECTORY_SERVICE", directoryService);
+ connection.addDirectory(directoryService);
+// Environment env = new EnvironmentImpl();
+// env.set("DIRECTORY_SERVICE", directoryService);
for (int i = 0; i < nodeServiceItems.length; i++) {
if (nodeServiceItems[i].service instanceof GridNodeExecutionService) {
- //sessionServices.add((GridNodeExecutionService) sessionServiceItems[i].service);
- System.out.println("Service Item = "+nodeServiceItems[i].service);
- ExecutionNode node = new ExecutionNode();
- node.set(KnowledgeBuilderFactoryService.class,
- new KnowledgeBuilderProviderGridClient(
- new GridExecutionNodeConnection(
- ((GridNodeExecutionService)nodeServiceItems[i].service).getId(),
- new RioConnector("client1",SystemEventListenerFactory.getSystemEventListener(),
- (GridNodeExecutionService)nodeServiceItems[i].service)
- ,env),
- env
- ));
- node.set(KnowledgeBaseFactoryService.class,
- new KnowledgeBaseProviderGridClient(
- new GridExecutionNodeConnection(
- ((GridNodeExecutionService)nodeServiceItems[i].service).getId(),
- new RioConnector("client2",SystemEventListenerFactory.getSystemEventListener(),
- (GridNodeExecutionService)nodeServiceItems[i].service),
- env),
- env
- ));
- connection.addNode(node);
+
+// System.out.println("Service Item = "+nodeServiceItems[i].service);
+// ExecutionNode node = new ExecutionNode();
+// node.set(KnowledgeBuilderFactoryService.class,
+// new KnowledgeBuilderProviderGridClient(
+// new GridExecutionNodeConnection(
+// ((GridNodeExecutionService)nodeServiceItems[i].service).getId(),
+// new RioConnector("client1",SystemEventListenerFactory.getSystemEventListener(),
+// (GridNodeExecutionService)nodeServiceItems[i].service)
+// ,env),
+// env
+// ));
+// node.set(KnowledgeBaseFactoryService.class,
+// new KnowledgeBaseProviderGridClient(
+// new GridExecutionNodeConnection(
+// ((GridNodeExecutionService)nodeServiceItems[i].service).getId(),
+// new RioConnector("client2",SystemEventListenerFactory.getSystemEventListener(),
+// (GridNodeExecutionService)nodeServiceItems[i].service),
+// env),
+// env
+// ));
+// connection.addNode(node);
+
+ connection.addService((GridNodeExecutionService) nodeServiceItems[i].service);
}
}
@@ -83,7 +86,7 @@
// connection.setDirectory(directoryService);
- node = connection.getPreferedExecutionNode();
+ node = connection.getExecutionNode();
System.out.println("Node = "+ node);
More information about the jboss-svn-commits
mailing list