[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