Skip to content
This repository has been archived by the owner on May 26, 2022. It is now read-only.

Commit

Permalink
Dynamic resource addition
Browse files Browse the repository at this point in the history
  • Loading branch information
sotty committed Jul 30, 2012
1 parent 43f5e6f commit 79ef0f9
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 17 deletions.
2 changes: 1 addition & 1 deletion drools-mas-acl/pom.xml
Expand Up @@ -58,7 +58,7 @@
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.2.2</version>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
Expand Down
Expand Up @@ -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();

Expand Down
Expand Up @@ -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 );
}
}


Expand All @@ -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 {
Expand Down
20 changes: 14 additions & 6 deletions drools-mas-core/src/main/resources/org/drools/mas/acl_common.drl
Expand Up @@ -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;

Expand All @@ -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 )
Expand Down Expand Up @@ -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)
Expand All @@ -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
Expand Up @@ -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 );
Expand Down
Expand Up @@ -21,7 +21,7 @@ http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<bean id="async-agent-service" class="org.drools.mas.AsyncDroolsAgentServiceImpl" destroy-method="dispose">
<property name="agent" ref="agent"/>
</bean>
<bean id="agent-service" class="org.drools.mas.SynchronousDroolsAgentServiceImpl" destroy-method="dispose">
<bean id="agent-service" class="org.drools.mas.SynchronousDroolsAgentServiceImpl" >
<property name="agent" ref="agent"/>
</bean>

Expand Down

0 comments on commit 79ef0f9

Please sign in to comment.