Uploaded image for project: 'JBRULES'
  1. JBRULES
  2. JBRULES-2735

ClassCastException for casting DefaultFactHandle to EventFactHandle when using Sliding Windows

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Hide

      Using the following rules file:

      package net.wlauer.DroolsEngine

      import net.wlauer.DroolsEngine.Event
      import java.util.ArrayList

      declare Event
      @role(event)
      @expires(30s)
      end

      rule TestWindow
      when
      $up : Event (type == "linkup", $inf : extra)
      $window : ArrayList () from collect (
      Event (extra == $inf) over window:length(2))
      $down : Event (type == "linkdown", this before $up) from $window
      then
      channels["up"].send($up);
      end

      Insert into a stateful session two Event objects with the same extra value, one for type "linkdown" followed by one for "linkup".

      Show
      Using the following rules file: package net.wlauer.DroolsEngine import net.wlauer.DroolsEngine.Event import java.util.ArrayList declare Event @role(event) @expires(30s) end rule TestWindow when $up : Event (type == "linkup", $inf : extra) $window : ArrayList () from collect ( Event (extra == $inf) over window:length(2)) $down : Event (type == "linkdown", this before $up) from $window then channels ["up"] .send($up); end Insert into a stateful session two Event objects with the same extra value, one for type "linkdown" followed by one for "linkup".

      When playing with a simple sliding window test using a single type of fact with @role(event), the following ClassCastException is generated:
      Exception in thread "main" java.lang.ClassCastException: org.drools.common.DefaultFactHandle cannot be cast to org.drools.common.EventFactHandle
      at org.drools.base.evaluators.BeforeEvaluatorDefinition$BeforeEvaluator.evaluateCachedLeft(BeforeEvaluatorDefinition.java:333)
      at org.drools.rule.VariableRestriction.isAllowedCachedLeft(VariableRestriction.java:110)
      at org.drools.rule.VariableConstraint.isAllowedCachedLeft(VariableConstraint.java:115)
      at org.drools.common.SingleBetaConstraints.isAllowedCachedLeft(SingleBetaConstraints.java:142)
      at org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:274)
      at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:138)
      at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:189)
      at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:64)
      at org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:662)
      at org.drools.reteoo.AccumulateNode.assertLeftTuple(AccumulateNode.java:181)
      at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:189)
      at org.drools.reteoo.SingleLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:138)
      at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:148)
      at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)
      at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:145)
      at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:450)
      at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:368)
      at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:190)
      at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:145)
      at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1174)
      at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1123)
      at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:917)
      at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:251)
      at net.wlauer.DroolsEngine.NonSpringRulesEngine.main(NonSpringRulesEngine.java:71)

            etirelli@redhat.com Edson Tirelli
            will_lauer Will Lauer (Inactive)
            Archiver:
            rhn-support-ceverson Clark Everson

              Created:
              Updated:
              Archived: