Przeszukaj Bazę wiedzy po słowach kluczowych
Jasper
Przygotowywanie raportów Jasper
Do utworzenia raportu należy użyć TIBCO Jaspersoft Studio w wersji 6.10. Mirror: TIB_js-studiocomm_6.10.0_windows_x86_64.exe
Tworzenie adaptera danych JSON
Jako źródło danych raport otrzymuje plik JSON wygenerowany w WMS, przykładowy plik wraz z raportem znajduje się w katalogu workera WMS: WorkflowWorkerAlpolWMSERPXL\Docs\JasperTemplates
Utwórz nowy projekt w Jaspersoft Studio
File → New → Project… → Jaspersoft Studio → JasperReports Project → Podaj nazwę projektu → Next
Następnie należy dodać źródło danych, w tym celu przejdź do zakładki Repository Explorer (1)
Jeśli zakładka nie jest widoczna można ją włączyć za pomocą
Window → Show View → Other… -> JasperReports → Repository Explorer → Open
Widoczne będą wszystkie aktualnie dostępne adaptery, w celu utworzenia nowego adaptera dla nowego pliku JSON należy prawym klawiszem myszy kliknąć w Data Adapters (2) i wybrać opcję Create Data Adapter
Wybierz typ JSON File i zatwierdź przyciskiem Next
Uzupełnij nadaj dowolną nazwę dla nowego adaptera (1) oraz wskaż ścieżkę do pliku JSON klikając przycisk File (2) upewnij się, że opcja Create data source using this expression jest zaznaczona, i zatwierdź przyciskiem Finish (3)
Przygotowywanie raportu Jasper
Utwórz nowy raport Jasper
File → New → Jasper Report → Blank A4 →
Wybierz z listy uprzednio utworzony projekt (1), nadaj nazwę raportowi (2) i przejdź do następnego kroku (3)
Wybierz z listy Data Adapter uprzednio utworzony adapter dla pliku JSON (1), po wybraniu źródła zostaną wyświetlone dostępne pola, wybierz klikając dwukrotnie pozycję objectData (2) i przejdź do następnego kroku (3)
Przenieś wymagane pola z kolumny Dataset Fields do Fields za pomocą oznaczonych przycisków, w następnym kroku możliwe jest wybranie pól do grupowania, jednak nie jest to wymagane, zatwierdź nowy raport za pomocą przycisku Finish
Dostosowywanie źródła danych
W celu poprawnego zaczytania raportu przez WMS musi on posiadać poprawnie skonfigurowane pola danych.
Dwuklikiem otwórz raport z listy
Na dole aplikacji przejdź do widoku projektowania
Otwórz okno dialogowe DataSet and Query editor dialog
Wyczyść pola w tabeli Fields (1) zaznaczając je i klikając przycisk Delete lub klawisz Del
Dwuklikiem wybierz wymagane pole z list (2), w oknie zostanie wypisana pełna ścieżka do wartości np. objectData.Name
Kliknij prawym klawiszem myszy na wcześniej zaznaczony element listy (2) i wybierz opcję Add node as field
Zauważ, że w tabeli pojawiło się nowe pole wraz z podaną ścieżką w Field expression, w przypadku zmiennej posiadającej zbiór danych, do elementów można odnosić się poprzez indeks np: objectData.BinaryData[0].FileContentUrl
- Field Name – która będzie używana w każdym oknie dialogowym w Jaspersoft Studio
- Class Type – typ klasy z języka Java. Najczęściej używana i ustawiania domyślnie wartość to java.lang.String, zaleca się jej używanie do wszystkich pól które chcemy „wydrukować do pdf” niezależnie czy dane pole będzie reprezentować liczbę całkowitą, czy zmienna przeciekową. Inne typy klas używane są do konkretnych kontrolek, czy ekspresji
- Field Expression – dokładna ścieżka do której dane pole (z poziomu Jaspersoft Studio) odwołuje się do pola w json
Powtórz czynność dla wszystkich wymaganych przez raport pól
Uzupełnianie raportu
Wszystkie dodane pola znajdują się, w zakładce Outline → Fields
Jeśli zakładka nie jest widoczna można ją włączyć za pomocą
Window → Show View → Other… -> General → Outline → Open
Wybrane pola można przeciągać na raport, co automatycznie utworzy powiązanie z odpowiednim polem w pliku JSON
Pola można też tworzyć ręcznie za pomocą zakładki Palette z prawej strony okna programu, należy wtedy ręcznie przypisać pole do wartości, umożliwia to jednocześnie lepsze dostosowanie wartości pól
Dla przykładu pole TextField:
Przejdź do konfiguracji Text Field (1) w zakładce Properties, otwórz edytor ekspresji (2) i skonfiguruj swoje zapytanie, np:
$F{Name} + "(" + $F{Code} + ")"
spowoduje wypełnienie pola następującym tekstem dla przykładowego pliku JSON: Grabie ogrodnicze (GRABIE_OGR)
Utworzona ekspresja widoczna jest w polu tekstowym (3)
Zdjęcia
- Jeżeli zdjęcie jest w postaci URL to wystarczy dodać ekspresję kontrolki do pola
$F{objectData.BinaryData.FileContentURL}
, typjava.lang.String
- Jeżeli zdjęcie jest w base64 to musimy polączyć kod java z ekspresją do pola
new java.io.ByteArrayInputStream(java.util.Base64.getDecoder().decode($F{organizationImageBase64}))
,typjava.lang.String
Tablica obiektów
Aby wyświetlić tablicę obiektów w postaci tabeli należy dla przykładowego pliku json:
{ "objectData": { "DocumentNumber": "WZ/1243/07/2023", . . . }, "FooterContent": "(Status 7)", "Items": [ { "Lp": 1, "Code": "WIDLY", "Name": "Widły uniwersalne", "Ean": "978020137962", "Quantity": 1, "QuantityRealized": 1, "UnitCode": "szt" }, { "Lp": 2, "Code": "GRABIE", "Name": "Grabie ogrodowe", "Ean": "978020137962", "Quantity": 2, "QuantityRealized": 1, "UnitCode": "szt" } ] } }
Dodać do raportu element „Table”:
W kreatorze wybieramy kolejno: „Create a Table using new dataset”:
Wybieramy „Create new dataset…” i wpisujemy jego nazwę:
Zaznaczamy jeden z elemntów tablicy którą chcemy wyświetlić:
Wybieramy pola, któe będą używane w wierszach tabeli:
Wybieramy „Use JRDatasource expression” i wpisujemy wyrażenie (podmieniając ścieżkę do naszej tablicy):
((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource(„objectData.Items„)
Wybieramy kolumny, które będą wyświetlać się w tabeli:
Ustawiamy ewentualne formatowanie tabeli i wygląd:
Tabela jest gotowa. Klikając na tabelę możemy edytowąć jej układ, ukryć nagłowki, ustawić szerokość kolumn itp.
Zapis raportu gotowego dla WMS
WMS wymaga raportu w postaci pliku *.jasper, Jaspersoft Studio pracuje z plikiem *.jrxml i należy go skompilować
w tym celu należy kliknąć przycisk Compile Report w prawym górnym rogu okna widoku projektowania
W katalogu z projektem zostanie utworzony plik *.jasper, który należy wczytać do WMS
Obsługa Jasper w WMS
Wydruki generowane są za pomocą zapytań FaaS i wymagają do poprawnego działania skonfigurowanego adresu URL oraz tokenu na AlpolWF.Configuration wpisy:
- FaasAuthToken
- FaasMainUrl
WMS rozpoznaje czy używać wydruków CrystalReport czy Jasper po nazwie wydruku, jeśli nazwa zawiera w sobie słowo jasper zostanie on użyty do wydruku