Hi all, <br> I'm using drools 5.3.0.Final.And I think I found two possibly bugs:<br><br>1): drl compilation failed when encountering multiple continuous '!' (a.k.a 'not' operator)s.for example:<br><br>
rule "out"<br> when<br> Msg(!!!false)<br> then<br>end<br><br>the code above won't compile, but 'Msg(!false)' compiles correctly. I remember there's no such problems when using drools 5.0, this caused some incompatibility issues in our system...<br>
<br>2): Weird exception thrown: java.lang.ClassCastException: org.drools.reteoo.InitialFactImpl cannot be cast to XXX..., for example:<br><br>rule "test"<br> when<br> l1:Msg(str == 'test') and<br>
l2:Msg(!bool) or <br> eval(!false)<br> then<br>end<br><br>this code above throws exception at runtime: <br><br>org.drools.RuntimeDroolsException: Unexpected exception executing action org.drools.reteoo.ReteooWorkingMemory$WorkingMemoryReteAssertAction@743fbbfc<br>
at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:977)<br> at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:315)<br> at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:291)<br>
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:886)<br> at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:845)<br> at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:255)<br>
at com.sample.DroolsTest.main(DroolsTest.java:56)<br>Caused by: org.drools.RuntimeDroolsException: com.sample.Rule_testEval0Invoker@3e1b05a2 : java.lang.ClassCastException: org.drools.reteoo.InitialFactImpl cannot be cast to com.sample.Msg<br>
at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:119)<br> at org.drools.reteoo.EvalConditionNode.assertLeftTuple(EvalConditionNode.java:178)<br> at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:197)<br>
at org.drools.reteoo.SingleLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:146)<br> at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:158)<br> at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)<br>
at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:215)<br> at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:244)<br> at org.drools.reteoo.Rete.assertObject(Rete.java:107)<br>
at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:284)<br> at org.drools.reteoo.ReteooWorkingMemory$WorkingMemoryReteAssertAction.execute(ReteooWorkingMemory.java:404)<br> at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:975)<br>
... 6 more<br>Caused by: java.lang.ClassCastException: org.drools.reteoo.InitialFactImpl cannot be cast to com.sample.Msg<br> at com.sample.Rule_testEval0Invoker.evaluate(Unknown Source)<br> at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:114)<br>
... 17 more<br><br>Is there any workaround for those problems? especially the 2nd one...<br clear="all"><br>Any help would be appreciated, <br>Thanks!<br><br>-- <br>Regards.<br>Miles. Wen<br><br>