Документация на documentation.lsfusion.org скоро станет недоступной, используйте, пожалуйста, https://docs.lsfusion.org/ru.

Перейти к концу метаданных
Переход к началу метаданных

Вычисляемые события - события, которые при изменении значения свойства (условия) на не NULL, изменяют значение одного свойства на другое. При этом, в отличии от простых событий, это изменение происходит, не в момент изменения условия, а вычисляется каждый раз при обращении к изменяемому свойству. Если в сессии уже есть изменение этого свойства, это изменение считается более приоритетным, чем изменение в вычисляемом событии.

Для каждого свойства может быть только одно вычисляемое событие, которое изменяет это свойство.  

Язык

Для задания вычисляемых событий используется инструкция <- WHEN.

Примеры

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 // при добавлении клиента, по умолчанию, предоставить ему заданную скидку
defaultDiscount = DATA NUMERIC[6,2] ();
discount = DATA NUMERIC[6,2] (Customer);
discount(Customer c) <- defaultDiscount() WHEN SET(c IS Customer);

quantity = DATA NUMERIC[10,2] (OrderDetail);
price = DATA NUMERIC[10,2] (OrderDetail);
sum = DATA NUMERIC[10,2] (OrderDetail);

sum(OrderDetail d) <- quantity(d) * price(d) WHEN CHANGED(quantity(d)) OR CHANGED(price(d));

  • Нет меток

2 Комментариев

  1. Я бы вообще не стал считать вычисляемые события за события. Это скорее логика вычислений свойств, чем действий.

    1. Собственно логически это больше событие чем вычисление. Хотя физически да. Тут вообще 50 на 50, но так как есть прямая аналогия с простыми событиями, то лучше тут. Попробую расписать эту аналогию.