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(a)lists.jboss.org [mailto:rules-users-bounces@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(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)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