Opis modułu

Moduł zawiera zestaw funkcji wspomagających tworzenie raportów.

Moduł raportowy wspomaga tworzenie dużych raportów poprzez możliwość gromadzenia generowanych danych w pliku tymczasowym na dysku maszyny, na której uruchomiona jest instancja jPalio generująca raport. Generowane raporty mogą mieć dowolny typ, zarówno tekstowy jak i binarny: txt, csv, html, xls itd. Raporty mogą być generowane z opóźnieniem w stosunku do momentu zlecenia (np. w czasie mniejszego obciążenia serwera). Moduł jest przystosowany do współpracy z bazą danych Oracle.

Raport jest wykonywanym na żądanie obiektem jPalio generującym dowolną treść. Generowana treść jest sukcesywnie dołączana do bufora za pomocą funkcji append. Po wykonaniu obiektu bufor przechowujący treść raportu jest zapisywany do obiektu typu BLOB w tabeli r_orders i ew. od razu kompresowany. Treść skompresowana jest zapisywana do osobnego pola BLOB niż treść nieskompresowana. Wewnątrz obiektu generującego może być zapisany dowolny algorytm: zapytanie sql, kilka zapytań, kombinacja zapytań i przetwarzania w jpalio (świetnie się sprawdza przy robieniu raportów zliczeniowych) itd.

Do modułu dołączony jest gotowy interfejs html tworzony poprzez wywołanie funkcji $report.createOrReplaceHtmlInterface(). Służy on do administracji typami raportów oraz zlecania nowych i pobierania treści gotowych raportów. Więcej informacji na ten temat zawiera rozdział Interfejs html.

Każde zlecenie na raport w r_orders posiada pole stanu (z wartością ze słownika w tabeli r_states) i dodatkowe flagi określające status zlecenia. System zarządzający raportami (interfejs html modułu) na podstawie tych flag wyświetla listę dostępnych raportów i umożliwia użytkownikom pobranie wygenerowanych raportów - w celu generacji linków w innych miejscach aplikacji można użyć funkcji reportURL i compressedReportURL.

Wszystkie funkcje operujące na raportach (wykonujące, kompresujące i obcinające) są zabezpieczone przed jednoczesnym operowaniem na tym samym raporcie, można więc uruchomić jednocześnie kilka zadań wykonujących raporty (w ramach tej samej instancji jPalio) bez obawy wykonania tego samego zlecenia kilkukrotnie.

Położenie tabel modułu raportowego jest określone za pomocą konektora o nazwie zdefiniowanej w parametrze connector_name deklaracji modułu w pliku konfiguracyjnym instancji. Jeśli żaden konektor nie jest określony, moduł odwołuje się do tabel przez standardowy konektor data.

Dzięki możliwości umieszczenia danych raportów w miejscu określonych konektorem oraz dzięki możliwości przypisania typów raportów do określonych kategorii typów (tabela r_categories), można stworzyć system raportowy dla wielu usług (instancji jpalio), umieszczony na jednej maszynie, na której każda usługa zapisywałaby własne raporty (własne w sensie przynależności do kategorii przypisanej usłudze), udostępniane nastepnie w jednolity sposób użytkownikom. Wykonanie raportów z różnych instancji może być bezkonfliktowe dzięki wykorzystaniu funkcji executeFirstReport wykonującej pierwszy w kolejce raport należący danej kategorii.