2014-10-16 52 views
0

的两个实例麻烦我有一个规则说经与规则,检查同一类

rule "bcs-set" 
when 
Param(Feature == "BCS", Name == "primary") 
Param(Feature == "BCS", Name == "seconday") 
then 
insert ("addition") 
end 

我已经创建了两个帕拉姆对象,但它似乎是Drools中找不到这两个帕拉姆对象。

如果我拿出了第一个参数检查它的工作原理,但不与两者在规则的帕拉姆检查。

Param类如下:

public class Param { 

    private String feature; 
    private String name; 

    public String getFeature(){ 
     return feature; 
    } 

    public void setFeature(String feature){ 
     this.feature = feature; 
    } 

    public String getName(){ 
     return name; 
    } 

    public void setName(String name){ 
     this.name = name; 
    } 

} 

任何人有任何想法?

+0

请提供您使用的插入和消防规则的代码。这应该澄清@ laune的答案是否正确。 – Steve 2014-10-20 08:45:01

回答

1

这很可能是你做了什么样

Param p = new Param(); 
p.setFeature("BCS"); 
p.setName("primary"); 
kSession.insert(p); 
p.setName("secondary"); 
kSession.insert(p); 
kSession.fireAllRules(); 

注意insert不复制;它只是使用参考。 - 这是应该怎么做:

Param p1 = new Param(); 
p1.setFeature("BCS"); 
p1.setName("primary"); 
kSession.insert(p1); 
Param p2 = new Param(); 
p2.setFeature("BCS"); 
p2.setName("secondary"); 
kSession.insert(p2); 
kSession.fireAllRules(); 

它,当然,可能你做了别的东西,但是这适合作为您有关于他们的事实。可悲的是,你忽略了这幅非常重要的部分。