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:
- ustawia status na
InProgress, - generuje dane indeksowane dla spraw tego procesu,
- po poprawnym zakończeniu ustawia status
Completed, - 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
ProcedureIndexingjest 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,InProgressalboFailed, - 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ą.
