[jboss-jira] [JBoss JIRA] Created: (JBRULES-2875) Exception executing predicate with binding variable and or predicate

alexandre alexandre (JIRA) jira-events at lists.jboss.org
Mon Jan 24 09:32:49 EST 2011


Exception executing predicate with binding variable and or predicate
--------------------------------------------------------------------

                 Key: JBRULES-2875
                 URL: https://issues.jboss.org/browse/JBRULES-2875
             Project: Drools
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: drools-core
    Affects Versions: 5.1.1.FINAL
         Environment: Windows XP / DEBIAN / Eclipse 3.5.1
            Reporter: alexandre alexandre
            Assignee: Mark Proctor
            Priority: Critical


Exception executing predicate with binding variable and or predicate

When I execute this kind of rule :
(where field id from Object Entity is an Integer.)

rule "test"
salience 20
when
	(String() or Double())
	$entity:Entity()
	DroolsTest(entity.id == $entity.id )
then
	System.out.println( "it works !" );
end



I got this exception :

Exception in thread "main" org.drools.RuntimeDroolsException: Exception executing predicate entite.id == $entite.id
	at org.drools.rule.PredicateConstraint.isAllowedCachedLeft(PredicateConstraint.java:302)
	at org.drools.common.SingleBetaConstraints.isAllowedCachedLeft(SingleBetaConstraints.java:142)
	at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:83)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:189)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:64)
	at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:85)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:189)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:138)
	at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:148)
	at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)
	at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:190)
	at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:145)
	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1174)
	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1123)
	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:917)
	at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:251)
	at com.agysoft.marco.tools.tuOneShot.marcometier.drools.DroolsTest.main(DroolsTest.java:57)
Caused by: [Error: unable to resolve method: java.lang.String.id() [arglength=0]]
[Near : {... Unknown ....}]
             ^
[Line: 1, Column: 0]
	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:932)
	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:592)
	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:311)
	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:137)
	at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:137)
	at org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:111)
	at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
	at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:104)
	at org.mvel2.MVEL.executeExpression(MVEL.java:1001)
	at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:91)
	at org.drools.rule.PredicateConstraint.isAllowedCachedLeft(PredicateConstraint.java:295)
	... 16 more


this rule Works :

rule "test"
salience 20
when
	$entity:Entity()
	DroolsTest(entity.id == $entity.id )
then
	System.out.println( "it works !" );
end


this rule Works :

rule "test"
salience 20
when
        (String() or Double())
	$entity:Entity()
	DroolsTest(entity.id == $entity.id )
then
	System.out.println( "it works !" );
end


---------------------------------------------------------------------------------------------------
variant case with another Exception :

rule "test"
salience 20
when
	(String() or Double())
	Entite($entiteId:id)
	DroolsTest(entite.id == $entiteId )
then
	System.out.println( "it works !" );
end

throw this Exception Stack :

Exception in thread "main" org.drools.RuntimeDroolsException: Exception executing predicate entite.id == $entiteId
	at org.drools.rule.PredicateConstraint.isAllowedCachedLeft(PredicateConstraint.java:302)
	at org.drools.common.SingleBetaConstraints.isAllowedCachedLeft(SingleBetaConstraints.java:142)
	at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:83)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:189)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:64)
	at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:85)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:189)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:138)
	at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:148)
	at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)
	at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:190)
	at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:145)
	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1174)
	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1123)
	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:917)
	at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:251)
	at com.agysoft.marco.tools.tuOneShot.marcometier.drools.DroolsTest.main(DroolsTest.java:57)
Caused by: [Error: java.lang.String cannot be cast to com.agysoft.marco.tools.tuOneShot.marcometier.drools.Entite]
[Near : {... Unknown ....}]
             ^
[Line: 1, Column: 0]
	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:387)
	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:137)
	at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:137)
	at org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:111)
	at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
	at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:104)
	at org.mvel2.MVEL.executeExpression(MVEL.java:1001)
	at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:91)
	at org.drools.rule.PredicateConstraint.isAllowedCachedLeft(PredicateConstraint.java:295)
	... 16 more
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to com.agysoft.marco.tools.tuOneShot.marcometier.drools.Entite
	at org.drools.base.com.agysoft.marco.tools.tuOneShot.marcometier.drools.Entite4694228$getId.getIntValue(Unknown Source)
	at org.drools.base.extractors.BaseIntClassFieldReader.getValue(BaseIntClassFieldReader.java:52)
	at org.drools.base.ClassFieldReader.getValue(ClassFieldReader.java:91)
	at org.drools.rule.Declaration.getValue(Declaration.java:228)
	at org.drools.base.mvel.DroolsMVELPreviousDeclarationVariable.getValue(DroolsMVELPreviousDeclarationVariable.java:83)
	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:454)
	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:311)
	... 24 more



-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list