Перейти к основному содержимому
Версия: 7.0

События запуска

Событие запуска возникает при запуске одной из компонент платформы. Для каждого события запуска платформа предоставляет предопределенное действие, которое выполняется как обработчик этого события. Разработчик встраивает в этот обработчик свою логику инициализации. Аналогично при штатной остановке сервера приложений выполняется обработчик onStopping[], в который встраивают логику завершения.

КомпонентОбработчикКогда возникает событие
Сервер приложенийSystemEvents.onStarted[]Один раз при запуске сервера приложений, до того, как сервер начнет принимать подключения клиентов.
Сервер приложенийSystemEvents.onFinallyStarted[]Один раз при запуске сервера приложений, в конце запуска: после onStarted[] и после этапа, на котором полный запуск синхронизирует метаданные Reflection с базой данных.
Сервер приложенийSystemEvents.onStopping[]Один раз при штатной остановке сервера приложений (SIGTERM, Ctrl+C, остановка службы), до остановки RMI, планировщика и других служб. Не выполняется, если запуск сервера завершился ошибкой (в том числе в onFinallyStarted[]).
Десктоп-клиентSystemEvents.onDesktopClientStarted[]Один раз при запуске десктоп-клиента, после того, как клиент подключился к серверу приложений.
Веб-клиентSystemEvents.onWebClientStarted[]Один раз при запуске веб-клиента, после того, как клиент подключился к серверу приложений.

Обработчики — абстрактные действия последовательной формы, объявленные в системном модуле SystemEvents. Логика инициализации приложения подключается к ним с помощью расширения действий. После выполнения обработчика платформа сама применяет сделанные им изменения к базе данных.

Объекты модуля Reflection для форм, элементов навигатора, свойств и действий синхронизируются с исходным кодом между onStarted[] и onFinallyStarted[]: в onStarted[] поиск по каноническому имени находит только объекты, уже существовавшие при одном из предыдущих запусков, поэтому инициализацию, которой они нужны, — например заполнение прав политики безопасности — размещают в onFinallyStarted[]. При облегчённом запуске синхронизация пропускается, и элементы, добавленные после последнего полного запуска, не находятся вовсе.

Во время выполнения onStopping[] сервер ещё принимает подключения и запросы клиентов. Обработчик не выполняется при аварийном завершении процесса (kill -9, падение JVM, отключение питания).

Язык​

Для добавления реализации обработчика используется инструкция ACTION+.

Примеры​

lastStarted 'Время последнего запуска сервера' = DATA DATETIME ();

onStarted() + {
lastStarted() <- currentDateTime();
}

onWebClientStarted() + {
MESSAGE 'Добро пожаловать!';
}