void doOperation() { kBase.removeKiePackage(pkg.getName()); kBase.addPackage(pkg); } }
private void checkRuleBase(final String name) throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_" + name + ".drl" ) ) ); InternalKnowledgePackage pkg = builder.getPackage("org.drools.compiler.test"); final InternalKnowledgeBase kBase = (InternalKnowledgeBase) getKnowledgeBase(); kBase.addPackage( pkg ); if ( this.writeTree ) { writeRuleBase( kBase, name ); } final XStream xstream = createTrustingXStream(); final InternalKnowledgeBase goodKBase = (InternalKnowledgeBase) xstream.fromXML( getClass().getResourceAsStream( name ) ); nodesEquals( goodKBase.getRete(), kBase.getRete() ); }
@Test public void testNotRemoveIdentities() throws Exception { // Default is remove identity FALSE InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); kBase.addPackage( this.pkg ); this.ksession = kBase.newKieSession(); this.ksession.insert( "F1" ); this.ksession.insert( "F2" ); this.ksession.insert( "F3" ); this.ksession.insert( "F4" ); this.ksession.fireAllRules(); // A full cross product is 16, this is just 12 System.out.println(values); assertEquals( 16, this.values.size() ); }
@Test public void testRemoveIdentities() throws Exception { System.setProperty( "drools.removeIdentities", "true" ); try { InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); kBase.addPackage( this.pkg ); this.ksession = kBase.newKieSession(); this.ksession.insert( "F1" ); this.ksession.insert( "F2" ); this.ksession.insert( "F3" ); this.ksession.insert( "F4" ); this.ksession.fireAllRules(); // A full cross product is 16, this is just 12 assertEquals( 12, this.values.size() ); } finally { System.setProperty( "drools.removeIdentities", "false" ); } }
@Before public void setUp() { this.kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); pkg = new KnowledgePackageImpl("org.droos.test"); pkg.setClassFieldAccessorCache(new ClassFieldAccessorCache(Thread.currentThread().getContextClassLoader())); JavaDialectRuntimeData data = new JavaDialectRuntimeData(); data.onAdd(pkg.getDialectRuntimeRegistry(), kBase.getRootClassLoader()); pkg.getDialectRuntimeRegistry().setDialectData("java", data); // we need to add one rule to the package because the previous deadlock was encountered // while removing rules from a package when said package is removed from the rulebase rule = new RuleImpl("Test"); rule.setDialect("java"); rule.setConsequence(new Consequence() { public void evaluate(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory) throws Exception { } public String getName() { return "default"; } }); pkg.addRule(rule); kBase.addPackage(pkg); }
pkg.addRule(rule); kBase.addPackage(pkg); KieSession session = kBase.newKieSession(); Command dispose = KieServices.Factory.get().getCommands().newDispose();
private InternalKnowledgeBase readKnowledgeBase(String drl) { // read in the source try (Reader source = new StringReader(drl)) { KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackageFromDrl(source); InternalKnowledgePackage pkg = builder.getPackage(DefaultTemplateRuleBase.class.getPackage().getName()); // add the package to a rulebase (deploy the rule package). InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); kBase.addPackage(pkg); return kBase; } catch (Exception e) { throw new RuntimeException(e); } }
kBase.addPackage(pkg);
listener2.getAfterRuleAdded() ); this.kBase.addPackage( pkg );
@Test public void testRemovePackageEvents() throws Exception { this.kBase.addPackage( pkg );