Возникли проблемы с правилом, которое проверяет два экземпляра одного класса

У меня есть правило, которое говорит

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

Я создал два объекта Param, но кажется, что слюни не могут найти оба объекта 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 ответ

Очень вероятно, что вы сделали что-то вроде

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

Конечно, возможно, что вы сделали что-то еще, но это соответствует фактам, поскольку вы их связали. К сожалению, вы пропустили эту очень важную часть картины.

Другие вопросы по тегам