Управление сессиями
Существуют следующие операторы работы с сессиями:
- Применение изменений (
APPLY) - Отмена изменений (
CANCEL) - Новая сессия (
NEWSESSION,NESTEDSESSION,NEWSQL) - Предыдущее значение (
PREV) - Операторы изменений (
SET,CHANGED, ...)
Отметим, что последние два оператора создают свойства, а не действия.
Вложенные локальные свойства
При применении или отмене изменений, а также при создании новой сессии, значения всех локальных свойств по умолчанию сбрасываются в NULL — применение и отмена очищают текущую сессию, а создание новой сессии начинается с пустой. (Создание вложенной сессии устроено иначе: оно копирует текущую сессию в создаваемую вложенную, поэтому значения локальных свойств видны в ней с самого начала.) Это не всегда удобно, и, кроме того, часто бывает необходимо передать данные между разными сессиями / "циклами жизни" одной сессии. Для этого в платформе можно отдельные локальные свойства помечать как вложенные. В этом случае:
- При создании новой сессии - все значения локального свойства скопируются в создаваемую сессию, а при ее закрытии скопируются назад.
- При применении изменений - после завершения транзакции все значения локального свойства сохранятся (по умолчанию, после применения изменений, сессия очищается вместе со значениями всех локальных свойств).
- При отмене изменений - все значения локального свойства сохранятся такими же какими были перед отменой изменений.
Пометку вложенности можно делать как глобально для локального свойства (и соответственно для всех его использований), так и отдельно для каждой операции управления сессиями. Также для любой операции управления сессиями можно указать, что все локальные свойства должны быть вложенными.