Я новичок в drools, и мне удалось создать рабочее приложение, которое использует созданные правила. У меня есть простое Message
класса с двумя type
переменных и language
.
public class Message {
private String type;
private String language;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
}
Мои правила реализованы как
rule "test_auto"
when
message:Message (( type == 'string1' ) && ( language == 'string2' ) )
then
...
end
Если пользователь вставляет некоторые странные значения для типа или языка, у меня есть определенное правило, которое возвращает ошибку. Но, кроме того, я хотел знать, можно ли также вернуть список всех возможных переменных, вставленных в правила: например, string1
и string2
.
Наверное, вы имеете в виду "строковые литералы", а не переменные?
Там есть класс для представления правила; с классами для шаблонов и ограничений. Но они "нестабильны", и обычно нецелесообразно создавать на них приложение.
Если у вас есть несколько правил, которые ловят неправильную комбинацию Message.type и Message.language, вы можете подумать о вставке фактов в соответствии с
class BadMessage {
String type;
String language;
}
со всеми этими "плохими" комбинациями и одним правилом
rule "catch bad messages"
when
$m: Message'( $t: type, $l: language )
BadMessage( type == $t, language == $l )
then
// handle $m as a "bad" message
Обратите внимание, что вы можете написать свой шаблон просто как
message: Message( type == "string1", language == "string2" )