Возникли проблемы с правилом, которое проверяет два экземпляра одного класса
У меня есть правило, которое говорит
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();
Конечно, возможно, что вы сделали что-то еще, но это соответствует фактам, поскольку вы их связали. К сожалению, вы пропустили эту очень важную часть картины.