Drools- Имя ошибки компиляции правила не может быть преобразовано в переменную Синтаксическая ошибка, вставьте ; заполнить Заявление

Я пытаюсь создать простое правило для KIE Workbench/Drools в новом файле DRL и продолжаю получать следующую ошибку при сборке и развертывании.

Имя ошибки компиляции правила не может быть преобразовано в переменную Синтаксическая ошибка, вставьте ";" заполнить выписку

вот код:

package demo.people.peopleproject
import demo.people.peopleproject.Person

rule "is18rule"
    when 
        Person(age>=18)
    then
        System.out.println(name  + "is 18 or over")
end

и вот скриншот моего рабочего места, если это полезно введите здесь описание изображения

Я новичок в Drools, TIA за вашу помощь :)

EDIT: я должен добавить, что простое добавление ; действительно нигде здесь не помогло, так что да, я пробовал это


person tls11    schedule 28.09.2016    source источник
comment
RHS правила - Java, поэтому вам нужно ; для завершения заявлений.   -  person tarilabs    schedule 29.09.2016
comment
что касается поля имени совпадающего человека, вы можете сделать в соответствии с вашим собственным ответом или, альтернативно, привязать переменную как Person( $name : name ,...) в левой части, а затем указать в правой части как $name.   -  person tarilabs    schedule 29.09.2016


Ответы (2)


Я нашел ответ - если он будет полезен кому-то в будущем - вот код, который в итоге сработал для меня. Нужны точки с запятой и немного другой синтаксис.

package demo.people.peopleproject
import demo.people.peopleproject.Person;

rule 'is18rule'
    when 
        p: Person(age >= 18)
    then
        System.out.println(p.getName() + "is 18 or over.");
end
person tls11    schedule 28.09.2016

В слюнях вам нужны точки с запятой для каждого утверждения в следствии (RHS) [править] . Правила Java также применяются к импорту и объявлениям пакетов в целом.

Жаль, что рабочая среда не обеспечивает проверку синтаксиса в реальном времени.

person PeabeaM    schedule 24.03.2018
comment
Извините, я хотел сказать Consequence = RHS, а не LHS, как я изначально прокомментировал. - person PeabeaM; 05.07.2019