diff --git a/drools-mas-acl/pom.xml b/drools-mas-acl/pom.xml
index 88d5d93..922f918 100644
--- a/drools-mas-acl/pom.xml
+++ b/drools-mas-acl/pom.xml
@@ -58,7 +58,7 @@
com.thoughtworks.xstream
xstream
- 1.2.2
+ 1.4.1
org.codehaus.jettison
diff --git a/drools-mas-core/src/main/java/org/drools/mas/core/DroolsAgentFactory.java b/drools-mas-core/src/main/java/org/drools/mas/core/DroolsAgentFactory.java
index 9cded0e..66c41b5 100644
--- a/drools-mas-core/src/main/java/org/drools/mas/core/DroolsAgentFactory.java
+++ b/drools-mas-core/src/main/java/org/drools/mas/core/DroolsAgentFactory.java
@@ -110,12 +110,12 @@ public DroolsAgent spawn( DroolsAgentConfiguration config ) {
SessionManager sm = SessionManager.create( config, descr, grid, true );
StatefulKnowledgeSession mindSet = sm.getStatefulKnowledgeSession();
- try{
- mindSet.setGlobal( "grid", grid );
- } catch (Exception e){
- //maybe 'grid' is not even defined in subsession
- logger.debug("Global 'grid' not set on session '"+descr.getSessionId()+"' due to "+e.getMessage());
- }
+// try{
+// mindSet.setGlobal( "grid", grid );
+// } catch (Exception e){
+// //maybe 'grid' is not even defined in subsession
+// logger.debug("Global 'grid' not set on session '"+descr.getSessionId()+"' due to "+e.getMessage());
+// }
mindSet.fireAllRules();
diff --git a/drools-mas-core/src/main/java/org/drools/mas/core/SessionManager.java b/drools-mas-core/src/main/java/org/drools/mas/core/SessionManager.java
index 9bef196..9839a54 100644
--- a/drools-mas-core/src/main/java/org/drools/mas/core/SessionManager.java
+++ b/drools-mas-core/src/main/java/org/drools/mas/core/SessionManager.java
@@ -119,6 +119,10 @@ public static SessionManager create( String sessionId, DroolsAgentConfiguration
// should indicate that someone else left an orphan row in the WP
node = grid.claimGridNode( nodeId );
grid.get( SocketService.class ).addService( nodeId, port, node );
+
+ if ( forceRemote && ! node.isRemote() ) {
+ node = grid.asRemoteNode( node );
+ }
}
@@ -127,8 +131,11 @@ public static SessionManager create( String sessionId, DroolsAgentConfiguration
logger.debug( " ### Session Manager: Creating a new Local Node" );
}
node = createLocalNode( grid, nodeId );
-
grid.get( SocketService.class ).addService( nodeId, port, node );
+
+ if ( forceRemote && ! node.isRemote() ) {
+ node = grid.asRemoteNode( node );
+ }
}
} else {
diff --git a/drools-mas-core/src/main/resources/org/drools/mas/acl_common.drl b/drools-mas-core/src/main/resources/org/drools/mas/acl_common.drl
index 7b31577..2417d4c 100644
--- a/drools-mas-core/src/main/resources/org/drools/mas/acl_common.drl
+++ b/drools-mas-core/src/main/resources/org/drools/mas/acl_common.drl
@@ -30,6 +30,7 @@ import org.drools.mas.util.LoggerHelper;
import org.drools.mas.util.helper.SessionLocator;
import org.drools.grid.Grid;
+import org.drools.grid.helper.GridHelper;
import org.drools.grid.api.impl.ResourceDescriptorImpl;
import org.drools.grid.api.ResourceDescriptor;
@@ -39,8 +40,8 @@ import org.drools.builder.ResourceType;
global Grid grid;
declare ResourceAdditionRequest
- URL: URL
- type: ResourceType
+ URL : URL
+ type : ResourceType
end
query queryIf( Object $o )
@@ -77,6 +78,16 @@ end
//end
+rule "Init Grid"
+salience 999
+when
+then
+ // need to initialize Grid in remote nodes
+ if ( kcontext.getKnowledgeRuntime().getGlobal( "grid" ) == null ) {
+ kcontext.getKnowledgeRuntime().setGlobal( "grid", GridHelper.createGrid() );
+ }
+end
+
rule "Add Resource"
when
$rar: ResourceAdditionRequest($url: URL, $type: type)
@@ -88,10 +99,7 @@ then
rd.setResourceURL($url);
rd.setType($type);
- //SessionManager.addResource(grid, $nodeId, $sessionId, rd);
-
- SessionManager.addResource(drools.getWorkingMemory(), rd);
+ SessionManager.addResource( grid, $nodeId, $sessionId, rd );
-
retract($rar);
end
diff --git a/drools-mas-core/src/test/java/org/drools/mas/core/tests/TestAgent.java b/drools-mas-core/src/test/java/org/drools/mas/core/tests/TestAgent.java
index ee44b38..83fc8a7 100644
--- a/drools-mas-core/src/test/java/org/drools/mas/core/tests/TestAgent.java
+++ b/drools-mas-core/src/test/java/org/drools/mas/core/tests/TestAgent.java
@@ -79,9 +79,9 @@ public void createAgents() {
DroolsAgentConfiguration mainConfig = new DroolsAgentConfiguration();
mainConfig.setAgentId( "Mock Test Agent" );
mainConfig.setChangeset( "mainTestAgent_changeset.xml" );
- DroolsAgentConfiguration.SubSessionDescriptor subDescr1 = new DroolsAgentConfiguration.SubSessionDescriptor( "session1", "sub1.xml", "local-mock-test-agent" );
+ DroolsAgentConfiguration.SubSessionDescriptor subDescr1 = new DroolsAgentConfiguration.SubSessionDescriptor( "session1", "sub1.xml", "mock-test-agent" );
mainConfig.addSubSession( subDescr1 );
- DroolsAgentConfiguration.SubSessionDescriptor subDescr2 = new DroolsAgentConfiguration.SubSessionDescriptor( "session2", "sub2.xml", "local-mock-test-agent" );
+ DroolsAgentConfiguration.SubSessionDescriptor subDescr2 = new DroolsAgentConfiguration.SubSessionDescriptor( "session2", "sub2.xml", "mock-test-agent" );
mainConfig.addSubSession( subDescr2 );
mainConfig.setMindNodeLocation( "local-mock-test-agent" );
mainConfig.setPort( 7000 );
diff --git a/examples/drools-mas-emergency-agent/src/main/resources/META-INF/applicationContext.xml b/examples/drools-mas-emergency-agent/src/main/resources/META-INF/applicationContext.xml
index 2d954ae..9cb92ab 100644
--- a/examples/drools-mas-emergency-agent/src/main/resources/META-INF/applicationContext.xml
+++ b/examples/drools-mas-emergency-agent/src/main/resources/META-INF/applicationContext.xml
@@ -21,7 +21,7 @@ http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
-
+