Skip to main content

Reporting Service

Maxime avatar
Written by Maxime
Updated over 4 months ago

Serwis odpowiadający za gromadzenie danych w czasie rzeczywistym i odkładanie ich do zewnętrznych baz.

Możliwe jest połączenie Reporting Service'u zarówno z bazą SQL jak i noSQL. (w zależności od raportu i ustaleń)

Odkładane dane są zbierane przez Reporting Service z eventów gromadzonych na szynie RabbitMQ.

Dedykowane są kolejki, na które podczas normalnych agregacji klientów wpadają eventy, które następnie są procesowane przez serwis.

image-20201019-135646.png

Te zdarzenia odpowiadają normalnym eventom, które po przeprocesowaniu są odkładane w tabelach biznesowych, z tą różnicą że tworzenie raportów nie obciąża aplikacji.

Zdarzenia która są zaciągane do raportów odpowiadają np:

  • Tworzenie użytkownika

  • Kasowanie użytkownika

  • Utworzenie zgody

  • Potwierdzenie zgody

  • Kasowanie zgody

  • Inwalidacja zgody

  • Utworzenie sesji

  • Zmiany statusów sesji

  • Pobieranie i procesowanie kont

  • Pobieranie i procesowanie transakcji

  • Pobieranie i procesowanie szczegółów transakcji

Tworzenie raportów jest niezależne od procesowania danych biznesowych i nie działa wstecz, tj. nie można zrobić raportu z danych historycznych (sprzed wprowadzenia Reporting Service’u).

Raporty odpowiadają danym biznesowym w pozostałych tabelach, nakładają one jednak abstrakcje na dane, dzięki czemu można je w dowolny sposób modyfikować.

Dane bez warstwy abstrakcji odkładane są w bazie z prefixem reporting

image-20201019-140152.png

Warstwa abstrakcji nałożona jest poprzez widoki na te tabele.

image-20201019-140229.png

Konfiguracja:

  • Polega na zaciągnięciu nowych obrazów dla Reporting Service'u, zdefiniowania odpowiednich konfiguracji w docker-compose i .env (dostarczane z paczką) oraz zdefiniowaniu połączenia do bazy:

- ReportingSqlDbConfig__ConnectionString=${REPORTING_SQL_CONNECTION_STRING}

REPORTING_SQL_CONNECTION_STRING= adres SQL

  • Wywołaniu migracji w kontenerze Reporting Service, który spowoduje utworzenie odpowiednich baz curl -XPOST -H 'Host: localhost' -H 'X-Tenant-Id: placeholder' -H 'Execution-id: placeholder' -H "Content-type: application/json" -d '{}' 'http://localhost/api/database/update'

Did this answer your question?