Я должен выполнить метод на том, "когда" раздел цифрового однообъективного зеркального файла и я не уверен, возможно ли это. Пример:
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 () являются методами Пользователя),
Я попробовал оценкой (), и никакие ошибки не появились, но она не выполнилась. Как это:
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
Как я могу разрешить эту проблему?
Ваша вторая попытка выглядит довольно запутанной - также - у вас есть такие шаблоны пользователей - вы хотите, чтобы они ссылались на один и тот же экземпляр пользователя? или они могут быть отдельными экземплярами (или они должны быть отдельными?) - это немного изменит ситуацию в некоторых случаях в зависимости от вашего намерения.
В терминах простейшего переписывания, которое я могу придумать:
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
Обратите внимание на использование элемента верхнего уровня eval () - он также использует только один пользовательский шаблон - а затем применяет к нему ограничения. (В будущей версии встроенные evals будут работать без написания eval!).