VK GRC logo
Обновлена 19 августа 2026 г. в 10:16

Шина событий

Шина событий — это архитектурный компонент, через который различные части системы обмениваются сообщениями о произошедших фактах (событиях), не зная друг о друге напрямую. Модуль-писатель (publisher) публикует событие «в шину», а модуль-подписчик (subscribers/consumers) читает его, чтобы получить новые данные.

Хранение данных

«Очередь» событий различных модулей GRC перед перекладыванием их в Kafka-топики хранится в схеме event_bus в таблице outbox.

Системные события

Ниже приведен перечень событий, которые попадают в шину событий:

Модуль системы

Наименование события

Кодовое обозначение события

Модуль пользовательских скриптов

Событие о старте ПС

grc.user_scripts.script.started.v1

Событие о завершении ПС

grc.user_scripts.script.finished.v1

Конструктор пользовательских сущностей

Событие о создании экземпляра пользовательской сущности

grc.custom_entities.КОД_СУЩНОСТИ.created.v1

Событие об изменении экземпляра пользовательской сущности

grc.custom_entities.КОД_СУЩНОСТИ.updated.v1

Событие об удалении экземпляра пользовательской сущности

grc.custom_entities.КОД_СУЩНОСТИ.deleted.v1

PTMS

Событие об инициализации экземпляра процесса

grc.ptms.instance.initialized.v1

Событие о старте исполнения экземпляра процесса

grc.ptms.instance.started.v1

Событие по завершению исполнения экземпляра процесса

grc.ptms.instance.finished.v1

Событие по запросу на прерывание исполнения экземпляра процесса

grc.ptms.instance.cancelled.v1

Структура события

Наименование

Тип данных

Описание

event_id

UUID v4

Уникальный идентификатор

event_name

UUID v4

Название события. Генерируется согласно следующему шаблону:

"grc." + outbox.module + "." + outbox.entity + "." + outbox.event_type + "." + outbox.version (берется значение мажорной части полной версии события). Например:

grc.user_scripts.script.started.v3

event_version

string

Версия события.

В текущей реализации для системных событий версия всегда 1.0

timestamp

datetime

Дата и время возникновения события

payload

json

Полезные данные события. Передаваемые данные отличаются в зависимости от модуля, в котором происходит событие

Payload события

Ниже приведено описание полезных данных события, передаваемых в структуре сообщения. Передаваемые данные отличаются в зависимости от модуля системы.

Модуль пользовательских скриптов

Наименование

Тип данных

Описание

code

string

Код пользовательского скрипта

comment

string

Комментарий

arguments

json

Аргументы, с которыми был запущен ПС

run_id

int

Идентификатор запуска

source

string

Источник:

  • async — ручной асинхронный запуск (в том числе через PTMS).
  • scheduler — по расписанию.
  • sync — ручной синхронный запуск

status

string

Статус события:

  • IN_PROGRESS — событие запущено;
  • SUCCESS — завершено успешно;
  • ERROR — завершено с ошибкой;
  • BLOCKED — исполнение остановлено (скрипт был не активен is_active = false);
  • TIMEOUT — закончилось время на исполнение.

meta_data

json

Метаданные PTMS

Конструктор пользовательских сущностей

Наименование

Тип данных

Описание

entity_code

string

Код пользовательской сущности

entity_before

string

поля и их значения экземпляра до события. В случае события создания поле остается пустым

entity_after

json

Поля и их значения экземпляра после события. В случае события удаления поле останется пустым

PTMS

Наименование

Тип данных

Описание

instance_id

int

Идентификатор экземпляра процесса