Как сделать ограничение по вычисляемому свойству
Решаю задачу Турнирная таблица. Сделал вычисляемые свойства "Количество голов забитых командой" (сумма голов забитых игроками команды в текущей игре):
hostGoals 'Х голы' (Game game) = GROUP SUM scorergoalsScored(Scorers scorers) IF typeTeam(scorers) = TypeTeam.host;
guestGoals 'Г голы' (Game game) = GROUP SUM scorergoalsScored(Scorers scorers) IF typeTeam(scorers) = TypeTeam.guest;
Далее создаю ограничение:
CONSTRAINT hostGoals(Game game) = guestGoals(game) MESSAGE 'Игра не может закончиться вничью';
Но получаю ошибку:
04 окт 2020 09:26:27,124 ERROR StartLogger - Exception while starting logics instance: Вычисление классов свойства : p948 '(SET) p922 '' [HockeyStats(57:12)]'
Ответы (1 шт):
Автор решения: Aliaksandr Kirkouski
→ Ссылка
Тут дело в том, что вы при объявлении hostGoals нигде game не использовали. То есть нужно еще одно условие в конец добавить.
hostGoals 'Х голы' (Game game) = GROUP SUM scorergoalsScored(Scorers scorers) IF typeTeam(scorers) = TypeTeam.host AND game(scorers) = game;
Хотя да ошибка не очень информативна. Возможно для частных случаев (когда например параметр просто не используется) имеет смысл добавить дополнительные проверки.