Hi, I am trying to compare date in condition of rule. I set the date format in system parameter. System.setProperty("drools.dateformat", "dd/MM/yyyy");
When I get the date from the fact object directly, it works well. when $record: Record( startDate < "01/01/3000" ) In my application, I need to get a map from fact objet, then use a key to get the target object, then get "dateValue" from the target object. This condition doesn't work. "dateValue" is a java.util.Date object. when $record: Record( fieldMap["STARTDATE"].dateValue < "01/01/3000" ) Does anyone know how to make it works? This is the error message. org.drools.RuntimeDroolsException: Exception executing predicate fieldMap["STARTDATE"].dateValue < "01/01/3000" at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:279) at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:141) at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59) 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 dti.drools.test.Test.oneRecordThousandTime(Test.java:81) at dti.drools.test.Test.main(Test.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110) Caused by: [Error: uncomparable values <> and <<01/01/3000>>] [Near : {... Unknown ....}] ^ [Line: 1, Column: 0] at org.mvel2.math.MathProcessor.doOperationNonNumeric(MathProcessor.java:230) at org.mvel2.math.MathProcessor._doOperations(MathProcessor.java:175) at org.mvel2.math.MathProcessor.doOperations(MathProcessor.java:79) at org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:111) at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85) at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:104) at org.mvel2.MVEL.executeExpression(MVEL.java:1001) at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:91) at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:272) ... 15 more Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date at java.util.Date.compareTo(Date.java:112) at org.mvel2.math.MathProcessor.doOperationNonNumeric(MathProcessor.java:227) ... 23 more -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/compare-date-in-map-in-rule-condition-tp2713827p2713827.html Sent from the Drools - User mailing list archive at Nabble.com. _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users