Looks like a bug. :( The code to inherit @role event is there, but apparently there is something else going on:

https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/rule/Package.java#L485

   Please open a JIRA with the information bellow.

   Edson

On Fri, Jul 27, 2012 at 3:01 AM, Joerg Henne <hennejg+nabble@googlemail.com> wrote:
Thanks for your help, Edson!

We are using drools 5.4.0.Final via maven.

Maybe I am missing something, so here's a quick overview of what we do. We
have a model class ButtonEvent which is derived like this:
ButtonEvent -> ZonedEvent -> VSCPEvent

Then there's a rulebase with something like this:

import test.vscp.VSCPEvent;
import test.vscp.information.ButtonEvent;

declare VSCPEvent
    @role( event )
    @timestamp( timestamp )
    @expires( 1h )
end
declare ButtonEvent
    @role( event )
    @timestamp( timestamp )
    @expires( 1h )
end

rule "Button long pressed"
    when
        b : ButtonEvent( action == Action.PRESSED )
        not( ButtonEvent( action == Action.RELEASED, this after[0s,1s] b ) )
    then
        ...
end

What I would have expected is that the second 'declare' statement to be
unnecessary. However, if I take it away, this is what I get:

java.lang.ClassCastException: org.drools.common.DefaultFactHandle
        at
org.drools.base.evaluators.AfterEvaluatorDefinition$AfterEvaluator.evaluateCachedRight(AfterEvaluatorDefinition.java:316)
        at
org.drools.rule.constraint.EvaluatorConstraint.isAllowedCachedRight(EvaluatorConstraint.java:80)
        at
org.drools.common.SingleBetaConstraints.isAllowedCachedRight(SingleBetaConstraints.java:139)
        at org.drools.reteoo.NotNode.assertObject(NotNode.java:133)
        at
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)
        at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:141)
        at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)
        at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)
        at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)
        at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:337)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:298)
        at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:888)
        at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:847)
        at
org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:269)
        ...

Thanks
Joerg





--
View this message in context: http://drools.46999.n3.nabble.com/Apply-role-to-whole-class-hierarchy-tp4018930p4018942.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



--
  Edson Tirelli
  JBoss Drools Core Development
  JBoss by Red Hat @ www.jboss.com