Перейти к основному содержанию
`Ctrl`+`K`

# Интеграция с сервером

## Код инициализации модуля

На событие (пере-)загрузки прикладного кода, возможно выполнить свой код. Для этого, в каталоге со scala-кодом модуля, необходимо создать файл с именем `{модуль}_ModuleInit.scala`, содержащий:

    object {модуль}_ModuleInit {}

Пример:

    Gs3_ModuleInit.scala
    object Gs3_ModuleInit {
    // Размещённый тут код будет выполнен при запуске загрузчика классов
      SBT
    }

## Обработка системных событий сервера

В процессе работы, сервер генерирует ряд системных событий, который можно обработать в прикладном коде. Для этого, необходимо подписаться на события объекта `ServerEventSource` в код инициализации модуля:

    object Gs3_ModuleInit {
      private val _logger: Logger =
      Logger.Factory.get("ru.bitec.app.gs3.Gs3_ModuleInit")
      ServerEventSource.subscribeOnInstanceStart(
        (conAccessor) =>_logger.info("OnInstanceStart")
      )
      ServerEventSource.subscribeOnConnect(
        (conAccessor, btkUserInfo) =>
        _logger.info(s"OnConnect: ${btkUserInfo.name}")
      )
    }

Перечень событий:

- `OnInstanceStart` - событие возникает после подключения пула sql-соединений сервера приложений к базе данных.

- `OnInstanceStop` - событие возникает перед отключением пула sql-соединений сервера приложений к базе данных.

- `OnConnect` - событие возникает в процессе запуска пользовательской сессиии, после успешной авторизации пользователя в системе. Для запрета подключения пользователя к системе, необходимо выбросить ошибку.

- `OnSessionStart` - событие возникает после начала сеанса работы, сеанс работы начинается после авторизации, перед открытием выборки выбора приложения.

- `OnSessionStop` - событие возникает перед остановкой сеанса работы

Пример смотри: `ru.bitec.app.btk.Btk_ModuleInit`