检查同一类的两个实例的规则有问题

时间:2014-10-16 21:05:58

标签: drools drools-guvnor

我有一条说

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

我创建了两个Param对象,但似乎drools无法找到两个Param对象。

如果我取出第一个Param检查它可以工作,但不能同时遵守规则中的两个Param检查。

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;
    }

}

任何人都有任何想法?

1 个答案:

答案 0 :(得分:1)

你很可能做过像

这样的事情
Param p = new Param();
p.setFeature( "BCS" );
p.setName( "primary" );
kSession.insert( p );
p.setName( "secondary" );
kSession.insert( p );
kSession.fireAllRules();

请注意,插入不会复制;它只是使用参考。 - 这是应该做的:

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();

当然,您可能已经做了其他事情,但这与事实有关,因为您已经将它们联系起来。可悲的是,你已经省略了这个非常重要的部分。