[jboss-jira] [JBoss JIRA] (DROOLS-1665) Accumulator does not see bean property

Mario Fusco (JIRA) issues at jboss.org
Wed Aug 9 09:29:00 EDT 2017


     [ https://issues.jboss.org/browse/DROOLS-1665?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mario Fusco resolved DROOLS-1665.
---------------------------------
    Resolution: Duplicate Issue


Duplicate of https://issues.jboss.org/browse/DROOLS-1664

> Accumulator does not see bean property
> --------------------------------------
>
>                 Key: DROOLS-1665
>                 URL: https://issues.jboss.org/browse/DROOLS-1665
>             Project: Drools
>          Issue Type: Bug
>          Components: core engine
>    Affects Versions: 7.0.0.Final
>            Reporter: Viacheslav Krot
>            Assignee: Mario Fusco
>
> I'm not sure if it is a bug, but look like it. I have a simple rule like this
> {code:java}
> package test;
> import drools.Attr;
> import drools.Player;
> import drools.Ops;
> import java.lang.Number;
> import java.util.List;
> import java.util.Date;
> rule "failing"
> 	dialect "mvel"
> 	when
> 		pp : Player()
>         Number(doubleValue <= 5) from accumulate(Attr(inHangar == true, $lv : getLevel()) from pp.attrs, max( $lv ))
> 		bat : Ops()
> 		res : List( )
> 	then
>         System.out.println("works");
> end
> {code}
> It's execution fails with exception
> {noformat}
> java.lang.RuntimeException: Unknown property: level
> 	at org.drools.core.reteoo.PropertySpecificUtil.setPropertyOnMask(PropertySpecificUtil.java:105)
> 	at org.drools.core.reteoo.PropertySpecificUtil.calculatePatternMask(PropertySpecificUtil.java:97)
> 	at org.drools.core.reteoo.PropertySpecificUtil.calculatePositiveMask(PropertySpecificUtil.java:68)
> 	at org.drools.core.reteoo.LeftTupleSource.initDeclaredMask(LeftTupleSource.java:257)
> 	at org.drools.core.reteoo.BetaNode.initDeclaredMask(BetaNode.java:191)
> 	at org.drools.core.reteoo.LeftTupleSource.initMasks(LeftTupleSource.java:222)
> 	at org.drools.core.reteoo.BetaNode.<init>(BetaNode.java:139)
> 	at org.drools.core.reteoo.AccumulateNode.<init>(AccumulateNode.java:83)
> 	at org.drools.core.reteoo.builder.PhreakNodeFactory.buildAccumulateNode(PhreakNodeFactory.java:129)
> 	at org.drools.core.reteoo.builder.AccumulateBuilder.build(AccumulateBuilder.java:104)
> 	at org.drools.core.reteoo.builder.PatternBuilder.attachPattern(PatternBuilder.java:118)
> 	at org.drools.core.reteoo.builder.PatternBuilder.build(PatternBuilder.java:79)
> 	at org.drools.core.reteoo.builder.GroupElementBuilder$AndBuilder.build(GroupElementBuilder.java:108)
> 	at org.drools.core.reteoo.builder.GroupElementBuilder.build(GroupElementBuilder.java:68)
> 	at org.drools.core.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:164)
> 	at org.drools.core.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:136)
> 	at org.drools.core.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:110)
> 	at org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1714)
> 	at org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1704)
> 	at org.drools.core.impl.KnowledgeBaseImpl.internalAddPackages(KnowledgeBaseImpl.java:976)
> 	at org.drools.core.impl.KnowledgeBaseImpl.access$000(KnowledgeBaseImpl.java:128)
> 	at org.drools.core.impl.KnowledgeBaseImpl$1.run(KnowledgeBaseImpl.java:764)
> 	at org.drools.core.impl.KnowledgeBaseImpl.enqueueModification(KnowledgeBaseImpl.java:772)
> 	at org.drools.core.impl.KnowledgeBaseImpl.addPackages(KnowledgeBaseImpl.java:761)
> 	at org.drools.core.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:283)
> 	at org.drools.compiler.kie.builder.impl.KieContainerImpl.createKieBase(KieContainerImpl.java:639)
> 	at org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:574)
> 	at org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:555)
> {noformat}
> But, it I reorder the rule conditions, like this for example
> {code:java}
> package test;
> ...
> rule "failing"
> 	dialect "mvel"
> 	when
> 		pp : Player()
> 		bat : Ops()
>                Number(doubleValue <= 5) from accumulate(Attr(inHangar == true, $lv : getLevel()) from pp.attrs, max( $lv ))
> 		res : List( )
> 	then
>         System.out.println("works");
> end
> {code}
> It works. I just move condition with accum one line lower (after Ops condition) and it works. 
> I guess this is a bug? Both version worked in drools 6.0 just fine.



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-jira mailing list