Search in sources :

Example 21 with Iterator

use of org.drools.core.util.Iterator in project drools by kiegroup.

the class ActivationIteratorTest method testLianPlusEvalnWithSharingWithMixedDormantAndActive.

@Test
public void testLianPlusEvalnWithSharingWithMixedDormantAndActive() {
    // Rule 0 single LiaNode
    // Rule 1 and 2 are shared
    // Rule 3 shares the LIANode with 1 and 2
    // Rule 4 Shares the eval with 3
    String str = "package org.kie.test \n" + "\n" + "rule rule2 salience ( Integer.parseInt('1'+$s)) when\n" + "    $s : String( this != 'xx' )\n" + "    eval( Integer.parseInt( $s ) <= 2 ) \n" + "then\n" + "    kcontext.getKieRuntime().halt();\n" + "end\n" + "rule rule0 salience ( Integer.parseInt('1'+$s) ) when\n" + "    $s : String( this != 'xx' )\n" + "then\n" + "end\n" + "rule rule1 salience ( Integer.parseInt('1'+$s)) when\n" + "    $s : String( this != 'xx' )\n" + "    eval( Integer.parseInt( $s ) <= 2 ) \n" + "then\n" + "end\n" + "rule rule3 salience ( Integer.parseInt('1'+$s)) when\n" + "    $s : String( this != 'xx' )\n" + "    eval( Integer.parseInt( $s ) > 2 ) \n" + "then\n" + "end\n" + "rule rule4 salience ( Integer.parseInt('1'+$s) ) when\n" + "    $s : String( this != 'xx' )\n" + "    eval( Integer.parseInt( $s ) > 2 ) \n" + "    eval( Integer.parseInt( $s ) > 3 ) \n" + "then\n" + "end\n" + "\n" + "rule rule6 when\n" + "     java.util.Map()\n" + "then\n" + "end\n" + "\n";
    KieSession ksession = new KieHelper().addContent(str, ResourceType.DRL).build().newKieSession();
    for (int i = 0; i < 5; i++) {
        ksession.insert(new String("" + i));
    }
    ksession.fireAllRules();
    Iterator it = ActivationIterator.iterator(ksession);
    List list = new ArrayList();
    for (AgendaItem act = (AgendaItem) it.next(); act != null; act = (AgendaItem) it.next()) {
        list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s") + ":" + act.isQueued());
    }
    assertContains(new String[] { "rule0:0:true", "rule0:1:true", "rule0:2:true", "rule0:3:false", "rule0:4:false", "rule1:0:true", "rule1:1:true", "rule1:2:true", "rule2:0:true", "rule2:1:true", "rule2:2:false", "rule3:3:false", "rule3:4:false", "rule3:4:false" }, list);
}
Also used : ActivationIterator(org.drools.core.common.ActivationIterator) Iterator(org.drools.core.util.Iterator) ArrayList(java.util.ArrayList) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) AgendaItem(org.drools.core.common.AgendaItem) Test(org.junit.Test)

Example 22 with Iterator

use of org.drools.core.util.Iterator in project drools by kiegroup.

the class ActivationIteratorTest method testSingleLian.

@Test
public void testSingleLian() {
    String str = "package org.kie.test \n" + "\n" + "rule rule1 @Propagation(EAGER) when\n" + "    $s : String( this != 'xx' )\n" + "then\n" + "end\n" + "rule rule6 @Propagation(EAGER) when\n" + "     java.util.Map()\n" + "then\n" + "end\n" + "\n";
    KieSession ksession = new KieHelper().addContent(str, ResourceType.DRL).build().newKieSession();
    for (int i = 0; i < 5; i++) {
        ksession.insert(new String("" + i));
    }
    evaluateEagerList(ksession);
    Iterator it = ActivationIterator.iterator(ksession);
    List list = new ArrayList();
    for (AgendaItem act = (AgendaItem) it.next(); act != null; act = (AgendaItem) it.next()) {
        list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s") + ":" + act.isQueued());
    }
    assertContains(new String[] { "rule1:0:true", "rule1:1:true", "rule1:2:true", "rule1:3:true", "rule1:4:true" }, list);
    ksession.fireAllRules();
    it = ActivationIterator.iterator(ksession);
    list = new ArrayList();
    for (AgendaItem act = (AgendaItem) it.next(); act != null; act = (AgendaItem) it.next()) {
        list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s") + ":" + act.isQueued());
    }
    assertContains(new String[] { "rule1:0:false", "rule1:1:false", "rule1:2:false", "rule1:3:false", "rule1:4:false" }, list);
}
Also used : ActivationIterator(org.drools.core.common.ActivationIterator) Iterator(org.drools.core.util.Iterator) ArrayList(java.util.ArrayList) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) AgendaItem(org.drools.core.common.AgendaItem) Test(org.junit.Test)

Example 23 with Iterator

use of org.drools.core.util.Iterator in project drools by kiegroup.

the class ActivationIteratorTest method testSingleJoinNodePlusEvalnWithSharing.

@Test
public void testSingleJoinNodePlusEvalnWithSharing() {
    String str = "package org.kie.test \n" + "\n" + "rule rule1  @Propagation(EAGER)  when\n" + "    $s1 : String( )\n" + "    $s2 : String( )\n" + "    eval( 1 == 1 ) \n" + "then\n" + "end\n" + "rule rule2  @Propagation(EAGER)  when\n" + "    $s1 : String( )\n" + "then\n" + "end\n" + "rule rule3  @Propagation(EAGER)  when\n" + "    $s1 : String( )\n" + "    $s2 : String( )\n" + "    $s3 : String( )\n" + "    eval( 1 == 1 ) \n" + "then\n" + "end\n" + "\n";
    KieSession ksession = new KieHelper().addContent(str, ResourceType.DRL).build().newKieSession();
    for (int i = 0; i < 2; i++) {
        ksession.insert(new String("" + i));
    }
    evaluateEagerList(ksession);
    Iterator it = ActivationIterator.iterator(ksession);
    List list = new ArrayList();
    for (AgendaItem act = (AgendaItem) it.next(); act != null; act = (AgendaItem) it.next()) {
        if (act.getRule().getName().equals("rule3")) {
            list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.getDeclarationValue("$s2") + ":" + act.getDeclarationValue("$s3") + ":" + act.isQueued());
        } else if (act.getRule().getName().equals("rule1")) {
            list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.getDeclarationValue("$s2") + ":" + act.isQueued());
        } else if (act.getRule().getName().equals("rule2")) {
            list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.isQueued());
        }
    }
    assertContains(new String[] { "rule1:0:0:true", "rule1:0:1:true", "rule1:1:0:true", "rule1:1:1:true", "rule2:1:true", "rule2:0:true", "rule3:0:0:0:true", "rule3:0:0:1:true", "rule3:1:0:0:true", "rule3:1:0:1:true", "rule3:0:1:0:true", "rule3:0:1:1:true", "rule3:1:1:0:true", "rule3:1:1:1:true" }, list);
    ksession.fireAllRules();
    it = ActivationIterator.iterator(ksession);
    list = new ArrayList();
    for (AgendaItem act = (AgendaItem) it.next(); act != null; act = (AgendaItem) it.next()) {
        if (act.getRule().getName().equals("rule3")) {
            list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.getDeclarationValue("$s2") + ":" + act.getDeclarationValue("$s3") + ":" + act.isQueued());
        } else if (act.getRule().getName().equals("rule1")) {
            list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.getDeclarationValue("$s2") + ":" + act.isQueued());
        } else if (act.getRule().getName().equals("rule2")) {
            list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.isQueued());
        }
    }
    assertContains(new String[] { "rule1:0:0:false", "rule1:0:1:false", "rule1:1:0:false", "rule1:1:1:false", "rule2:1:false", "rule2:0:false", "rule3:0:0:0:false", "rule3:0:0:1:false", "rule3:1:0:0:false", "rule3:1:0:1:false", "rule3:0:1:0:false", "rule3:0:1:1:false", "rule3:1:1:0:false", "rule3:1:1:1:false" }, list);
}
Also used : ActivationIterator(org.drools.core.common.ActivationIterator) Iterator(org.drools.core.util.Iterator) ArrayList(java.util.ArrayList) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) AgendaItem(org.drools.core.common.AgendaItem) Test(org.junit.Test)

Example 24 with Iterator

use of org.drools.core.util.Iterator in project drools by kiegroup.

the class ActivationIteratorTest method testSingleJoinNodePlusEvaln.

@Test
public void testSingleJoinNodePlusEvaln() {
    String str = "package org.kie.test \n" + "\n" + "rule rule1 @Propagation(EAGER) when\n" + "    $s1 : String( )\n" + "    $s2 : String( )\n" + "    eval( 1 == 1 ) \n" + "then\n" + "end\n" + "\n";
    KieSession ksession = new KieHelper().addContent(str, ResourceType.DRL).build().newKieSession();
    for (int i = 0; i < 2; i++) {
        ksession.insert(new String("" + i));
    }
    evaluateEagerList(ksession);
    Iterator it = ActivationIterator.iterator(ksession);
    List list = new ArrayList();
    for (AgendaItem act = (AgendaItem) it.next(); act != null; act = (AgendaItem) it.next()) {
        list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.getDeclarationValue("$s2") + ":" + act.isQueued());
    }
    assertContains(new String[] { "rule1:0:1:true", "rule1:1:0:true", "rule1:1:1:true", "rule1:0:0:true" }, list);
    ksession.fireAllRules();
    it = ActivationIterator.iterator(ksession);
    list = new ArrayList();
    for (AgendaItem act = (AgendaItem) it.next(); act != null; act = (AgendaItem) it.next()) {
        list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.getDeclarationValue("$s2") + ":" + act.isQueued());
    }
    assertContains(new String[] { "rule1:0:1:false", "rule1:1:0:false", "rule1:1:1:false", "rule1:0:0:false" }, list);
}
Also used : ActivationIterator(org.drools.core.common.ActivationIterator) Iterator(org.drools.core.util.Iterator) ArrayList(java.util.ArrayList) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) AgendaItem(org.drools.core.common.AgendaItem) Test(org.junit.Test)

Example 25 with Iterator

use of org.drools.core.util.Iterator in project drools by kiegroup.

the class ActivationIteratorTest method testNotSharingWithMixedDormantAndActive.

@Test
public void testNotSharingWithMixedDormantAndActive() {
    String str = "package org.kie.test \n" + "\n" + "rule rule1  @Propagation(EAGER)  salience 10 when\n" + "    not String( this == '1' )\n" + "then\n" + "end\n" + "rule rule2   @Propagation(EAGER)  salience ( Integer.parseInt( $s1+'1' ) ) when\n" + "    not String( this == '1' )\n" + "    $s1 : String( )\n" + "    eval( 1 == 1 ) \n" + "then\n" + "end\n" + "rule rule3  @Propagation(EAGER)  salience ( Integer.parseInt( $s1+'2' ) ) when\n" + "    $s1 : String( )\n" + "    not String( this == '1' )\n" + "    eval( 1 == 1 ) \n" + "    eval( 1 == 1 ) \n" + "then\n" + "    kcontext.getKieRuntime().halt();\n" + "end\n" + "\n";
    KieSession ksession = new KieHelper().addContent(str, ResourceType.DRL).build().newKieSession();
    ksession.insert("0");
    ksession.insert("2");
    ksession.fireAllRules();
    Iterator it = ActivationIterator.iterator(ksession);
    List list = new ArrayList();
    for (AgendaItem act = (AgendaItem) it.next(); act != null; act = (AgendaItem) it.next()) {
        if (act.getRule().getName().equals("rule3")) {
            list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.isQueued());
        } else if (act.getRule().getName().equals("rule1")) {
            list.add(act.getRule().getName() + ":" + act.isQueued());
        } else if (act.getRule().getName().equals("rule2")) {
            list.add(act.getRule().getName() + ":" + act.getDeclarationValue("$s1") + ":" + act.isQueued());
        }
    }
    assertContains(new String[] { "rule1:true", "rule2:0:true", "rule2:2:true", "rule3:0:true", "rule3:2:false" }, list);
}
Also used : ActivationIterator(org.drools.core.common.ActivationIterator) Iterator(org.drools.core.util.Iterator) ArrayList(java.util.ArrayList) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) AgendaItem(org.drools.core.common.AgendaItem) Test(org.junit.Test)

Aggregations

Iterator (org.drools.core.util.Iterator)33 Test (org.junit.Test)24 KieSession (org.kie.api.runtime.KieSession)23 ArrayList (java.util.ArrayList)19 List (java.util.List)13 AgendaItem (org.drools.core.common.AgendaItem)13 ObjectHashMap (org.drools.core.util.ObjectHashMap)13 KieHelper (org.kie.internal.utils.KieHelper)13 ActivationIterator (org.drools.core.common.ActivationIterator)12 EqualityKey (org.drools.core.common.EqualityKey)10 NamedEntryPoint (org.drools.core.common.NamedEntryPoint)10 TruthMaintenanceSystem (org.drools.core.common.TruthMaintenanceSystem)10 FactType (org.kie.api.definition.type.FactType)10 Tuple (org.drools.core.spi.Tuple)4 FastIterator (org.drools.core.util.FastIterator)4 InternalFactHandle (org.drools.core.common.InternalFactHandle)3 ObjectEntry (org.drools.core.util.ObjectHashMap.ObjectEntry)3 FactHandle (org.kie.api.runtime.rule.FactHandle)3 AccumulateNode (org.drools.core.reteoo.AccumulateNode)2 AccumulateContext (org.drools.core.reteoo.AccumulateNode.AccumulateContext)2