I am trying to get a project that runs in Drools 3 working on Drools 4. Several of the rules in our DRL file are failing for the same reason, which is described below. I have searched for documentation where someone encountered this error, but have found none, which is why I am writing the list.Here is a sample rule that fails:
rule 'X'
salience 750
when
s : Sensor( source == "Not in File" , TCN matches "CRM[0-9]+MXFS[0-9]+" )
then
System.out.println("Rule executed: X " );
s.setSource("X");
System.out.println( "in rule location 2");
update(s);
System.out.println( "in rule location 3");
endThe rule fails when the "update(s);" statement is executed, with the error that a String cannot be converted to a long (stack trace is below). The Sensor class has several variables. The last getter method called before the failure returns a long. The source variable (which is set in the RHS of the rule) is a String , and the for source is the 2nd to last getter called.
Does anyone have an idea why this update statement would fail - why it would be trying to convert a String to a long?
Thank you,
David WarrenStack trace:
org.drools.RuntimeDroolsException: Conversion to long not supported from java.lang.String
at org.drools.base.extractors.BaseObjectClassFieldExtractor.getLongValue(BaseObjectClassFieldExtractor.java:106)
at org.drools.base.ClassFieldExtractor.getLongValue(ClassFieldExtractor.java:203)
at org.drools.rule.VariableRestriction$LongVariableContextEntry.updateFromTuple(VariableRestriction.java:284)
at org.drools.common.SingleBetaConstraints.updateFromTuple(SingleBetaConstraints.java:100)
at org.drools.reteoo.JoinNode.assertTuple(JoinNode.java:102)
at org.drools.reteoo.CompositeTupleSinkAdapter.createAndPropagateAssertTuple(CompositeTupleSinkAdapter.java:73)
at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:116)
at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:318)
at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:140)
at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:299)
at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153)
at org.drools.reteoo.Rete.assertObject(Rete.java:175)
at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)
at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881)
at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:67)
at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:61)
at com.bah.aims.rules.Rule_X_0.consequence(Rule_X_0.java:32)
at com.bah.aims.rules.Rule_X_0ConsequenceInvoker.evaluate(Rule_X_0ConsequenceInvoker.java:22)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:550)
at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:514)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:471)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:433)
at com.bah.aims.rules.compiler.SensorPairRulesTest.testNotInFileIqcrm(SensorPairRulesTest.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
...
_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev