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