[
http://jira.jboss.com/jira/browse/JBRULES-1438?page=comments#action_12397128 ]
greywind commented on JBRULES-1438:
-----------------------------------
When I try to access the property in the consequence itself I do get the following
exception during fireAllRules:
template Settlement
String InstrumentType
String InstrumentName
end
rule "TestEntity"
dialect "mvel"
when
$s : Settlement(InstrumentType == "BOND")
then
System.out.println("Found: " + $s.InstrumentName);
end
org.mvel.CompileException: unable to resolve property: InstrumentName
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:288)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:109)
at
org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableDeepPropertyNode.java:29)
at org.mvel.ast.PropertyASTNode.initializePropertyNode(PropertyASTNode.java:77)
at org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:26)
at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21)
at org.mvel.ExecutableAccessor.getValue(ExecutableAccessor.java:45)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:521)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:260)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:109)
at
org.mvel.ast.LiteralDeepPropertyNode.getReducedValueAccelerated(LiteralDeepPropertyNode.java:28)
at org.mvel.MVELRuntime.execute(MVELRuntime.java:88)
at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)
at org.mvel.MVEL.executeExpression(MVEL.java:235)
at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:47)
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 org.drools.entity.EntityTest.main(EntityTest.java:70)
Caused by: org.mvel.PropertyAccessException: unable to resolve property: InstrumentName
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:382)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:257)
... 19 more
Exception in thread "main" org.drools.spi.ConsequenceException:
org.mvel.CompileException: unable to resolve property: InstrumentName
at
org.drools.base.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:14)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:554)
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 org.drools.entity.EntityTest.main(EntityTest.java:70)
Caused by: org.mvel.CompileException: unable to resolve property: InstrumentName
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:288)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:109)
at
org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableDeepPropertyNode.java:29)
at org.mvel.ast.PropertyASTNode.initializePropertyNode(PropertyASTNode.java:77)
at org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:26)
at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21)
at org.mvel.ExecutableAccessor.getValue(ExecutableAccessor.java:45)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:521)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:260)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:109)
at
org.mvel.ast.LiteralDeepPropertyNode.getReducedValueAccelerated(LiteralDeepPropertyNode.java:28)
at org.mvel.MVELRuntime.execute(MVELRuntime.java:88)
at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)
at org.mvel.MVEL.executeExpression(MVEL.java:235)
at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:47)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:550)
... 4 more
Caused by: org.mvel.PropertyAccessException: unable to resolve property: InstrumentName
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:382)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:257)
... 19 more
As you can see the Property exists and from the original attachment you can also see that
the property can be accessed in the rule itself....
FactTemplate Property Access leads to RuleBuilder Exception
-----------------------------------------------------------
Key: JBRULES-1438
URL:
http://jira.jboss.com/jira/browse/JBRULES-1438
Project: JBoss Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Drl Parser/Builder
Affects Versions: 4.0.4
Reporter: greywind
Attachments: EntityTest.drl
The only thing I do is to add the attached drl to a Package and do get the following
exception:
Exception in thread "main" org.mvel.CompileException: problem encountered at
node [19] 5{1012,1042}: unable to resolve property: could not access property
at org.mvel.TemplateInterpreter.execute(TemplateInterpreter.java:554)
at org.mvel.TemplateInterpreter.parse(TemplateInterpreter.java:338)
at
org.drools.rule.builder.dialect.java.AbstractJavaBuilder.generatTemplates(AbstractJavaBuilder.java:120)
at
org.drools.rule.builder.dialect.java.JavaConsequenceBuilder.build(JavaConsequenceBuilder.java:118)
at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:67)
at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:446)
at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:304)
at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:167)
at org.drools.entity.EntityTest.main(EntityTest.java:48)
Caused by: org.mvel.PropertyAccessException: unable to resolve property: could not access
property
at org.mvel.PropertyAccessor.get(PropertyAccessor.java:170)
at org.mvel.PropertyAccessor.get(PropertyAccessor.java:128)
at org.mvel.ASTNode.getReducedValue(ASTNode.java:247)
at org.mvel.ast.PropertyASTNode.getReducedValue(PropertyASTNode.java:36)
at
org.mvel.MVELInterpretedRuntime.parseAndExecuteInterpreted(MVELInterpretedRuntime.java:115)
at org.mvel.MVELInterpretedRuntime.parse(MVELInterpretedRuntime.java:63)
at org.mvel.TemplateInterpreter.execute(TemplateInterpreter.java:409)
... 8 more
Caused by: java.lang.reflect.InvocationTargetException
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:585)
at org.mvel.PropertyAccessor.getBeanProperty(PropertyAccessor.java:419)
at org.mvel.PropertyAccessor.get(PropertyAccessor.java:153)
... 14 more
Caused by: org.drools.RuntimeDroolsException: This is a bug. Please report to development
team: org.drools.facttemplates.FactTemplateFieldExtractor.getValue(java.lang.Object)
at
org.drools.facttemplates.FactTemplateFieldExtractor.getNativeReadMethod(FactTemplateFieldExtractor.java:82)
at org.drools.rule.Declaration.getNativeReadMethod(Declaration.java:291)
... 20 more
Caused by: java.lang.NoSuchMethodException:
org.drools.facttemplates.FactTemplateFieldExtractor.getValue(java.lang.Object)
at java.lang.Class.getDeclaredMethod(Class.java:1909)
at
org.drools.facttemplates.FactTemplateFieldExtractor.getNativeReadMethod(FactTemplateFieldExtractor.java:79)
... 21 more
When I select dialect 'mvel' it does work however!
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira