PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new StringReader( rule1 ) );
Package pkg = builder.getPackage();
final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( pkg );
// Make sure the rete node map is created correctly
Map<Integer, BaseNode> nodes = RuleBaseNodes.getNodeMap( (InternalRuleBase) ruleBase );
assertEquals( 2,
nodes.size() );
assertEquals( "InitialFactImpl",
((ClassObjectType) ((ObjectTypeNode) nodes.get( 2 )).getObjectType()).getClassType().getSimpleName() );
assertEquals( "Rule 1",
((RuleTerminalNode) nodes.get( 4 )).getRule().getName() );
StatefulSession session = ruleBase.newStatefulSession();
List list = new ArrayList();
session.setGlobal( "list",
list );
StatefulSession session1 = getSerialisedStatefulSession( session );
session1.fireAllRules();
assertEquals( 1,
((List) session1.getGlobal( "list" )).size() );
WorkingMemory session2 = getSerialisedStatefulSession( session1,
true );
session.dispose();
session1.dispose();
builder = new PackageBuilder();
builder.addPackageFromDrl( new StringReader( rule2 ) );
pkg = builder.getPackage();
ruleBase.addPackage( pkg );
session2.fireAllRules();
System.out.println(session2.getGlobal( "list" ));
assertEquals( 2,
((List) session2.getGlobal( "list" )).size() );