Общее описание
Общая структура модули отчетов
Отчеты логически (не физически) разделены на следующие категорий:
- Конструктор отчетов
- Создание/изменение витринных таблиц
- Заполнение витринных таблиц
- Materialized view
- Генерация отчетов
Конструктор отчетов
Данная категория отвечает за создание шаблона отчетов
Общая логика: создается черновик шаблона отчетов, внесутся изменения, и после применения создается KafkaReport
Какие интерфейсы используются:
1) ORDraftRegister
2) ORGroupRegister
3) OperativeReportRegister
Создание/изменение витринных таблиц
Данная категория отвечает за создание/изменение витринных таблиц
Витринные таблицы используются как база данных для materialized view
Общая логика: определенные консьюмеры слушают изменения KafkaBo и меняют структуру витринных таблиц
Какие интерфейсы используются:
1) ORStandTablesRegister
2) ORStandTablesWorker
3) ORStandTableDDLRegister
Какие консьюмеры используются:
1) OperativeReportStandTablesConsumer
Заполнение витринных таблиц
Данная категория отвечает за заполнение витринных таблиц
Общая логика: определенные консьюмеры слушают изменения KafkaBoi и заполняют витринные таблицы
Какие интерфейсы используются:
1) ORStandTablesRegister
2) ORFieldStrategy
Какие консьюмеры используются:
1) OperativeReportStandTablesConsumer
Materialized view
Данная категория отвечает за создание материализованной вьюшки и за актуальность ее данных
Общая логика: определенные консьюмеры слушают изменения KafkaReport и пересоздают (создают) материализованные вьюшки
Стратегия обновления данных (refresh): После пересоздания (создания) материализованной вьюшки refresh НЕ вызывается.
При первичном запросе на получение данных с вьюшки делается refresh (только если до этого не делался)
Информация о refresh-е (когда последний раз view рефрешился) хранится в ReportMetaInfoDto (коллекция в монго)
Данные во всех view обновляются каждые n минут.
n указывается в OperativeReportRefreshConfig.viewActualTime() (в zookeeper-е)
Какие интерфейсы используются:
1) ORMaterializedViewRegister
2) ORMaterializedViewCoRegister
3) ORRefreshRegister
Какие консьюмеры используются:
1) OperativeReportConsumer
На данный момент НЕ поддерживается:
1) CO (Составной объект)
Генерация отчетов
Данная категория отвечает за генерацию отчета (как для показа, так и в виде файла)
Общая логика: при генерации отчета идет запрос на materialized view и данные показываются в нужном формате (в виде preview или в виде файла)
Какие интерфейсы используются:
1) OperativeReportRegister
2) ORFileRegister
3) ORView