Drools 3, rev. 3505 (or 3502)

Modified helloworld example to experiment a bit with rules (DRL not meaningful, looping, ...), nontheless got:

java.lang.ArrayIndexOutOfBoundsException: 2
        at org.drools.reteoo.FactHandleList.get(FactHandleList.java:107)
        at org.drools.reteoo.TupleKey.get(TupleKey.java:90)
        at org.drools.reteoo.ReteTuple.get(ReteTuple.java:153)
at org.drools.reteoo.RightInputAdapterNode.assertTuple(RightInputAdapterNode.java:70)
        at 
org.drools.reteoo.TupleSource.propagateAssertTuple(TupleSource.java:156)
        at org.drools.reteoo.NotNode.assertTuple(NotNode.java:117)
        at 
org.drools.reteoo.TupleSource.propagateAssertTuple(TupleSource.java:133)
        at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:159)
at org.drools.reteoo.ObjectSource.propagateAssertObject(ObjectSource.java:106)
        at 
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:130)
        at org.drools.reteoo.Rete.assertObject(Rete.java:123)
        at org.drools.reteoo.RuleBaseImpl.assertObject(RuleBaseImpl.java:245)
at org.drools.reteoo.WorkingMemoryImpl.assertObject(WorkingMemoryImpl.java:487) at org.drools.reteoo.WorkingMemoryImpl.assertObject(WorkingMemoryImpl.java:380) at org.drools.integrationtests.helloworld.HelloWorldTest.testSomething(HelloWorldTest.java:34)

HelloWorld.drl:
---------------
package HelloWorld
import java.lang.String;
import org.drools.integrationtests.helloworld.A;

rule "rule"
        when
                a : String()
                b : String()
                exists A(a == a, b == b)
        then
                assert(new A(a, b));
end

HelloWorldTest.java:
--------------------
...
    public void testSomething() {
        try {

            //load up the rulebase
            RuleBase ruleBase = readRule();
            WorkingMemory workingMemory = ruleBase.newWorkingMemory();
            workingMemory.assertObject(new A("a", "b"));
            workingMemory.assertObject("a");
            workingMemory.fireAllRules();
            workingMemory.assertObject("b");
            workingMemory.fireAllRules();
            //assertTrue( message.isFired() );
        } catch (Throwable t) {
            t.printStackTrace();
            fail(t.getMessage());
        }
    }
...

A.java:
-------
package org.drools.integrationtests.helloworld;
public class A{
    String a;
    String b;
    public A(String a, String b) {this.a = a;this.b = b;}
    public String getA() {return a;}
    public void setA(String a) {this.a = a;}
    public String getB() {return b;}
    public void setB(String b) {this.b = b;}
}

fyi, Juergen

Reply via email to