[rules-users] Exception executing consequence for rule xxx in yyy: java.lang.RuntimeException: unable to access field
Chang Liu
CLiu at deltadentalmi.com
Wed Jan 16 16:41:52 EST 2013
Another note, using obj.setX(...) would make this problem go away.
Question: are there anything special that a user should be aware of about putting assignment in rule actions?
-----Original Message-----
From: Chang Liu
Sent: Wednesday, January 16, 2013 4:37 PM
To: Rules Users List
Cc: Mukundan Agaram
Subject: RE: [rules-users] Exception executing consequence for rule xxx in yyy: java.lang.RuntimeException: unable to access field
A rule to repro this situation:
The rule:
...
rule "Assignment In Action Test"
when
obj : Foo()
then
obj.x = 1;
System.out.println("Rule Fired!");
end ...
Definition of class Foo:
public class Foo {
public int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
Objects been inserted:
Foo foo1 = new Foo();
foo1.x = 0;
Foo foo2 = new Foo();
Foo2.x = 1000;
Note that if only one Foo object is inserted, things work fine. If more than one Foo objects are inserted, we see this Exception:
Exception executing consequence for rule "Assignment In Action Test" in com.sample: java.lang.RuntimeException: unable to access field
at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1283)
at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1209)
at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1442)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)
at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230)
at com.sample.AssignmentInActionTestMain.main(AssignmentInActionTestMain.java:37)
Caused by: java.lang.RuntimeException: unable to access field
at org.mvel2.optimizers.impl.refl.nodes.DynamicFieldAccessor.setValue(DynamicFieldAccessor.java:66)
at org.mvel2.optimizers.impl.refl.nodes.IndexedVariableAccessor.setValue(IndexedVariableAccessor.java:43)
at org.mvel2.compiler.CompiledAccExpression.setValue(CompiledAccExpression.java:59)
at org.mvel2.ast.DeepAssignmentNode.getReducedValueAccelerated(DeepAssignmentNode.java:92)
at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:126)
at org.mvel2.MVEL.executeExpression(MVEL.java:930)
at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:101)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1273)
... 6 more
Caused by: java.lang.NullPointerException
at org.mvel2.DataConversion.convert(DataConversion.java:118)
at org.mvel2.optimizers.impl.refl.nodes.DynamicFieldAccessor.setValue(DynamicFieldAccessor.java:61)
... 14 more
-----Original Message-----
From: rules-users-bounces at lists.jboss.org [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Wolfgang Laun
Sent: Wednesday, January 16, 2013 10:35 AM
To: Rules Users List
Subject: Re: [rules-users] Exception executing consequence for rule xxx in yyy: java.lang.RuntimeException: unable to access field
What's the type of $billingOutputRuleContext.retroPreviousBillAmount?
On 16/01/2013, magaram <magaram at deltadentalmi.com> wrote:
> The behavior stated seems very erratic as other similar rules are
> executing.
> Also note that the fields in the consequence have a visibility of public.
> Are there any known issues surrounding this?
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/Exception-executing-consequence-for-
> rule-xxx-in-yyy-java-lang-RuntimeException-unable-to-access-field-tp40
> 21553p4021576.html Sent from the Drools: User forum mailing list
> archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
**********************************************************************
CONFIDENTIALITY NOTICE: The information contained in this email is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you are not the intended recipient, you are hereby notified that any unauthorized review, use, dissemination, distribution or copying of this communication is prohibited and may be subject to legal restriction or sanction. If you have received this email in error, please notify the sender immediately to arrange for return or destruction of the information and all copies. If you are the intended recipient but do not wish to receive communications through this medium, please advise the sender immediately. Thank you
More information about the rules-users
mailing list