Search in sources :

Example 21 with Cheese

use of org.drools.compiler.Cheese in project drools by kiegroup.

the class MarshallingTest method testSerializeAdd3.

/*
     *  Works Fine if both the scenarios mentioned above are skipped.
     */
@Test
public void testSerializeAdd3() throws Exception {
    // Create a rulebase, a session, and test it
    Collection<KiePackage> kpkgs = loadKnowledgePackages("../test_Dynamic1_0.drl");
    kpkgs = SerializationHelper.serializeObject(kpkgs);
    InternalKnowledgeBase kBase = (InternalKnowledgeBase) getKnowledgeBase();
    kBase.addPackages(kpkgs);
    kBase = SerializationHelper.serializeObject(kBase);
    List results = new ArrayList();
    KieSession session = kBase.newKieSession();
    session.setGlobal("results", results);
    InternalFactHandle stilton1 = (InternalFactHandle) session.insert(new Cheese("stilton", 10));
    InternalFactHandle brie1 = (InternalFactHandle) session.insert(new Cheese("brie", 10));
    session.fireAllRules();
    assertEquals(1, results.size());
    assertEquals(stilton1.getObject(), results.get(0));
    // serialize session and rulebase
    kBase = (InternalKnowledgeBase) SerializationHelper.serializeObject(kBase);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    // dynamic add pkgs
    kpkgs = loadKnowledgePackages("../test_Dynamic3_0.drl");
    kBase.addPackages(SerializationHelper.serializeObject(kpkgs));
    kBase = (InternalKnowledgeBase) SerializationHelper.serializeObject(kBase);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    InternalFactHandle stilton2 = (InternalFactHandle) session.insert(new Cheese("stilton", 20));
    InternalFactHandle brie2 = (InternalFactHandle) session.insert(new Cheese("brie", 20));
    InternalFactHandle bob1 = (InternalFactHandle) session.insert(new Person("bob", 20));
    InternalFactHandle bob2 = (InternalFactHandle) session.insert(new Person("bob", 30));
    session.fireAllRules();
    assertEquals(4, results.size());
    assertEquals(stilton2.getObject(), results.get(1));
    assertEquals(bob2.getObject(), results.get(2));
    assertEquals(bob1.getObject(), results.get(3));
    // serialize session and rulebase
    kBase = (InternalKnowledgeBase) SerializationHelper.serializeObject(kBase);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    // dynamic add pkgs
    kpkgs = loadKnowledgePackages("../test_Dynamic1_2.drl");
    kBase.addPackages(SerializationHelper.serializeObject(kpkgs));
    kBase = (InternalKnowledgeBase) SerializationHelper.serializeObject(kBase);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    InternalFactHandle stilton3 = (InternalFactHandle) session.insert(new Cheese("stilton", 40));
    InternalFactHandle brie3 = (InternalFactHandle) session.insert(new Cheese("brie", 40));
    InternalFactHandle bob3 = (InternalFactHandle) session.insert(new Person("bob", 40));
    InternalFactHandle bob4 = (InternalFactHandle) session.insert(new Person("bob", 40));
    InternalFactHandle addr1 = (InternalFactHandle) session.insert(new Address("bangalore"));
    InternalFactHandle addr2 = (InternalFactHandle) session.insert(new Address("India"));
    session.fireAllRules();
    assertEquals(9, results.size());
    assertEquals(stilton3.getObject(), results.get(4));
    assertEquals(bob4.getObject(), results.get(5));
    assertEquals(bob3.getObject(), results.get(6));
    assertEquals(addr2.getObject(), results.get(7));
    assertEquals(addr1.getObject(), results.get(8));
    // serialize session and rulebase
    kBase = (InternalKnowledgeBase) SerializationHelper.serializeObject(kBase);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    InternalFactHandle stilton4 = (InternalFactHandle) session.insert(new Cheese("stilton", 50));
    InternalFactHandle brie4 = (InternalFactHandle) session.insert(new Cheese("brie", 50));
    InternalFactHandle bob5 = (InternalFactHandle) session.insert(new Person("bob", 50));
    InternalFactHandle bob6 = (InternalFactHandle) session.insert(new Person("bob", 50));
    InternalFactHandle addr3 = (InternalFactHandle) session.insert(new Address("Tripura"));
    InternalFactHandle addr4 = (InternalFactHandle) session.insert(new Address("Agartala"));
    session.fireAllRules();
    assertEquals(14, results.size());
    assertEquals(stilton4.getObject(), results.get(9));
    assertEquals(bob6.getObject(), results.get(10));
    assertEquals(bob5.getObject(), results.get(11));
    assertEquals(addr4.getObject(), results.get(12));
    assertEquals(addr3.getObject(), results.get(13));
    // serialize session and rulebase
    kBase = (InternalKnowledgeBase) SerializationHelper.serializeObject(kBase);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    session.dispose();
}
Also used : Address(org.drools.compiler.Address) KiePackage(org.kie.api.definition.KiePackage) ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) IteratorToList(org.drools.compiler.integrationtests.IteratorToList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.compiler.Cheese) InternalFactHandle(org.drools.core.common.InternalFactHandle) Person(org.drools.compiler.Person) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase) Test(org.junit.Test)

Example 22 with Cheese

use of org.drools.compiler.Cheese in project drools by kiegroup.

the class MarshallingTest method testActivationGroups.

@Test
public void testActivationGroups() throws Exception {
    String rule1 = "package org.drools.compiler.test;\n";
    rule1 += "import org.drools.compiler.Cheese\n";
    rule1 += "global java.util.List list\n";
    rule1 += "rule \"Rule 1\"\n";
    rule1 += "    activation-group \"activation-group-1\"\n";
    rule1 += "when\n";
    rule1 += "    $c : Cheese( ) \n";
    rule1 += "then\n";
    rule1 += "    list.add( \"rule1\" );\n";
    rule1 += "    drools.halt();\n";
    rule1 += "end";
    String rule2 = "package org.drools.compiler.test;\n";
    rule2 += "import org.drools.compiler.Cheese\n";
    rule2 += "global java.util.List list\n";
    rule2 += "rule \"Rule 2\"\n";
    rule2 += "    salience 10\n";
    rule2 += "    activation-group \"activation-group-1\"\n";
    rule2 += "when\n";
    rule2 += "    $c : Cheese( ) \n";
    rule2 += "then\n";
    rule2 += "    list.add( \"rule2\" );\n";
    rule2 += "    drools.halt();\n";
    rule2 += "end";
    String rule3 = "package org.drools.compiler.test;\n";
    rule3 += "import org.drools.compiler.Cheese\n";
    rule3 += "global java.util.List list\n";
    rule3 += "rule \"Rule 3\"\n";
    rule3 += "    activation-group \"activation-group-1\"\n";
    rule3 += "when\n";
    rule3 += "    $c : Cheese( ) \n";
    rule3 += "then\n";
    rule3 += "    list.add( \"rule3\" );\n";
    rule3 += "    drools.halt();\n";
    rule3 += "end";
    String rule4 = "package org.drools.compiler.test;\n";
    rule4 += "import org.drools.compiler.Cheese\n";
    rule4 += "global java.util.List list\n";
    rule4 += "rule \"Rule 4\"\n";
    rule4 += "    activation-group \"activation-group-2\"\n";
    rule4 += "when\n";
    rule4 += "    $c : Cheese( ) \n";
    rule4 += "then\n";
    rule4 += "    list.add( \"rule4\" );\n";
    rule4 += "    drools.halt();\n";
    rule4 += "end";
    KieBase kBase = loadKnowledgeBaseFromString(rule1, rule2, rule3, rule4);
    KieSession ksession = kBase.newKieSession();
    kBase = SerializationHelper.serializeObject(kBase);
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    final List list = new ArrayList();
    ksession.setGlobal("list", list);
    final Cheese brie = new Cheese("brie", 12);
    ksession.insert(brie);
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals(2, list.size());
    assertEquals("rule2", list.get(0));
    assertEquals("rule4", list.get(1));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) IteratorToList(org.drools.compiler.integrationtests.IteratorToList) Cheese(org.drools.compiler.Cheese) Test(org.junit.Test)

Example 23 with Cheese

use of org.drools.compiler.Cheese in project drools by kiegroup.

the class MarshallingTest method testExists.

@Test
public void testExists() throws Exception {
    String header = "package org.drools.compiler.test;\n";
    header += "import java.util.List;\n";
    header += "import org.drools.compiler.Person\n";
    header += "import org.drools.compiler.Cheese\n";
    header += "global java.util.List list;\n";
    String rule1 = "rule \"not rule test\"\n";
    rule1 += "salience 10\n";
    rule1 += "when\n";
    rule1 += "    Person()\n";
    rule1 += "    exists Cheese( price >= 5 )\n";
    rule1 += "then\n";
    rule1 += "    list.add( new Integer( 5 ) );\n";
    rule1 += "end\n";
    KieBase kBase = loadKnowledgeBaseFromString(header + rule1);
    Environment env = EnvironmentFactory.newEnvironment();
    env.set(EnvironmentName.OBJECT_MARSHALLING_STRATEGIES, new ObjectMarshallingStrategy[] { new IdentityPlaceholderResolverStrategy(ClassObjectMarshallingStrategyAcceptor.DEFAULT) });
    KieSession ksession = kBase.newKieSession(null, env);
    List list = new ArrayList();
    ksession.setGlobal("list", list);
    // add a person, no cheese
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    Person bobba = new Person("bobba fet", 50);
    ksession.insert(bobba);
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals(0, list.size());
    // add another person, no cheese
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    Person darth = new Person("darth vadar", 200);
    ksession.insert(darth);
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals(0, list.size());
    // add cheese
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    Cheese stilton = new Cheese("stilton", 5);
    ksession.insert(stilton);
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals(2, list.size());
    // remove cheese
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.retract(ksession.getFactHandle(stilton));
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals(2, list.size());
    // put 2 cheeses back in
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.insert(stilton);
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    Cheese brie = new Cheese("brie", 18);
    ksession.insert(brie);
    ksession.fireAllRules();
    assertEquals(4, list.size());
    // now remove a cheese, should be no change
    ksession.retract(ksession.getFactHandle(stilton));
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals(4, list.size());
    // now remove a person, should be no change
    ksession.retract(ksession.getFactHandle(bobba));
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals(4, list.size());
    // removal remaining cheese, no
    ksession.retract(ksession.getFactHandle(brie));
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals(4, list.size());
    // put one cheese back in, with one person should increase by one
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.insert(stilton);
    ksession.fireAllRules();
    assertEquals(5, list.size());
}
Also used : IdentityPlaceholderResolverStrategy(org.drools.core.marshalling.impl.IdentityPlaceholderResolverStrategy) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) Environment(org.kie.api.runtime.Environment) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) IteratorToList(org.drools.compiler.integrationtests.IteratorToList) Cheese(org.drools.compiler.Cheese) Person(org.drools.compiler.Person) Test(org.junit.Test)

Example 24 with Cheese

use of org.drools.compiler.Cheese in project drools by kiegroup.

the class MarshallingTest method testRuleFlowGroups.

@Test
public void testRuleFlowGroups() throws Exception {
    String rule1 = "package org.drools.compiler.test;\n";
    rule1 += "import org.drools.compiler.Cheese\n";
    rule1 += "global java.util.List list\n";
    rule1 += "rule \"Rule 1\"\n";
    rule1 += "    ruleflow-group \"ruleflow-group-1\"\n";
    rule1 += "when\n";
    rule1 += "    $c : Cheese( ) \n";
    rule1 += "then\n";
    rule1 += "    list.add( \"rule1\" );\n";
    rule1 += "    drools.halt();\n";
    rule1 += "end";
    String rule2 = "package org.drools.compiler.test;\n";
    rule2 += "import org.drools.compiler.Cheese\n";
    rule2 += "global java.util.List list\n";
    rule2 += "rule \"Rule 2\"\n";
    rule2 += "    salience 10\n";
    rule2 += "    ruleflow-group \"ruleflow-group-1\"\n";
    rule2 += "when\n";
    rule2 += "    $c : Cheese( ) \n";
    rule2 += "then\n";
    rule2 += "    list.add( \"rule2\" );\n";
    rule2 += "    drools.halt();\n";
    rule2 += "end";
    String rule3 = "package org.drools.compiler.test;\n";
    rule3 += "import org.drools.compiler.Cheese\n";
    rule3 += "global java.util.List list\n";
    rule3 += "rule \"Rule 3\"\n";
    rule3 += "    salience 10\n";
    rule3 += "    ruleflow-group \"ruleflow-group-2\"\n";
    rule3 += "    activation-group \"activation-group-2\"\n";
    rule3 += "when\n";
    rule3 += "    $c : Cheese( ) \n";
    rule3 += "then\n";
    rule3 += "    list.add( \"rule3\" );\n";
    rule3 += "    drools.halt();\n";
    rule3 += "end";
    String rule4 = "package org.drools.compiler.test;\n";
    rule4 += "import org.drools.compiler.Cheese\n";
    rule4 += "global java.util.List list\n";
    rule4 += "rule \"Rule 4\"\n";
    rule4 += "    ruleflow-group \"ruleflow-group-2\"\n";
    rule4 += "    activation-group \"activation-group-2\"\n";
    rule4 += "when\n";
    rule4 += "    $c : Cheese( ) \n";
    rule4 += "then\n";
    rule4 += "    list.add( \"rule4\" );\n";
    rule4 += "    drools.halt();\n";
    rule4 += "end";
    KieBase kbase = loadKnowledgeBaseFromString(rule1, rule2, rule3, rule4);
    KieSession ksession = getSerialisedStatefulKnowledgeSession(kbase.newKieSession(), true);
    kbase = SerializationHelper.serializeObject(kbase);
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    final List list = new ArrayList();
    ksession.setGlobal("list", list);
    final Cheese brie = new Cheese("brie", 12);
    ksession.insert(brie);
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ((InternalAgenda) ksession.getAgenda()).activateRuleFlowGroup("ruleflow-group-1");
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals("rule2", list.get(0));
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ((InternalAgenda) ksession.getAgenda()).activateRuleFlowGroup("ruleflow-group-2");
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals("rule3", list.get(1));
    ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals("rule1", list.get(2));
}
Also used : InternalAgenda(org.drools.core.common.InternalAgenda) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) IteratorToList(org.drools.compiler.integrationtests.IteratorToList) Cheese(org.drools.compiler.Cheese) Test(org.junit.Test)

Example 25 with Cheese

use of org.drools.compiler.Cheese in project drools by kiegroup.

the class EvalTest method testJaninoEval.

@Test
public void testJaninoEval() throws Exception {
    final KnowledgeBuilderConfiguration kbconf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
    kbconf.setProperty(JavaDialectConfiguration.JAVA_COMPILER_PROPERTY, "JANINO");
    KieBase kbase = loadKnowledgeBase(kbconf, "eval_rule_test.drl");
    kbase = SerializationHelper.serializeObject(kbase);
    KieSession ksession = kbase.newKieSession();
    ksession.setGlobal("five", 5);
    final List list = new ArrayList();
    ksession.setGlobal("list", list);
    final Cheese stilton = new Cheese("stilton", 5);
    ksession.insert(stilton);
    ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    assertEquals(stilton, ((List) ksession.getGlobal("list")).get(0));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KnowledgeBuilderConfiguration(org.kie.internal.builder.KnowledgeBuilderConfiguration) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Cheese(org.drools.compiler.Cheese) Test(org.junit.Test)

Aggregations

Cheese (org.drools.compiler.Cheese)147 Test (org.junit.Test)140 KieSession (org.kie.api.runtime.KieSession)121 ArrayList (java.util.ArrayList)102 KieBase (org.kie.api.KieBase)87 List (java.util.List)73 Person (org.drools.compiler.Person)52 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)36 FactHandle (org.kie.api.runtime.rule.FactHandle)32 KiePackage (org.kie.api.definition.KiePackage)22 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)20 InternalFactHandle (org.drools.core.common.InternalFactHandle)19 IteratorToList (org.drools.compiler.integrationtests.IteratorToList)14 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)13 Command (org.kie.api.command.Command)10 HashMap (java.util.HashMap)9 ExecutionResults (org.kie.api.runtime.ExecutionResults)8 KnowledgeBuilderImpl (org.drools.compiler.builder.impl.KnowledgeBuilderImpl)7 PackageDescr (org.drools.compiler.lang.descr.PackageDescr)7 DefaultFactHandle (org.drools.core.common.DefaultFactHandle)7