Search in sources :

Example 21 with KnowledgeBuilderConfiguration

use of org.kie.internal.builder.KnowledgeBuilderConfiguration in project drools by kiegroup.

the class Misc2Test method testBindingComplexExpression.

@Test
public void testBindingComplexExpression() {
    // DROOLS-43
    String drl = "package org.drools.test;\n" + "\n" + "global java.util.List list;\n" + "\n" + "declare Foo \n" + "  a : int \n" + "  b : int \n" + "end \n" + "" + "rule Init when then insert( new Foo( 3, 4 ) ); end \n" + "" + "rule \"Expr\"\n" + "when\n" + "  $c := Integer() from new Integer( 4 ) \n" + "  Foo(  $a : a + b == 7 && a == 3 && $b : b > 0, $c := b - a == 1 ) \n" + "then\n" + "  list.add( $a );\n" + "  list.add( $b );\n" + "  list.add( $c );\n" + "end\n" + "\n";
    KnowledgeBuilderConfiguration kbConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
    kbConf.setOption(LanguageLevelOption.DRL6);
    KieBase kbase = loadKnowledgeBaseFromString(kbConf, drl);
    KieSession ksession = kbase.newKieSession();
    List list = new ArrayList();
    ksession.setGlobal("list", list);
    ksession.fireAllRules();
    assertTrue(!list.isEmpty());
    assertEquals(3, list.size());
    assertEquals(3, list.get(0));
    assertEquals(4, list.get(1));
    assertEquals(4, list.get(2));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KnowledgeBuilderConfiguration(org.kie.internal.builder.KnowledgeBuilderConfiguration) KieSession(org.kie.api.runtime.KieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) Arrays.asList(java.util.Arrays.asList) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Example 22 with KnowledgeBuilderConfiguration

use of org.kie.internal.builder.KnowledgeBuilderConfiguration in project drools by kiegroup.

the class Misc2Test method testInitialFactLeaking.

@Test
public void testInitialFactLeaking() {
    // DROOLS-239
    String drl = "global java.util.List list;\n" + "rule R when\n" + "    $o : Object()\n" + "then\n" + "    list.add(1);\n" + "end\n";
    KnowledgeBuilderConfiguration kbConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
    KieBase kbase = loadKnowledgeBaseFromString(kbConf, drl);
    KieSession ksession = kbase.newKieSession();
    List list = new ArrayList();
    ksession.setGlobal("list", list);
    ksession.fireAllRules();
    assertEquals(0, list.size());
    ksession.insert("1");
    ksession.fireAllRules();
    assertEquals(1, list.size());
    ksession.insert(1);
    ksession.fireAllRules();
    assertEquals(2, list.size());
    ksession.dispose();
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KnowledgeBuilderConfiguration(org.kie.internal.builder.KnowledgeBuilderConfiguration) KieSession(org.kie.api.runtime.KieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) Arrays.asList(java.util.Arrays.asList) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Example 23 with KnowledgeBuilderConfiguration

use of org.kie.internal.builder.KnowledgeBuilderConfiguration in project drools by kiegroup.

the class ChangeSetTest method testCustomClassLoader.

@Test(timeout = 10000)
public void testCustomClassLoader() throws Exception {
    // JBRULES-3630
    String absolutePath = new File("file").getAbsolutePath();
    URL url = ChangeSetTest.class.getResource(ChangeSetTest.class.getSimpleName() + ".class");
    File file = new File(url.toURI());
    File jar = null;
    while (true) {
        file = file.getParentFile();
        jar = new File(file, "/src/test/resources/org/drools/compiler/compiler/xml/changeset/changeset.jar");
        if (jar.exists()) {
            break;
        }
    }
    ClassLoader classLoader = URLClassLoader.newInstance(new URL[] { jar.toURI().toURL() }, getClass().getClassLoader());
    Resource changeSet = ResourceFactory.newClassPathResource("changeset1.xml", classLoader);
    KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, classLoader);
    KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf);
    builder.add(changeSet, ResourceType.CHANGE_SET);
}
Also used : KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) UrlResource(org.drools.core.io.impl.UrlResource) Resource(org.kie.api.io.Resource) URLClassLoader(java.net.URLClassLoader) KnowledgeBuilderConfiguration(org.kie.internal.builder.KnowledgeBuilderConfiguration) File(java.io.File) URL(java.net.URL) Test(org.junit.Test)

Example 24 with KnowledgeBuilderConfiguration

use of org.kie.internal.builder.KnowledgeBuilderConfiguration in project drools by kiegroup.

the class MannersBenchmark method main.

public static void main(final String[] args) {
    KnowledgeBuilderConfiguration kbuilderConfig = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbuilderConfig);
    kbuilder.add(ResourceFactory.newClassPathResource("manners.drl", MannersBenchmark.class), ResourceType.DRL);
    Collection<KiePackage> pkgs = kbuilder.getKnowledgePackages();
    // add the package to a rulebase
    final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages(pkgs);
    long totalTime = 0;
    for (int i = 0; i < 5; i++) {
        KieSession ksession = kbase.newKieSession();
        String filename;
        if (args.length != 0) {
            String arg = args[0];
            filename = arg;
        } else {
            filename = "manners5.dat";
        }
        InputStream is = MannersBenchmark.class.getResourceAsStream("data/" + filename);
        List<Object> list = getInputObjects(is);
        for (Iterator<Object> it = list.iterator(); it.hasNext(); ) {
            Object object = it.next();
            ksession.insert(object);
        }
        ksession.insert(new Count(1));
        long start = System.currentTimeMillis();
        ksession.fireAllRules();
        long time = System.currentTimeMillis() - start;
        System.err.println(time);
        totalTime += time;
        ksession.dispose();
    }
    System.out.println("average : " + totalTime / 5);
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) KiePackage(org.kie.api.definition.KiePackage) KnowledgeBuilderConfiguration(org.kie.internal.builder.KnowledgeBuilderConfiguration) KieSession(org.kie.api.runtime.KieSession) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase)

Example 25 with KnowledgeBuilderConfiguration

use of org.kie.internal.builder.KnowledgeBuilderConfiguration in project drools by kiegroup.

the class KBuilderSetPropertyCommand method execute.

public Void execute(Context context) {
    KnowledgeBuilderConfiguration kconf = (KnowledgeBuilderConfiguration) context.get(kbuilderConfId);
    kconf.setProperty(this.name, this.value);
    return null;
}
Also used : KnowledgeBuilderConfiguration(org.kie.internal.builder.KnowledgeBuilderConfiguration)

Aggregations

KnowledgeBuilderConfiguration (org.kie.internal.builder.KnowledgeBuilderConfiguration)25 Test (org.junit.Test)21 KieSession (org.kie.api.runtime.KieSession)16 KieBase (org.kie.api.KieBase)15 ArrayList (java.util.ArrayList)10 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)7 List (java.util.List)6 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)6 Arrays.asList (java.util.Arrays.asList)4 URLClassLoader (java.net.URLClassLoader)3 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)3 KiePackage (org.kie.api.definition.KiePackage)3 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 JarEntry (java.util.jar.JarEntry)2 JarInputStream (java.util.jar.JarInputStream)2 MapBackedClassLoader (org.drools.core.rule.MapBackedClassLoader)2 FactType (org.kie.api.definition.type.FactType)2 Resource (org.kie.api.io.Resource)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 File (java.io.File)1