Правила слюней: как я могу использовать метод в разделе "когда"?
Мне нужно выполнить метод в разделе "when" файла DSLR, и я не уверен, что это возможно. Пример:
rule "WNPRules_10"
when
$reminder:Reminder(source == "HMI")
$user:User(isInAgeRange("30-100")==true)
Reminder(clickPercentual >= 10)
User(haveAtLeastOptIns("1,2,3,4") == true)
then
$reminder.setPriority(1);update($reminder);
end
(Примечание: isInAgeRange () и haveAtLeastOptIns () являются методами пользователя)
Я попробовал с eval() и никаких ошибок не появилось, но он не выполнил. Вот так:
rule "WNPRules_10"
when
$reminder:Reminder(source == "HMI")
$user:User(eval($user.isInAgeRange("30-100")==true))
Reminder(clickPercentual >= 10)
User(eval($user.haveAtLeastOptIns("1,2,3,4") == true))
then
$reminder.setPriority(1);update($reminder);
end
Как я могу решить эту проблему?
1 ответ:
Ваша вторая попытка выглядит довольно запутанной-также - у вас есть так пользовательские шаблоны - вы хотите, чтобы они ссылались на один и тот же экземпляр пользователя? или они могут быть отдельными экземплярами (или должны быть отдельными?)- это немного изменит ситуацию в некоторых случаях в зависимости от ваших намерений.
В терминах самого простого переписывания, которое я могу придумать:
Обратите внимание на использование элемента верхнего уровня eval () - он также использует только один пользовательский шаблон - и затем применяет к нему ограничения. (В будущем версия inline evals будет работать без необходимости писать eval !).rule "WNPRules_10" when $reminder:Reminder(source == "HMI") $user:User() eval($user.isInAgeRange("30-100") && $user.haveAtLeastOptIns("1,2,3,4")) Reminder(clickPercentual >= 10) then $reminder.setPriority(1);update($reminder); end