Hi Wolfgang,<br><br>thanks for having reported this.<br>I fixed it in mvel and as usual the fix will be available with the next mvel release.<br><br>Cheers,<br>Mario<br><br><div class="gmail_quote">On Sun, Feb 17, 2013 at 5:32 PM, Wolfgang Laun <span dir="ltr">&lt;<a href="mailto:wolfgang.laun@gmail.com" target="_blank">wolfgang.laun@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Below is a fully self-contained DRL that compiles correctly but runs<br>
into a runtime error when the LHS of rule &quot;match&quot; is evaluated. The<br>
&quot;culprit&quot; is the test &quot;this != $c&quot;, but one would expect simply a true<br>
result from the comparison.<br>
<br>
declare Person<br>
  name: String<br>
end<br>
declare Customer<br>
extends Person<br>
  rating: int<br>
end<br>
declare Employee<br>
extends Person<br>
  wage: int<br>
end<br>
<br>
rule initphone<br>
salience 100<br>
when<br>
then<br>
    insert( new Customer( &quot;Joe&quot;, 100 ) );<br>
    insert( new Employee( &quot;Paul&quot;, 2100 ) );<br>
end<br>
<br>
rule match<br>
when<br>
    $c: Customer()<br>
    $e: Employee( this != $c )<br>
then<br>
    System.out.println( &quot;c/e &quot; + $c + &quot; &quot; + $e );<br>
end<br>
<br>
Exception in thread &quot;main&quot; Exception executing consequence for rule<br>
&quot;initphone&quot; in express: [Error: incompatible types in statement: class<br>
express.Customer (compared from: class express.Employee)]<br>
[Near : {... this != $c ....}]<br>
             ^<br>
[Line: 1, Column: 1]<br>
        at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)<br>
        at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297)<br>
        at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221)<br>
        at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456)<br>
        at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)<br>
        at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)<br>
        at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230)<br>
        at express.Main.execute(Main.java:92)<br>
        at express.Main.main(Main.java:126)<br>
Caused by: [Error: incompatible types in statement: class<br>
express.Customer (compared from: class express.Employee)]<br>
[Near : {... this != $c ....}]<br>
             ^<br>
[Line: 1, Column: 1]<br>
        at org.mvel2.ast.BinaryOperation.&lt;init&gt;(BinaryOperation.java:84)<br>
        at org.mvel2.util.CompilerTools.finalizePayload(CompilerTools.java:118)<br>
        at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:287)<br>
        at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62)<br>
        at org.mvel2.MVEL.compileExpression(MVEL.java:810)<br>
        at org.drools.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:435)<br>
        at org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:238)<br>
        at org.drools.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:206)<br>
        at org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:190)<br>
        at org.drools.rule.constraint.MvelConstraint.isAllowedCachedRight(MvelConstraint.java:184)<br>
        at org.drools.common.SingleBetaConstraints.isAllowedCachedRight(SingleBetaConstraints.java:134)<br>
        at org.drools.reteoo.JoinNode.propagateFromRight(JoinNode.java:156)<br>
        at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:148)<br>
        at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)<br>
        at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)<br>
        at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)<br>
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)<br>
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:311)<br>
        at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)<br>
        at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:192)<br>
        at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:186)<br>
        at express.Rule_initphone_aea184dfceb14326841c37daadabfdbc.defaultConsequence(Rule_initphone_aea184dfceb14326841c37daadabfdbc.java:8)<br>
        at express.Rule_initphone_aea184dfceb14326841c37daadabfdbcDefaultConsequenceInvokerGenerated.evaluate(Unknown<br>
Source)<br>
        at express.Rule_initphone_aea184dfceb14326841c37daadabfdbcDefaultConsequenceInvoker.evaluate(Unknown<br>
Source)<br>
        at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)<br>
        ... 7 more<br>
_______________________________________________<br>
rules-dev mailing list<br>
<a href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a><br>
</blockquote></div><br>