2012-03-14 28 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