Hi....

I have created a rule which is as below

rule "myrule"

dialect "mvel"

when

tr : BOM_TRANSACTION_DETAILS( country == "CH" )

then

tr.setCarrierName( "orange" );

tr.Display();

end


And the Model class is defined as below...

interface Generalized

{

void Display();

}


public class BOM_TRANSACTION_DETAILS implements Generalized {

          getter and setter.....

          void Display()

{

.....

}

}



Now when I run this rule, it is giving me the following exception . Can any one please help me why this exception is coming....? and also when I removed the Display() from interface Generalized the code works fine...

So is this because of Interface?? Can we use interface for defining Models..??


org.drools.runtime.rule.ConsequenceException: [Error: tr.Display(): Class org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer can not access a member of class com.drools.icas.transaction.Generalized with modifiers "public abstract"]

[Near : {... Unknown ....}]

             ^

[Line: 1, Column: 0]

at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:23)

at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:943)

at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:885)

at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1082)

at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:682)

at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:649)

at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:177)

at com.drools.icas.transaction.DemoTest.main(DemoTest.java:92)

Caused by: [Error: tr.Display(): Class org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer can not access a member of class com.drools.icas.transaction.Generalized with modifiers "public abstract"]

[Near : {... Unknown ....}]

             ^

[Line: 1, Column: 0]

at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:382)

at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:140)

at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:137)

at org.mvel2.MVELRuntime.execute(MVELRuntime.java:91)

at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:101)

at org.mvel2.MVEL.executeExpression(MVEL.java:968)

at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:89)

at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:934)

... 6 more

Caused by: java.lang.IllegalAccessException: Class org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer can not access a member of class com.drools.icas.transaction.Generalized with modifiers "public abstract"

at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)

at java.lang.reflect.Method.invoke(Method.java:583)

at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:936)

at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:321)

... 13 more




Thanks....

Deepak  Jambhekar

=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you