This is a known bug: <a href="https://issues.jboss.org/browse/JBRULES-2962">https://issues.jboss.org/browse/JBRULES-2962</a> Some improvements were made in 5.3 and 5.4 but AFAIK, the issue still remains. Could you please try using 5.4.SNAPSHOT ot beta1 to see if the error persists?<div>

<br></div><div>Best Regards,<br clear="all"><br>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br><br>Esteban Aliverti<br>- Developer @ <a href="http://www.plugtree.com" target="_blank">http://www.plugtree.com </a><br>- Blog @ <a href="http://ilesteban.wordpress.com" target="_blank">http://ilesteban.wordpress.com</a><br>


<br><br><div class="gmail_quote">On Mon, Jan 16, 2012 at 7:21 PM, lhorton <span dir="ltr">&lt;<a href="mailto:LHorton@abclegal.com">LHorton@abclegal.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Code level:  5.2.0.Final<br>
<br>
I have a DRL file that includes a declared type:<br>
<br>
package com.abclegal.rules.servicerequirements<br>
declare TransgressionMetaData<br>
        attempt : ServiceAttempt<br>
        requirement : Requirement<br>
end<br>
<br>
The package loads the first time and its rules run without error.  If I make<br>
a change to the file and hot-deploy it (copy it to the server), the<br>
ResourceChangeScanner picks up the file and KnowledgeAgent loads it, but<br>
when any rule from that package subsequently fires, I get a<br>
ClassCastException on the declared type:<br>
<br>
com.abclegal.rules.servicerequirements.TransgressionMetaData cannot be cast<br>
to com.abclegal.rules.servicerequirements.TransgressionMetaData<br>
<br>
it appears the KnowledgeAgent is not replacing the existing (in working<br>
memory) definition of the declared type, but instead is creating a new one<br>
with a different hash code.<br>
<br>
looks like a bug?<br>
<br>
Full stack trace:<br>
Caused by: RulesConsequenceException executing consequence for rule<br>
&quot;PHOTO_WHEN_SERVED: Photo must be taken if served.&quot; in<br>
com.abclegal.rules.servicerequirements<br>
[Error: drools.insert(new TransgressionMetaData($attempt,$req)):<br>
com.abclegal.rules.servicerequirements.TransgressionMetaData cannot be cast<br>
to com.abclegal.rules.servicerequirements.TransgressionMetaData]<br>
[Near : {... @Modify with($attempt){ ....}]<br>
             ^<br>
[Line: 1, Column: 1]<br>
java.lang.ClassCastException:<br>
com.abclegal.rules.servicerequirements.TransgressionMetaData cannot be cast<br>
to com.abclegal.rules.servicerequirements.TransgressionMetaData<br>
Rules working memory:<br>
Fact ServiceAttempt id: 17<br>
        at<br>
com.abclegal.rules.utility.RulesConsequenceExceptionHandler.handleException(RulesConsequenceExceptionHandler.java:24)<br>
        at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:912)<br>
        at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:845)<br>
        at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1056)<br>
        at<br>
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:733)<br>
        at<br>
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:699)<br>
        at<br>
org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:218)<br>
        at<br>
org.drools.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:305)<br>
        at<br>
com.abclegal.rules.server.RulesServiceImpl.execute(RulesServiceImpl.java:378)<br>
        ... 44 more<br>
Caused by: [Error: drools.insert(new TransgressionMetaData($attempt,$req)):<br>
com.abclegal.rules.servicerequirements.TransgressionMetaData cannot be cast<br>
to com.abclegal.rules.servicerequirements.TransgressionMetaData]<br>
[Near : {... @Modify with($attempt){ ....}]<br>
             ^<br>
[Line: 1, Column: 1]<br>
        at<br>
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:409)<br>
        at<br>
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:140)<br>
        at<br>
org.mvel2.optimizers.dynamic.DynamicOptimizer.optimizeAccessor(DynamicOptimizer.java:67)<br>
        at org.mvel2.ast.ASTNode.optimize(ASTNode.java:154)<br>
        at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:110)<br>
        at org.mvel2.MVELRuntime.execute(MVELRuntime.java:86)<br>
        at<br>
org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:122)<br>
        at<br>
org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:115)<br>
        at org.mvel2.MVEL.executeExpression(MVEL.java:928)<br>
        at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:105)<br>
        at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:906)<br>
        ... 51 more<br>
Caused by: java.lang.reflect.InvocationTargetException<br>
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
        at<br>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>
        at<br>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br>
        at java.lang.reflect.Method.invoke(Method.java:597)<br>
        at<br>
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:1066)<br>
        at<br>
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:338)<br>
        ... 61 more<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
--<br>
View this message in context: <a href="http://drools.46999.n3.nabble.com/ClassCastException-when-KnowledgeAgent-loads-declared-type-tp3664044p3664044.html" target="_blank">http://drools.46999.n3.nabble.com/ClassCastException-when-KnowledgeAgent-loads-declared-type-tp3664044p3664044.html</a><br>


Sent from the Drools: User forum mailing list archive at Nabble.com.<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</font></span></blockquote></div><br></div>