Сохраняемые в потоковую БД события доменов солюшена

Путь расположения

Путь в сборочном каталоге Описание

/era_env/priv/metadata/<SOLUTION>/events/events.json

Дескриптор состава классов и типов событий (events.json)

/era_env/priv/metadata/<SOLUTION>/events/<EVENT_CLASS>/<EVENT_TYPE>.json

Дескриптор полей событий типа

Обзор

Набор ассетов осуществляющих фильтрацию событий и состава их полей между генерацией в системе и сохранением в потоковую БД домена соответствующего солюшена.

На основе файлов метаданных:

  • автоматически формируется структура событийной потоковой БД домена, создаются схемы, таблицы, столбцы указанных типов;

  • осуществляется фильтрация генерируемых событий, сохраняемых в потоковую БД вплоть до полного отсутствия;

  • фильтруется состав полей генерируемых событий для сохранения в БД ограниченного их числа.

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

Недоступно для мастер-домена (предопределенный солюшен master), поскольку для него существует собственный набор событий.

Дескриптор состава классов и типов событий (events.json)

Список классов событий и содержащихся в них типов событий, подлежащих сохранению в событийную потоковую БД домена соответствующего солюшена.

Каждому из перечисленных в списке классов событий в папке events должен соответствовать отдельный каталог, внутри которого для каждого типа событий этого класса должен присутствовать файл, описывающий состав полей события, подлежащих сохранению в БД.

Формат:
[
  {
    "class": str,
    "events": array<str>
  },
  ...
]
  • class – имя класса событий.

  • events – список имен типов событий, входящих в класс.

Пример events.json

Перечисляет все классы событий рабочих доменов и входящие в них типы событий

Пример:
[
  {
    "class": "alertcallevents",
    "events": [
      "prepared",
      "statechanged",
      "callinited",
      "callfailed",
      "callstarted",
      "callrejected",
      "callpreanswered",
      "callanswered",
      "callapproved",
      "callfinished"
    ]
  },
  {
    "class": "statesevents",
    "events": [
      "user_state_changed"
      "sipuser_state_changed",
      "sipuser_transtate_set"
    ]
  },
  {
    "class": "scriptevents",
    "events": [
      "script_start",
      "script_stop"
    ]
  },
  {
    "class": "providerevents",
    "events": [
      "provider_state_changed"
    ]
  },
  {
    "class": "ivrhuntqevents",
    "events": [
      "queue_greeting",
      "queue_dequeue",
      "queue_userban",
      "queue_enqueue",
      "queue_quit",
      "queue_preivr_start",
      "queue_start_call",
      "final"
    ]
  },
  {
    "class": "selectorevents",
    "events": [
      "sel_create",
      "sel_update",
      "sel_delete",
      "sel_state_changed",
      "sel_abon_state_changed",
      "sel_voting_state_changed"
    ]
  },
  {
    "class": "perfmonevents",
    "events": [
      "server_performance",
      "node_performance"
    ]
  }
]

Дескриптор полей событий типа

Каталог класса событий. Именуется названием класса. Содержит внутри файлы-дескрипторы по всем типам событий класса, их полей и типов значений в БД. Имена файлов соответствуют именам типов событий.

Формат:
{
  "class": str,
  "type": str,
  "fields": [
    {
      "name": str,
      "type": "varchar" | "bigserial" | "timestamp" | "uuid" | "integer",
      "required": true | false
    },
    ...
  ]
}
  • class – название класса событий (дубликат имени каталога).

  • type – название типа событий (дубликат имени файла).

  • fields – список сохраняемых в БД полей (суть структура таблицы):

    • name – название поля события и одновременно столбца в таблице БД.

    • type – тип значения столбца в таблице БД.

    • required – признак обязательности поля (по умолчанию false).

    • default – значение по умолчанию (для полей с required = false)

Пример

Пример файла для типа событий statesevents.sipuser_state_changed, расположение /statesevents/sipuser_state_changed.json.

Пример
{
  "class": "statesevents",
  "type": "sipuser_state_changed",
  "fields": [
    {"name": "id", "type": "bigserial", "required": true},
    {"name": "login", "type": "varchar", "required": true},
    {"name": "state", "type": "varchar", "required": true},
    {"name": "sys_iscopied", "type": "boolean", "default": false},
    {"name": "sys_copyid", "type": "bigint"},
    {"name": "eventts", "type": "timestamp", "required": true}
  ]
}