Examples of KnowledgeAgent


Examples of org.drools.agent.KnowledgeAgent

        Resource changeSetRes = new ByteArrayResource(changeSetString.getBytes());
        ((InternalResource) changeSetRes).setResourceType(ResourceType.CHANGE_SET);
       
       
       
        KnowledgeAgent kAgent = GridHelper.getKnowledgeAgentRemoteClient(remoteN1.getId(), "ksession-rules");
        kAgent.applyChangeSet(changeSetRes);

        Thread.sleep(5000);

        MyObject obj2 = new MyObject("obj2");
        ksession.insert(obj2);
View Full Code Here

Examples of org.drools.agent.KnowledgeAgent

     *
     * @return A KnowledgeBase
     * @throws Exception
     */
    private static KnowledgeBase readKnowledgeBase() throws Exception {
        KnowledgeAgent kagent = KnowledgeAgentFactory
                .newKnowledgeAgent( "MortgageAgent" );
        kagent.applyChangeSet( ResourceFactory
                .newClassPathResource( "changeset.xml" ) );
        KnowledgeBase kbase = kagent.getKnowledgeBase();
        kagent.dispose();
        return kbase;
    }
View Full Code Here

Examples of org.drools.agent.KnowledgeAgent

    ResourceFactory.getResourceChangeScannerService().configure( sconf );
    ResourceFactory.getResourceChangeNotifierService().start();
    ResourceFactory.getResourceChangeScannerService().start();

    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    KnowledgeAgent kagent = (KnowledgeAgent) KnowledgeAgentFactory.newKnowledgeAgent("incremental builder", kbase, configuration);

    kagent.applyChangeSet(new ClassPathResource("/config/change-set.xml", getClass()));
    kbase = kagent.getKnowledgeBase();

    ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();
  }
View Full Code Here

Examples of org.drools.agent.KnowledgeAgent

        List<String> list = new ArrayList<String>();

        //Create a new Agent with newInstace=true
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        KnowledgeAgent kagent = this.createKAgent(kbase, false);

        //Agent: take care of them!
        kagent.applyChangeSet(ResourceFactory.newUrlResource(fxml.toURI().toURL()));
        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();


        ksession.setGlobal("list", list);
        ksession.insert(new Person());
        ksession.fireAllRules();

        //The rule should be fired
        assertEquals(1, list.size());
        assertTrue(list.contains("Rule1"));

        list.clear();
        kbaseUpdated = false;
       
        Thread.sleep(2000);
        //the dsl is now modified.
        f1 = fileManager.newFile("myExpander.dsl");
        output = new BufferedWriter(new FileWriter(f1));
        output.write(this.createCommonDSL("name == \"John\""));
        output.close();

        //We also need to mark the dslr file as modified, so the rules could
        //be regenerated
        f1 = fileManager.newFile("rules.drl");
        output = new BufferedWriter(new FileWriter(f1));
        output.write(header);
        output.write(this.createCommonDSLRRule("Rule1"));
        output.close();


        this.waitUntilKBaseUpdate();

        ksession.insert(new Person());
        ksession.fireAllRules();

        //The rule was modified then no rule got fired.
        assertEquals(0, list.size());

        Person p = new Person();
        p.setName("John");
        ksession.insert(p);
        ksession.fireAllRules();

        //The new fact activated and fired the modified rule
        Thread.sleep(2000);
        assertEquals(1, list.size());
        assertTrue(list.contains("Rule1"));

        //let's add a new rule
        f1 = fileManager.newFile("rules.drl");
        output = new BufferedWriter(new FileWriter(f1));
        output.write(header);
        output.write(this.createCommonDSLRRule("Rule1"));
        output.write(this.createCommonDSLRRule("Rule2"));
        output.close();

        this.waitUntilKBaseUpdate();

        list.clear();
        ksession.fireAllRules();

        //because we already had a John inserted, Rule2 gets fired.
        assertEquals(1, list.size());
        assertTrue(list.contains("Rule2"));

        //let's remove Rule1 and Rule2 and add a new rule: Rule3
        Thread.sleep(2000);
        f1 = fileManager.newFile("rules.drl");
        output = new BufferedWriter(new FileWriter(f1));
        output.write(header);
        output.write(this.createCommonDSLRRule("Rule3"));
        output.close();

        this.waitUntilKBaseUpdate();

        //we don't want to use a new ksession.
        ksession.dispose();
        ksession = kbase.newStatefulKnowledgeSession();

        //insert John
        list.clear();
        ksession.setGlobal("list", list);
        ksession.insert(p);
        ksession.fireAllRules();

        //The only existing rule must be fired
        assertEquals(1, list.size());
        assertTrue(list.contains("Rule3"));

        //let's delete the dsl file (errors are expected)
        Thread.sleep(2000);
        f1 = fileManager.newFile("myExpander.dsl");
        f1.delete();

        f1 = fileManager.newFile("rules.drl");
        output = new BufferedWriter(new FileWriter(f1));
        output.write(header);
        output.write(this.createCommonDSLRRule("Rule1"));
        output.close();

        this.waitUntilKBaseUpdate();

        //Compilation errors should occurred
        assertTrue(this.compilationErrors);
        this.compilationErrors=false;

        ksession.dispose();
        kagent.monitorResourceChangeEvents(false);
    }
View Full Code Here

Examples of org.drools.agent.KnowledgeAgent

        List<String> list = new ArrayList<String>();

        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();

        //Create a new Agent with newInstace=true
        KnowledgeAgent kagent = this.createKAgent(kbase,true);

        //Agent: take care of them!
        kagent.applyChangeSet(ResourceFactory.newUrlResource(fxml.toURI().toURL()));
        this.kbaseUpdated = false;
        StatefulKnowledgeSession ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();


        ksession.setGlobal("list", list);
        ksession.insert(new Person());
        ksession.fireAllRules();

        //The rule should be fired
        assertEquals(1, list.size());
        assertTrue(list.contains("Rule1"));
        list.clear();

        ksession.dispose();

        Thread.sleep(2000);
        //Let's modify the dsl file
        f1 = fileManager.newFile("myExpander.dsl");
        output = new BufferedWriter(new FileWriter(f1));
        output.write(this.createCommonDSL("name == \"John\""));
        output.close();

        //We need to mark the dslr file as modified (even when it was not) so
        //the agent could recreate the rules it contains using the new dsl.
        f1 = fileManager.newFile("rules.drl");
        output = new BufferedWriter(new FileWriter(f1));
        output.write(header);
        output.write(this.createCommonDSLRRule("Rule1"));
        output.close();

        this.waitUntilKBaseUpdate();

        //get a new ksession
        ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();

        //A Person without name shouldn't fire any rule now (because it was
        //modified)
        ksession.setGlobal("list", list);
        ksession.insert(new Person());
        ksession.fireAllRules();

        assertEquals(0, list.size());

        //A "John" Person should fire the modified rule
        Person p = new Person();
        p.setName("John");
        ksession.insert(p);
        ksession.fireAllRules();

        assertEquals(1, list.size());
        assertTrue(list.contains("Rule1"));

        ksession.dispose();

        Thread.sleep(2000);
        //Let's add a new Rule
        f1 = fileManager.newFile("rules.drl");
        output = new BufferedWriter(new FileWriter(f1));
        output.write(header);
        output.write(this.createCommonDSLRRule("Rule1"));
        output.write(this.createCommonDSLRRule("Rule2"));
        output.close();

        this.waitUntilKBaseUpdate();

        //get a new ksession
        ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();

        //A "John" Person now should fire 2 rules
        list.clear();
        ksession.setGlobal("list", list);
        ksession.insert(p);
        ksession.fireAllRules();

        assertEquals(2, list.size());
        assertTrue(list.contains("Rule1"));
        assertTrue(list.contains("Rule2"));

        ksession.dispose();

        Thread.sleep(2000);
        //Let's remove both rules and add a new one: Rule3
        f1 = fileManager.newFile("rules.drl");
        output = new BufferedWriter(new FileWriter(f1));
        output.write(header);
        output.write(this.createCommonDSLRRule("Rule3"));
        output.close();

        this.waitUntilKBaseUpdate();

        //get a new ksession
        ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();

        //A "John" Person now should only Rule3 (the other two rules were removes)
        list.clear();
        ksession.setGlobal("list", list);
        ksession.insert(p);
        ksession.fireAllRules();

        assertEquals(1, list.size());
        assertTrue(list.contains("Rule3"));

        ksession.dispose();

        Thread.sleep(2000);
        //let's delete the dsl file (errors are expected)
        f1 = fileManager.newFile("myExpander.dsl");
        f1.delete();

        f1 = fileManager.newFile("rules.drl");
        output = new BufferedWriter(new FileWriter(f1));

        output.write(header);
        output.write(this.createCommonDSLRRule("Rule1"));
        output.close();

        this.waitUntilKBaseUpdate();

        //Compilation errors should occurred
        assertTrue(this.compilationErrors);
        this.compilationErrors=false;


        kagent.monitorResourceChangeEvents(false);
    }
View Full Code Here

Examples of org.kie.internal.agent.KnowledgeAgent

        assertEquals(3, kbase.getKnowledgePackages().iterator().next().getRules().size());
    }

    @Test @Ignore
    public void testCSVByKnowledgeAgent() {
        KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("csv agent");
        kagent.applyChangeSet(ResourceFactory.newClassPathResource("changeSetTestCSV.xml", getClass()));
        KnowledgeBase kbase = kagent.getKnowledgeBase();
       
        assertEquals(1, kbase.getKnowledgePackages().size());
        assertEquals(3, kbase.getKnowledgePackages().iterator().next().getRules().size());
    }
View Full Code Here

Examples of org.kie.internal.agent.KnowledgeAgent

            File targetTestFilesDir = new File("target/testFiles");
            targetTestFilesDir.mkdirs();
            File changeSetFile = new File(targetTestFilesDir, "changeSetTestCSV.xml");
            FileUtils.copyURLToFile(getClass().getResource("changeSetTestCSV.xml"), changeSetFile);

            KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("csv agent");
            kagent.applyChangeSet(ResourceFactory.newFileResource(changeSetFile));
            KnowledgeBase kbase = kagent.getKnowledgeBase();

            assertEquals(1, kbase.getKnowledgePackages().size());
            assertEquals(3, kbase.getKnowledgePackages().iterator().next().getRules().size());

        } catch(Throwable t) {
View Full Code Here

Examples of org.kie.internal.agent.KnowledgeAgent

        assertEquals(3, kbase.getKnowledgePackages().iterator().next().getRules().size());
    }

    @Test @Ignore
    public void testCSVByKnowledgeAgent() {
        KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("csv agent");
        kagent.applyChangeSet(ResourceFactory.newClassPathResource("changeSetTestCSV.xml", getClass()));
        KnowledgeBase kbase = kagent.getKnowledgeBase();
       
        assertEquals(1, kbase.getKnowledgePackages().size());
        assertEquals(3, kbase.getKnowledgePackages().iterator().next().getRules().size());
    }
View Full Code Here

Examples of org.kie.internal.agent.KnowledgeAgent

            File targetTestFilesDir = new File("target/testFiles");
            targetTestFilesDir.mkdirs();
            File changeSetFile = new File(targetTestFilesDir, "changeSetTestCSV.xml");
            FileUtils.copyURLToFile(getClass().getResource("changeSetTestCSV.xml"), changeSetFile);

            KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("csv agent");
            kagent.applyChangeSet(ResourceFactory.newFileResource(changeSetFile));
            KnowledgeBase kbase = kagent.getKnowledgeBase();

            assertEquals(1, kbase.getKnowledgePackages().size());
            assertEquals(3, kbase.getKnowledgePackages().iterator().next().getRules().size());

        } catch(Throwable t) {
View Full Code Here

Examples of org.kie.internal.agent.KnowledgeAgent

    ResourceFactory.getResourceChangeScannerService().configure(config);
    ResourceFactory.getResourceChangeNotifierService().start();
    ResourceFactory.getResourceChangeScannerService().start();

    // load knowledge base via knowledge agent
    KnowledgeAgent kagent = KnowledgeAgentFactory
        .newKnowledgeAgent("csv agent");
    kagent.applyChangeSet(ResourceFactory.newClassPathResource(
        "scannerChangeSetTestCSV.xml", getClass()));
    KnowledgeBase kbase = kagent.getKnowledgeBase();

    assertEquals(1, kbase.getKnowledgePackages().size());
    assertEquals(3, kbase.getKnowledgePackages().iterator().next()
        .getRules().size());

    // after some waiting we change number of rules in decision table,
    // scanner should notice the change
    Thread.sleep(1100);
    file.delete();
    fileManager.write(file, second);
    Thread.sleep(1100);

    try {
      kbase = kagent.getKnowledgeBase();
      // fails here - see surefire report, knowledge agent fails to load the change
      assertEquals(1, kbase.getKnowledgePackages().size());
      assertEquals(2, kbase.getKnowledgePackages().iterator().next()
          .getRules().size());
    } finally {
      ResourceFactory.getResourceChangeNotifierService().stop();
      ResourceFactory.getResourceChangeScannerService().stop();
      file.delete();
      kagent.dispose();
    }
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.