BIRT
Wprowadzenie Dwa prawa zarządzania: What you don’t know hurts you. What is not on paper has not been said.
Wprowadzenie Po co jest Eclipse?
BIRT Business Inteligence and Reporting Tools Dystrybucje http://www.eclipse.org/birt/phoenix Dystrybucje Pluginy do Eclipse’a (UM) RCP Runtime
Budowa BIRT i ODA Eclipse BIRT ODA
ODA Runtime
ODA Designer Nie zapomnij uruchomić perspektywy DTP, dodać tam przykładowego data source’a i wyeksportować do zewnętrznego pliku.
BIRT - architektura Report Design Engine Eclipse Report Designer Web Custom Report Designer Report Design Engine Report(design)
BIRT architektura design data XML Report Engine HTML Generation PDF Chart Engine design HTML Report Engine Generation Presentation PDF data
Start Report Design Perspective New Report project New Report Template Library
Master Page Master Page Palette Grid Label Image Properties Preview
Master Page
Źródła danych
Źródła danych
Zbiór danych
Ale to za mało…
Pierwszy raport DnD źródło danych Usunąć zbędne kolumny Zmienić nazwy w pozostałych
Formatowanie
Kto tu rządzi?
Agregacja
Pytania
DB – nowy raport Najpierw dodajemy źródło, potem zbiór danych
DB Na raport Usunąć zbędne kolumny Zmienić nazwy
Grouping & Agg Agregacja z palety
Merge & Gr. Act. Shift zaznacza Trzeba wybrać komórki, nie kontrolki Highlight
Parametry
Filtrowanie Uaktywniamy tabelke Zakładka filtrowanie Bo poprzedni slajd do tylko okienko, trzeba to powiązać jakoś, to jeden sposób
Modyfikacja zapytań Parametr dla raportu (stare powinny być usunięte) Modyfikacja zapytania
Wykres Nowe Data Set select CLASSICMODELS.CUSTOMERS.COUNTRY, CLASSICMODELS.CUSTOMERS.CREDITLIMIT from CLASSICMODELS.CUSTOMERS Interval wiąże kategorie Można zrobić Dnd z Data preview
Wykres Nie zapomnijcie o zapewnieniu dużo miejsca dla wykresu, bo się nie wyrenderuje poprawnie
Data Cube & Cross Tab Dane są reprezentowane w postaci macierzy Baza jest co najmniej dwuwymiarowa Wymaga stworzenia Data Cube’a
Pytania
RCP 1 Pierwszy raport (korzystamy z xml’a) Tworzymy plugin Hello World Zależności org.eclipse.birt.report.viewer org.eclipse.birt.report.engine.emmiter.html org.eclipse.birt.report.engine.emmiter.pdf org.eclipse.birt.report.engine.emmiter.prototype.ex cel org.eclipse.birt.report.oda.data.xml Run & Test
RCP 1 Inne wywołania WebViewer.display( "c:/birtApp/firstreport.rptdesign", WebViewer.HTML, false); Inne wywołania Report Format Browser Servlet name Params allowPage Report – ścieżka do raportu Format HTML, PDF, itp Browser – instancja przeglądarki, w której ma się wyświetlić wynik Servlet name – jeżeli korzystamy z innego niż defaultowy servletu generującego raport. Params – parametry przekazywane do raportu.
RCP 1 - rezultat
Pytania
RCP 2 Nowy raport Skryptowe źródło danych
RCP 2 Źródło na stronę Script -> open: counter = 0; Script -> close: counter = null; Script -> fetch: if(counter < source.size()){ temp = source.get(counter); row["id"] = temp[0]; row["firstname"] = temp[1]; row["lastname"] = temp[2]; row["boss"] = temp[3]; counter ++; return true; } return false; Musi być wybrany data set
RCP 2 Źródło danych w aplikacji public class DataSourceProvider { public static List<Object[]> getSampleData(){ List<Object[]> list = new ArrayList<Object[]>(); list.add(new Object[]{"1","Jan", "Weglarz","1"}); list.add(new Object[]{"2","Lukasz", "Olek","1"}); list.add(new Object[]{"3","Krzysztof", "Daniel","2"}); list.add(new Object[]{"4","Jacek", "Pospychala","2"}); return list; } Osobny plugin
RCP 2 Zależności ui, runtime (standardowe) DataSource org.eclipse.birt.report.engine org.eclipse.birt.report.engine.emmiter.pdf Można reużyć hello world
RCP 2 EngineConfig config = new EngineConfig(); config.setProperty("source", DataSourceProvider.getSampleData()); PDFRenderOption options = new PDFRenderOption(); options.setOutputFormat("pdf"); options.setOutputFileName("d:/test.pdf"); Konfiguracja
RCP 2 Inicjalizacja Platform.startup(config); IReportEngineFactory factory = (IReportEngineFactory) Platform .createFactoryObject( IReportEngineFactory. EXTENSION_REPORT_ENGINE_FACTORY ); engine = factory.createReportEngine(config);
RCP 2 wywołanie IReportRunnable report = engine.openReportDesign ("d:/scripted.rptdesign"); IRunAndRenderTask task = engine.createRunAndRenderTask(report); task.setRenderOption(options); task.run();
RCP 2 Sprzątanie } finally { if (engine != null) { engine.destroy(); } Platform.shutdown();
RCP 2 A może html? HTMLRenderOption options = new HTMLRenderOption(); options.setOutputFormat("html"); options.setOutputFileName("d:/test.html");
RCP 2 Rezultat
Pytania