Skip to main content

Jak działa optymalizacja raportu tabelarycznego od strony administracyjnej?

Ten artykuł opisuje techniczny przebieg optymalizacji uruchamianej z górnego paska raportu tabelarycznego przyciskiem Optymalizuj.

Materiał jest przeznaczony dla administratorów technicznych, SLA i serwisu. Jeśli potrzebujesz krótkiego wyjaśnienia dla twórcy raportu, zacznij od artykułu Co oznacza „Wymaga optymalizacji” w raporcie tabelarycznym?.

Co uruchamia przycisk Optymalizuj

Po kliknięciu Optymalizuj frontend raportu wysyła do backendu żądanie optymalizacji konkretnego raportu.

Backend pobiera definicję raportu i sprawdza, z jakiego procesu albo procesów korzysta raport. Następnie wylicza pola potrzebne do działania raportu.

Do tej listy trafiają między innymi:

  • pola widoczne w raporcie,
  • pola użyte w filtrach,
  • pola użyte w sortowaniu,
  • pola użyte w filtrach agregacji i KPI.

System porównuje tę listę z konfiguracją danych indeksowanych procesu. Jeżeli raport używa istniejących pól, których nie ma jeszcze w tej konfiguracji, backend dopisuje je do listy pól przygotowywanych do danych indeksowanych.

Co zmienia optymalizacja

Optymalizacja aktualizuje konfigurację danych indeksowanych procesu, czyli PrcIndexedDataConfig, i ustawia status indeksowania procesu na Pending.

To ważne rozróżnienie:

  • system nie dodaje nowych pól do procesu,
  • system nie zmienia formularza,
  • system nie zmienia definicji raportu,
  • system nie modyfikuje danych biznesowych w sprawach.

Zmienia się lista istniejących pól procesu, które mają być uwzględniane w danych indeksowanych używanych później przez raportowanie.

Który job wykonuje przeliczenie

Właściwe przeliczenie wykonuje job ProcedureIndexing.

W konfiguracji jobów jest zarejestrowany jako:

  • jobName: ProcedureIndexing,
  • jobClass: AMODClasses.Jobs.ProcedureIndexingJob,
  • domyślny harmonogram: co 5 minut.

Samo kliknięcie Optymalizuj nie przebudowuje synchronicznie wszystkich danych indeksowanych w ramach żądania użytkownika. Kliknięcie przygotowuje konfigurację i ustawia proces do obsłużenia przez job.

Jak przebiega praca joba

Job ProcedureIndexing cyklicznie szuka procesów ze statusem indeksowania Pending.

Dla każdego takiego procesu wykonuje kolejno:

  1. ustawia status na InProgress,
  2. generuje dane indeksowane dla spraw tego procesu,
  3. po poprawnym zakończeniu ustawia status Completed,
  4. w razie błędu ustawia status Failed.

Frontend raportu odświeża status optymalizacji i pokazuje użytkownikowi odpowiedni komunikat: oczekiwanie, optymalizowanie, zoptymalizowane albo błąd.

Co sprawdzić, gdy raport długo czeka na optymalizację

Jeżeli użytkownik kliknął Optymalizuj, a raport przez dłuższy czas pokazuje oczekiwanie, sprawdź:

  • czy job ProcedureIndexing jest aktywny,
  • czy działa usługa albo scheduler wykonujący joby,
  • czy w tabeli jobów harmonogram joba nie jest zatrzymany,
  • czy proces ma status Pending, InProgress albo Failed,
  • czy użytkownik miał uprawnienia do modyfikacji procesu,
  • czy konfiguracja danych indeksowanych procesu została zaktualizowana o pola wymagane przez raport.

Najczęstszy scenariusz diagnostyczny jest prosty: kliknięcie ustawiło proces do optymalizacji, ale job nie przetworzył kolejki. Wtedy raport pozostaje w stanie oczekiwania, dopóki job nie zostanie uruchomiony i nie zakończy przeliczenia.

Co sprawdzić przy błędzie optymalizacji

Jeżeli status przechodzi na błąd, sprawdź:

  • logi modułu danych indeksowanych,
  • logi joba ProcedureIndexing,
  • konfigurację danych indeksowanych procesu,
  • pola raportu wskazane w komunikacie Wymaga optymalizacji,
  • uprawnienia użytkownika, który uruchomił optymalizację.

Błąd oznacza, że proces został skierowany do optymalizacji, ale przeliczenie danych indeksowanych nie zakończyło się poprawnie.

Wpływ na inne raporty

Optymalizacja dotyczy danych indeksowanych procesu, a nie wyłącznie pojedynczego raportu. Jeżeli inne raporty korzystają z tego samego procesu i tych samych pól, mogą skorzystać z tej samej konfiguracji.

Zakres korzyści zależy od tego, które pola zostały dodane do konfiguracji danych indeksowanych i które raporty z nich korzystają.

Powiązane artykuły