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

SystemEvents

SystemEventsсистемный модуль, объявляющий обработчики событий запуска платформы, свойства версий платформы, настройки оформления по среде, а также системные журналы исключений, запусков сервера, подключений клиентов, сессий изменений и пингов компьютеров. Он же собирает действия push-уведомлений и взаимодействия с клиентом и пункты навигатора для логотипа, диалога оформления и форм журналов. Подключается через REQUIRE SystemEvents (System, Reflection и Time тянутся автоматически).

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

Эти абстрактные списки действий — обработчики событий запуска: разработчик встраивает в них логику инициализации, а платформа запускает нужный список в соответствующий момент запуска сервера или клиента. onStarted[] — обработчик запуска сервера приложений; полный набор обработчиков и моменты их срабатывания описаны в статье События запуска.

ОбработчикКогда выполняется
onInit[]ранняя инициализация сервера до основного старта; запускает синхронизацию версий
onStarted[]запуск сервера приложений, до приёма подключений клиентов
onFirstStarted[]только самый первый запуск сервера приложений (когда выполняется firstStart[])
onFinallyStarted[]после onStarted[], в конце последовательности запуска
onClientStarted[]подключение клиента; диспетчеризует на десктоп- или веб-обработчик по типу клиента
onDesktopClientStarted[]подключение десктоп-клиента
onWebClientStarted[]подключение веб-клиента
onWebClientInit[STRING]список по ресурсу с ключом-путём к CSS / JS-ресурсу, выполняется при инициализации веб-клиента
onLoginInit[STRING]список по ресурсу, выполняется на странице входа

notFirstStart[] — хранимый признак того, что сервер уже запускался; firstStart[] — его отрицание, выбирающее первый запуск. У каждого обработчика есть обёртка …Apply (onInitApply[], onStartedApply[], onFinallyStartedApply[], onClientStartedApply[]), которая выполняет список и фиксирует изменения через APPLY; onStartedApply[] дополнительно запускает onFirstStarted[] на первом запуске и устанавливает notFirstStart[].

Версии

СвойствоЧто хранит
platformVersion[]версия платформы как TEXT
apiVersion[]версия API как INTEGER
revisionVersion[]ревизия исходников как INTEGER
synchronizeVersions[]читает текущие версии платформы / API / ревизии в свойства выше; запускается из onInit[]

Оформление

Настройки оформления разрешаются по DesignEnv — объекту среды оформления, представляющему выбранный одним клиентом внешний вид. Выбор задаётся тремя перечислимыми классами:

КлассЗначения
Themeexcel, classic, flatly, lumen, quartz, simplex, sketchy, yeti
Sizenormal, mini, tiny
Navbarhorizontal, vertical

У каждой настройки есть значение по среде (designEnv…), общесерверное значение по умолчанию (server…) и разрешённое значение. theme[DesignEnv], size[DesignEnv] и navbar[DesignEnv] разрешаются через OVERRIDE: сначала значение по среде, затем серверное значение по умолчанию, затем встроенный запасной вариант (Theme.classic для темы, heuristicSize[] для размера, Navbar.horizontal для панели). Формы для текущей среды size[], navbar[] читают разрешённое значение для currentDesignEnv[].

СвойствоЧто задаёт
theme[DesignEnv] / serverTheme[]цветовая тема и оформление виджетов; nameTheme[] — её имя как STRING
useBootstrap[DesignEnv] / useBootstrap[]используется ли оформление на основе Bootstrap (истинно для всех тем, кроме Theme.excel)
size[DesignEnv] / serverSize[]размер виджетов; isMini[] / isTiny[] отмечают компактные размеры
navbar[DesignEnv] / serverNavbar[]ориентация панели навигации; verticalNavbar[] отмечает вертикальную
navigatorPinMode[DesignEnv] / navigatorPinMode[]режим закрепления навигатора; берётся из значения по среде, когда выполняется useClientNavigatorPinMode[DesignEnv], иначе из серверного значения serverNavigatorPinMode[]
mobileMode[DesignEnv] / mobileMode[]принудительно включает или выключает мобильную раскладку
suppressOnFocusChange[DesignEnv]подавляет применение при смене фокуса
contentWordWrap[DesignEnv] / contentWordWrap[]перенос текста содержимого
highlightDuplicateValue[DesignEnv] / highlightDuplicateValue[]подсветка повторяющихся значений ячеек
userFiltersManualApplyMode[DesignEnv] / userFiltersManualApplyMode[]применение пользовательских фильтров вручную, а не по мере ввода
dontShowCloseButtonOnInactiveTab[DesignEnv] / dontShowCloseButtonOnInactiveTab[]скрывает кнопку закрытия на неактивных вкладках

ColorTheme (светлая / тёмная / авто) переключается действием toggleColorTheme[], которое для текущей среды переходит светлая → тёмная → авто, применяет и обновляет форму. Режим закрепления навигатора переключается действием toggleNavigatorPinMode[].

Форма design редактирует оформление текущей среды (captionTheme[DesignEnv], captionSize[DesignEnv], captionNavbar[DesignEnv] и переключатели выше) и перезагружает клиент при применении, если изменилась настройка, требующая перезагрузки; showDesign[] открывает её плавающим окном. В окне system навигатора модуль добавляет пункты showDesign, toggleNavigatorPinMode и toggleColorTheme.

При инициализации веб-клиента onWebClientInit[STRING] регистрирует CSS- и JS-ресурсы клиента: набор Bootstrap и зависящие от размера таблицы отступов / шрифтов, когда выполняется useBootstrap[], либо обычные табличные стили в противном случае, а затем общие скрипты и стили виджетов. Ресурсы, лежащие под /onStarted/, подхватываются автоматически.

Исключения

Иерархия классов Exception фиксирует ошибки сервера и клиента. Exception — абстрактный корень, делящийся на ServerException и ClientException; клиентская ветвь уточняется дальше:

КлассМесто в иерархии
Exceptionабстрактный корень всех журналируемых исключений
ServerExceptionошибка на сервере
ClientExceptionошибка, сообщённая клиентом
WebClientExceptionошибка веб-клиента (: ClientException)
RemoteServerExceptionошибка удалённого сервера, сообщённая клиенту (: ClientException)
RemoteClientExceptionабстрактная база для исключений, поднятых на удалённом клиенте (: ClientException)
UnhandledExceptionнеобработанное исключение удалённого клиента (: RemoteClientException)
HandledExceptionабстрактная база для обработанных исключений удалённого клиента (: RemoteClientException)
FatalHandledExceptionфатальное обработанное исключение (: HandledException)
NonFatalHandledExceptionнефатальное обработанное исключение (: HandledException)
СвойствоЧто хранит
message[Exception]текст ошибки
date[Exception] / fromDate[Exception]момент возникновения как DATETIME / его DATE
erTrace[Exception]Java-стек
lsfStackTrace[Exception]lsFusion-стек
asyncStackTrace[Exception]асинхронный стек
type[Exception]имя типа исключения
javaStackTrace[Exception]сообщение и Java-стек, объединённые вместе
client[ClientException] / login[ClientException]компьютер клиента и логин, поднявшие ошибку
count[NonFatalHandledException]сколько раз свёрнуто повторяющееся нефатальное исключение
abandoned[NonFatalHandledException]было ли повторяющееся исключение заброшено

Исключения журналируются через @defineLog и показываются на форме exceptions, где цвета текста и фона выделяют нефатальные и разные клиентские / серверные виды.

Запуски

Класс Launch фиксирует каждый запуск сервера приложений.

СвойствоЧто хранит
computer[Launch]компьютер сервера; hostname[Launch] — его имя хоста
time[Launch]момент запуска как DATETIME; date[Launch] — его DATE
revision[Launch]версия платформы, версия API и ревизия запуска

currentLaunch[] хранит объект запуска работающего сервера. onStarted[] создаёт новый Launch, заполненный текущими компьютером, временем и версией, и устанавливает currentLaunch[]. Запуски журналируются через @defineLog и показываются на форме launches.

Подключения

Класс Connection фиксирует каждое подключение клиента. currentConnection[] — подключение текущего запроса.

СвойствоЧто хранит
computer[Connection]компьютер клиента; hostnameComputer[Connection] — его имя хоста
remoteAddress[Connection]удалённый IP-адрес клиента
headers[Connection, TEXT] / userAgent[Connection]заголовки запроса и заголовок User-Agent
cookies[Connection, TEXT] / sessionId[Connection]cookie и cookie JSESSIONID
params[Connection, TEXT, INTEGER] / params[Connection, TEXT]параметры запроса, индексированные и объединённые
user[Connection] / userLogin[Connection]подключённый пользователь и логин
osVersion[Connection] / processor[Connection] / architecture[Connection] / cores[Connection]ОС и оборудование клиента
physicalMemory[Connection] / totalMemory[Connection] / maximumMemory[Connection] / freeMemory[Connection]характеристики памяти клиента
javaVersion[Connection] / is64Java[Connection]версия Java клиента и признак 64-битности
screenWidth[Connection] / screenHeight[Connection] / screenSize[Connection] / scale[Connection]геометрия экрана и масштаб
clientType[Connection] / nameClientType[Connection]тип клиента (ClientType) и его название
connectionStatus[Connection] / nameConnectionStatus[Connection]статус подключения (ConnectionStatus) и его название
connectTime[Connection] / connectDate[Connection] / disconnectTime[Connection]моменты подключения и отключения
lastActivity[Connection] / lastActivity[CustomUser]момент последней активности подключения / пользователя

ClientType различает четыре вида клиента: nativeDesktop, nativeMobile, webDesktop, webMobile. Признаки по виду isNativeDesktop[Connection], isNativeMobile[Connection], isWebDesktop[Connection], isWebMobile[Connection] проверяют тип, а производные isDesktop[Connection], isMobile[Connection], isNative[Connection], isWeb[Connection] их объединяют (десктоп = нативный или веб-десктоп, нативный = нативный десктоп или мобильный, и т. д.). У каждого признака есть и форма для текущего подключения (isNativeDesktop[], isWeb[], …) над currentConnection[].

ConnectionStatus отслеживает жизненный цикл: connectedConnection, disconnectingConnection, disconnectedConnection. shutdown[Connection] помечает подключение как отключаемое и просит его клиент завершиться; shutdown[CustomUser] делает то же для всех подключений пользователя; reconnect[CustomUser] просит каждый подключённый клиент пользователя переподключиться. Подключения журналируются через @defineLog и показываются на форме connections, где также перечислены формы, сессии, заголовки, cookie и параметры подключения.

URL подключения

СвойствоЧто строит
origin[Connection]scheme://webHost:webPort подключения
webPath[Connection]origin плюс путь контекста
currentOrigin[] / currentWebPath[]origin / веб-путь currentConnection[] либо собственные значения запроса, когда подключения нет
currentOriginUrl[STRING] / currentOriginUrl[LINK]URL относительно текущего origin
currentContextUrl[STRING]URL относительно текущего веб-пути, с дописанным query подключения

Журнал сессий изменений

Класс Session фиксирует одну зафиксированную сессию изменений.

СвойствоЧто хранит
user[Session] / nameUser[Session] / nameContact[Session]пользователь, выполнивший сессию, и имена
dateTime[Session]момент фиксации, устанавливаемый при создании сессии
form[Session] / captionForm[Session]форма, с которой пришли изменения, и её название
connection[Session] / hostnameComputerConnection[Session] / userLoginConnection[Session]исходное подключение, его хост и логин
quantityAddedClasses[Session] / quantityRemovedClasses[Session] / quantityChangedClasses[Session]сколько объектов добавлено, удалено, изменено
changes[Session]текстовая детализация изменений

Сессии журналируются через @defineLog и показываются на форме changes, отфильтрованной по диапазону даты-времени. Расширения clearApplicationLog[] удаляют сессии старше countDaysClearSession[] и очищают детализацию изменений старше countDaysClearSessionDetail[].

Пинги

Запись пинга хранит замеры памяти по компьютеру за интервал, с ключом (Computer, DATETIME from, DATETIME to).

СвойствоЧто хранит
pingFromTo[Computer, DATETIME, DATETIME]длительность пинга за интервал
minTotalMemoryFromTo[…] / maxTotalMemoryFromTo[…]минимальная / максимальная общая память за интервал
minUsedMemoryFromTo[…] / maxUsedMemoryFromTo[…]минимальная / максимальная использованная память за интервал

limitPing[], limitMaxTotalMemory[] и limitMaxUsedMemory[] задают пороги предупреждений; свойства …Sum суммируют время, проведённое выше каждого порога, а свойства average…DateFrom дают взвешенные по времени средние за диапазон. Форма pings показывает замеры по компьютеру, оборудование компьютера, взятое из последнего подключения, а также пороги и средние. countDaysClearPings[] задаёт, сколько дней записей пинга хранить; расширение clearApplicationLog[] удаляет более старые.

Push-уведомления и взаимодействие с клиентом

Свойство / действиеЧто делает
pushPublicKey[] / pushPrivateKey[]пара ключей VAPID для web push, заполняемая на первом запуске
subscription[Connection]подписка подключения на web push
notify[JSON, JSON]показывает уведомление на клиенте текущего подключения
push[Connection, JSON, JSON]проталкивает уведомление на клиент подключения
pushNotify[Connection, JSON, JSON]проталкивает и показывает уведомление сразу
notification[STRING, JSON] / notification[STRING]строит JSON уведомления из заголовка и опций
action[INTEGER] / action[STRING]строит JSON действия из идентификатора уведомления или URL
share[STRING, STRING, STRING] / shareAction[STRING]делится URL через диалог клиента, с откатом на всплывающее копирование ссылки
evalServer[TEXT]выполняет переданный код на сервере
evalInAllCurrentConnections[TEXT, TEXT]выполняет переданный код на каждом подключённом клиенте

customize[STRING, STRING] открывает диалог customizeForm для настройки формы: базовый код и код EXTEND FORM, хранимый в dataExtendCode[Form] (для всех пользователей) и dataExtendCode[Form, User] (для текущего пользователя). formCustomizeBackground[] и formCustomizeShowIf[] подкрашивают и показывают пункт настройки.

Логотип

logo[] — изображение логотипа навигатора; logoAction[] — пункт навигатора с логотипом, показывающий текущую версию и пользователя. Модуль размещает logoAction в окне logo навигатора.

Язык

  • Заголовок модуля — синтаксис MODULE / REQUIRE, подключающий модуль.
  • Оператор ABSTRACT — абстрактные списки действий, которыми объявлены обработчики событий запуска.
  • Оператор WHEN — обработчики событий, реагирующие на изменения оформления и запускающие перезагрузку или изменение размера клиента.

Связано

  • System modules — общий список модулей платформы.
  • События запуска — концепция событий запуска; объявленные этим модулем обработчики жизненного цикла (onStarted, onWebClientStarted, …) живут там.
  • Журналы и логи — системные журналы, которые наполняет этот модуль (исключения, запуски, подключения, сессии, пинги).
  • Монитор процессов — мониторинг работающих подключений и активности сервера.
  • Навигатор — пункты навигатора, которые добавляет этот модуль (логотип, оформление, журналы).
  • Service — служебные действия и мониторинг базы данных.
  • Reflection — метаданные о навигаторе, формах и свойствах.
  • Authentication — пользователи, контакты и вход.