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

Disjunction over a set not working

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

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • 6.0.0.Alpha1
    • 5.1.1.FINAL
    • None
    • None

      Hello there and a happy new year to everyone reading

      Why am I here again? Yep, got a problem. Don't know why it doesn't work. I'm using the latest snapshot version.
      So here it goes.

      A simple rule with conjunction and disjunction but over a set of events.

      when
      $ldes : Set(size == 2) from collect(LoopDetectorEvent() over window:length(2))
      (or LoopDetectorEvent($t1 : transportation == "LKW", $id1 : eventID) from $ldes
      LoopDetectorEvent($t2 : transportation == "PKW", $id2 : eventID) from $ldes)
      LoopDetectorEvent($t3 : transportation == "BUS", $id3 : eventID) from $ldes

      So, what the rule says: fire when there's a BUS event plus either a LKW or PKW event in the set.

      But, instead I get a big exception. It's posted at the end.

      Interestingly, it works if I don't use the Set, like this...

      when
      (or $e1 : LoopDetectorEvent($t1 : transportation == "PKW", $id1 : eventID) over window:length(1)
      $e2 : LoopDetectorEvent($t2 : transportation == "LKW", $id2 : eventID) over window:length(1))
      LoopDetectorEvent($t3 : transportation == "BUS", $id3 : eventID) over window:length(1)

      but that rule does not have the same meaning. So it's useless for me.
      Besides, it DOES work with the set if I just cut the third event out (the BUS event).

      What is wrong here?

      Thanks in advance.
      Kind regards!
      Oliver

      Exception in thread "Thread-2" java.lang.ClassCastException: org.drools.reteoo.InitialFactImpl cannot be cast to trafficsys.domain.events.LoopDetectorEvent
      at org.drools.base.trafficsys.domain.events.LoopDetectorEvent446196$getTransportation.getValue(Unknown Source)
      at org.drools.base.ClassFieldReader.getValue(ClassFieldReader.java:91)
      at org.drools.base.evaluators.EqualityEvaluatorsDefinition$StringEqualEvaluator.evaluate(EqualityEvaluatorsDefinition.java:1961)
      at org.drools.rule.LiteralRestriction.isAllowed(LiteralRestriction.java:92)
      at org.drools.rule.LiteralConstraint.isAllowed(LiteralConstraint.java:109)
      at org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:264)
      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.FromNode.checkConstraintsAndPropagate(FromNode.java:279)
      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.assertObject(AccumulateNode.java:270)
      at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:450)
      at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:378)
      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:1187)
      at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1089)
      at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:893)
      at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:238)
      at trafficsys.SessionInterface.insertAndFire(SessionInterface.java:133)

            etirelli@redhat.com Edson Tirelli
            oliverroess Oliver Roess (Inactive)
            Archiver:
            rhn-support-ceverson Clark Everson

              Created:
              Updated:
              Archived: