Я искал, но не могу найти причину сбоя этого простого кода в Drools (ядро 5.2.1. Финал и компилятор 5.2.0. Финал).
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, у которого нет имени для любого предложения, имеющегохотя бы одно свойство.
Есть идеи?
Спасибо,
Джон