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

Viacheslav Krot (JIRA) issues at jboss.org
Mon Jul 17 12:22:00 EDT 2017


    [ https://issues.jboss.org/browse/DROOLS-1665?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13436518#comment-13436518 ] 

Viacheslav Krot commented on DROOLS-1665:
-----------------------------------------

Oh, forgot to include the classes. They are very simple


{code:java}
public class Attr {
    private int level;

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    private boolean inHangar;

    public boolean isInHangar() {
        return inHangar;
    }

    public void setInHangar(boolean inHangar) {
        this.inHangar = inHangar;
    }
}

public class Player {
    private List<Attr> attrs = new ArrayList<>();

    public List<Attr> getAttrs() {
        return attrs;
    }

    public void setAttrs(List<Attr> attrs) {
        this.attrs = attrs;
    }
}

public class Ops {
}

{code}


> 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