Как сделать ограничение по вычисляемому свойству

Решаю задачу Турнирная таблица. Сделал вычисляемые свойства "Количество голов забитых командой" (сумма голов забитых игроками команды в текущей игре):

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;

Хотя да ошибка не очень информативна. Возможно для частных случаев (когда например параметр просто не используется) имеет смысл добавить дополнительные проверки.

→ Ссылка