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

Details

    • 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".

    Description

      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)

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Archived:

                PagerDuty