[jboss-jira] [JBoss JIRA] (DROOLS-1665) Accumulator does not see bean property
Viacheslav Krot (JIRA)
issues at jboss.org
Mon Jul 17 12:21:00 EDT 2017
Viacheslav Krot created DROOLS-1665:
---------------------------------------
Summary: 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