Hello everybody,
currently I'm facing a problem using sliding windows and accumulate feature
in Drools 5.5.0.Final.
I'm using two sliding windows (window:length) with different lengths on the
same event in the same rule.
It seems that the shorter window retracts events which are not fitting in it
any more,
and accumulate function over the bigger window tries to access the retracted
event with a NullPointerException.

declare Property
        @role(event)
        @timestamp(measuretime)
end

rule "Buggy rule"
when
    Number(doubleValue > 10) from accumulate(Property(propertyname ==
"PROPERTY1", val16: propertyvalue) over window:length(2)
        from entry-point "123" , max(val16))

    Number(doubleValue < 50) from accumulate(Property(propertyname ==
"PROPERTY1", val20: propertyvalue) over window:length(5)
        from entry-point "123" , max(val20))
        
        then
                System.out.println("Rule Match");
end


entryPoint.insert(new Property("PROPERTY1", 20));
session.fireAllRules();
entryPoint.insert(new Property("PROPERTY1", 20));
session.fireAllRules();
entryPoint.insert(new Property("PROPERTY1", 20));
session.fireAllRules();
entryPoint.insert(new Property("PROPERTY1", 2));
session.fireAllRules();
entryPoint.insert(new Property("PROPERTY1", 2));
session.fireAllRules();
entryPoint.insert(new Property("PROPERTY1", 2));

It happens on the last insert.

java.lang.NullPointerException
        at 
org.drools.reteoo.AccumulateNode.getFirstMatch(AccumulateNode.java:1050)
        at
org.drools.reteoo.AccumulateNode.modifyLeftTuple(AccumulateNode.java:345)
        at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:259)
        at
org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:676)
        at
org.drools.reteoo.ReteooWorkingMemory$EvaluateResultConstraints.execute(ReteooWorkingMemory.java:590)
        at
org.drools.common.PropagationContextImpl.evaluateActionQueue(PropagationContextImpl.java:350)
        at
org.drools.rule.SlidingLengthWindow.assertFact(SlidingLengthWindow.java:119)
        at org.drools.rule.BehaviorManager.assertFact(BehaviorManager.java:94)
        at org.drools.reteoo.WindowNode.assertObject(WindowNode.java:167)
        at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)
        at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)
        at 
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)
        at 
org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:311)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:127)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:55)

Is it a bug, or am I doing something completely wrong?





--
View this message in context: 
http://drools.46999.n3.nabble.com/NullPointerException-using-2-sliding-windows-and-accumulate-functions-tp4024732.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to