2012-03-14 72 views
0

我已经搜索,但无法找到为什么这个简单的代码将在Drools(核心5.2.1.Final和编译器5.2.0.Final)中失败。在Drools中绑定多个变量LHS抛出NPE

rule "name" 
no-loop true 
when 
    $offer: Offer(properties != null && properties.size() > 0, $properties : properties) 
    $invalidProperty: ContextualizedOfferProperty(name == null || "".equals(name)) from $properties 
then 
... 
end 

我得到以下异常:

java.lang.NullPointerException 
    at org.drools.reteoo.FromNode.<init>(FromNode.java:87) 
    at org.drools.reteoo.builder.FromBuilder.build(FromBuilder.java:41) 
    at org.drools.reteoo.builder.PatternBuilder.attachPattern(PatternBuilder.java:122) 
    at org.drools.reteoo.builder.PatternBuilder.build(PatternBuilder.java:76) 
    at org.drools.reteoo.builder.GroupElementBuilder$AndBuilder.build(GroupElementBuilder.java:126) 
    at org.drools.reteoo.builder.GroupElementBuilder.build(GroupElementBuilder.java:73) 
    at org.drools.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:152) 
    at org.drools.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:123) 
    at org.drools.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:110) 
    at org.drools.reteoo.ReteooRuleBase.addRule(ReteooRuleBase.java:419) 
    at org.drools.common.AbstractRuleBase.addRule(AbstractRuleBase.java:814) 
    at org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:555) 
    at org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:436) 
    at org.drools.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:149 

如果我删除了第二个结合,它正确传递。我已经尝试了许多不同的简单绑定,它总是抛出,如果我有两个绑定,一个引用另一个...

基本上,我想规则触发每个ContextualizedOfferProperty没有名称的任何提供具有至少一个属性。

任何想法?

感谢,

约翰

回答

1

它看起来像一个错误。你有没有试过版本5.3.1?它修复了像这样的几个编译问题。

+0

谢谢埃德森,我迟到了回答,但那是我最终测试,它确实解决了这个问题。由于这已经是一个老版本,我没有为此输入一个错误。 – johnmartel 2012-03-20 00:58:20