Search in sources :

Example 1 with RuleUnitFactory

use of org.drools.core.ruleunit.RuleUnitFactory in project drools by kiegroup.

the class RuleUnitTest method testNamingConventionOnDrlFile.

@Test
public void testNamingConventionOnDrlFile() throws Exception {
    String drl1 = "package org.kie.test;\n" + "import " + Person.class.getCanonicalName() + "\n" + "rule Adult when\n" + "    $p : /persons[age >= 18]\n" + "then\n" + "    System.out.println($p.getName() + \" is adult\");\n" + "end";
    String javaRuleUnit = "package org.kie.test;\n" + "\n" + "import " + Person.class.getCanonicalName() + ";\n" + "import " + RuleUnit.class.getCanonicalName() + ";\n" + "import " + DataSource.class.getCanonicalName() + ";\n" + "\n" + "public class MyRuleUnit implements RuleUnit {\n" + "    private DataSource<Person> persons;\n" + "\n" + "    public DataSource<Person> getPersons() {\n" + "        return persons;\n" + "    }\n" + "}\n";
    String path = "org/kie/test/MyRuleUnit";
    KieServices ks = KieServices.get();
    KieFileSystem kfs = ks.newKieFileSystem();
    kfs.writeKModuleXML(ks.newKieModuleModel().toXML()).write("src/main/resources/" + path + ".drl", drl1).write("src/main/java/" + path + ".java", javaRuleUnit);
    ks.newKieBuilder(kfs).buildAll();
    KieContainer kcontainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId());
    KieBase kbase = kcontainer.getKieBase();
    RuleUnitExecutor executor = RuleUnitExecutor.create().bind(kbase);
    DataSource<Person> persons = executor.newDataSource("persons", new Person("Mario", 42));
    RuleUnit ruleUnit = new RuleUnitFactory().bindVariable("persons", persons).getOrCreateRuleUnit(((InternalRuleUnitExecutor) executor), "org.kie.test.MyRuleUnit", kcontainer.getClassLoader());
    assertEquals(1, executor.run(ruleUnit));
    persons.insert(new Person("Sofia", 4));
    assertEquals(0, executor.run(ruleUnit));
    persons.insert(new Person("Marilena", 44));
    assertEquals(1, executor.run(ruleUnit));
}
Also used : InternalRuleUnitExecutor(org.drools.core.impl.InternalRuleUnitExecutor) KieFileSystem(org.kie.api.builder.KieFileSystem) InternalRuleUnitExecutor(org.drools.core.impl.InternalRuleUnitExecutor) RuleUnitExecutor(org.kie.api.runtime.rule.RuleUnitExecutor) KieBase(org.kie.api.KieBase) RuleUnitFactory(org.drools.core.ruleunit.RuleUnitFactory) KieServices(org.kie.api.KieServices) RuleUnit(org.kie.api.runtime.rule.RuleUnit) Person(org.drools.compiler.Person) KieContainer(org.kie.api.runtime.KieContainer) Test(org.junit.Test)

Aggregations

Person (org.drools.compiler.Person)1 InternalRuleUnitExecutor (org.drools.core.impl.InternalRuleUnitExecutor)1 RuleUnitFactory (org.drools.core.ruleunit.RuleUnitFactory)1 Test (org.junit.Test)1 KieBase (org.kie.api.KieBase)1 KieServices (org.kie.api.KieServices)1 KieFileSystem (org.kie.api.builder.KieFileSystem)1 KieContainer (org.kie.api.runtime.KieContainer)1 RuleUnit (org.kie.api.runtime.rule.RuleUnit)1 RuleUnitExecutor (org.kie.api.runtime.rule.RuleUnitExecutor)1