PDA

View Full Version : jfreereport



testors
08-24-2007, 02:33 AM
Ich habe mal ein paar einfache Fragen.

1. Kann man jfreereport auch so nutzen, dass keine Datenbankanfragen von jfreereport getätigt werden, sondern per Datenstrom und XML Dokuments (Report Layout) ein PDF erzeugen ?

2. Kann man die XML Dokumente per Oberfläche "designen" ?

Zu 1. welches jfreereport sollte man nutzen ? Das allerneueste oder reicht die Version 0.8.7 ?

Danke testors

testors
08-24-2007, 03:56 AM
Soviel ich bisher gelesen habe, gibt es nur die Möglichkeit Daten aus eine Datenbank mittels SQL Anfragen zur Report Generierung heran zu ziehen.

Nehmen wir an, ich habe bereits eine andere Instanz die dies für mich erledigt. D.h. ich möchte nur die schon aufbereiteten Daten aus der DB als Datenstrominput für jfreereport nutzen. jfreereport soll also nicht selbst die DB abfragen. Ist dies bisher überhaupt so vorgesehen oder nicht ?

Momentan weiss ich nicht, wie das Swing TableModel interface aufgebaut ist.
Schau es mir später noch an!

ingo.klose
08-24-2007, 04:33 AM
Hallo,

grundsätzlich sollte das gehen, da im Rahmen der Pentaho BI-Suite im Normalfall die Datenerzeugung und die Reportausführung getrennt sind. Zur Reportgenerierung wird nur ein Resultset an JFreeReport übergeben.

Allerdings kann ich Dir nicht sagen, wie das genau geht, wenn Du JFreeReport stand alone nutzt.

Taqua
08-24-2007, 04:41 AM
Hi,


1. Kann man jfreereport auch so nutzen, dass keine Datenbankanfragen von jfreereport getätigt werden, sondern per Datenstrom und XML Dokuments (Report Layout) ein PDF erzeugen ?
also JFreeReport (wir nennen es nun aber Pentaho Reporting Engine Classic, damit JFree.org und Pentaho sauber getrennt sind) bis einschließlich 0.8.7 hatte keine eigenen Abfrage-Fähigkeiten. Die Daten wurden (passend sortiert) als TableModel übergeben und die Engine arbeitete damit.

Ab 0.8.8 (eine Bug-Farm, nicht nutzen, besser 0.8.9, das ist das nächste stabile Release (in ein paar Wochen)) haben wir SubReports eingeführt. Für Subreports braucht die Engine zwingend eine Möglichkeit, die Daten selbst abzufragen sowie diese Abfrage auch zu parametrisieren. Die Engine fragt die Daten über die jeweilige DataFactory ab. Das DataFactory Interface ist ein einfaches interface, das Parameter und den QueryString entgegen nimmt und ein fertiges TableModel zurückliefert.

Wir liefern 4 Implementationen mit:

* SQL - Feuert eine SQL-Abfrage an die Datenbank und wrapt das ResultSet in ein TableModel.
* HQL - Feuert eine HQL Abfrage an ein konfiguriertes Hibernate.
* Beans - Nutzt Java-Reflection um statische oder nicht-statische Methoden aufzurufen. Erwartet, das die instanziierte Klasse entweder ein TableModel ist oder die angegebene Methode ein TableModel zurückliefert.
* Tables - Nicht parametrisierte Datenquelle, die ein einfaches Mapping zwischen query-namen und vorkonfigurierten TableModels liefert. Das ist quasi identisch mit dem Verhalten von 0.8.7.

Bis auf eine einziges Demo, laufen alle unsere Demos ohne Datenbank.



Momentan weiss ich nicht, wie das Swing TableModel interface aufgebaut ist.
Schau es mir später noch an!


Wir haben das TableModel interface gewählt, weil es einfach zu implementieren ist und bei jedem Java-Buch behandelt wird. (zB im immer wieder empfehlenswerten Java ist auch eine Insel (http://www.galileocomputing.de/openbook/javainsel6/javainsel_14_018.htm#Xxx1001474).)


2. Kann man die XML Dokumente per Oberfläche "designen" ?

Ja, der Pentaho Report-Designer macht das.

Vieleicht noch ein Wort zu unserer Design-Philosophie: Pentaho Reporting Classic ist eine waschechte embedded Engine - wir machen so gut wie keine Annahmen über die Programme, in denen sie läuft. Die Abhängigkeiten sind minimal, mit etwa 8MB für die vollständige Engine sind wir auch (gemessen an den anderen Report-Engines) genügsam im Platz (und je nach dem welche Features nicht gebraucht werden, kann man das ganze auf bis zu 3,5-4MB kürzen). Die UI ist weitgehend anpassbar - also wenn die Dialoge unpassend hässlich sind, ist es kein Problem diese mit ein paar Anpassungen an der Konfiguration auszutauschen. However, wenn sie unerträglich hässlich sind, wäre es keine schlechte Idee uns das zu sagen. Als Programmierer sind wir vom Schicksal verdammt, fast nur hässliche Benutzeroberflächen zu erzeugen.


Und nun die entscheidene Frage: Welche Version? Das ist einfach: Die neueste (das ist 0.8.9-pre9, die Pentaho-interne Download-Seite ist wieder mal nicht mehr aktuell).
http://sourceforge.net/projects/jfreereport

Have fun,
said Thomas

testors
08-24-2007, 06:27 AM
fürs erste mal genügend, aber trotzalledem muss ich noch eine Frage stellen.

Kann man Pentaho Classic - dem Generator - Daten per Parameter übergeben oder nicht ? Quasi wie bei einem shell command:

ls -la

Würde mich freuen wenn es das könnte, denn dann käme es bei dem Projekt woran ich grad sitz, auch zum Einsatz.

Würde bedeuten, der Report Designer und Report Generator würden zum einsatz kommen. Schön wäre natürlich, beide standalone zu haben, da sich der Designer nur ums Aussehen kümmert und der Generator nur um das PDF.


Markus

Taqua
08-24-2007, 06:45 AM
Die Engine ist kein Standalone tool. Sie ist eine reine Library, und liefert auch keine CLI Umgebung mit. Es ist jedoch jederzeit möglich, Parameter zu übergeben, die dann als zusätzliche Felder in der Datenquelle auftauchen. Diese Parameter können auch verwendet werden, um die erste Abfrage zu parametrisieren.



JFreeReport report; // created elsewhere
report.setReportProperty ("Your-parameter-name", (Object) yourParameterValue);


Have fun,
said Thomas

testors
08-24-2007, 07:42 AM
es kann eine beinahe Dynamisierung im Bezug der Objekte stattfinden, die hinterher auf dem Report zu sehen sind, aber nicht die eigentlich Daten.

Bsp:
1> So glaub ich funktioniert es beim Report bei euch bislang (grom umrissen), wie Du es oben beschrieben hast (so hab ich es verstanden, und falls falsch, dann bitte so einfach wie möglich erläutern - abstraktes Denken in Worte fassen ist nicht leicht verständlich für den Verstehenden )

Container<-(SQL->DB)
Objects->Container
LayoutXML->Container->Output[Format:PDF]


2> Würde mir das so vorschweben (ebenfalls grob dargestellt)
ohne Datenbankabfrage

Streaminput->Container
LayoutXML->Container->Output[Format:PDF]

Container ist quasi der Reportgenerator mit allem was intern passiert.

Ist 2> möglich oder nicht ?

Taqua
08-24-2007, 08:16 AM
Also SQL oder Datenbanken sind und waren niemals Zwang. Die Engine akzeptiert alles an Daten was ihr über eine geeignete DataFactory implementation übergeben wird. Also: Implementiert den Code der den Datenstrom liest, schiebt alles in ein TableModel und gebt dass der Engine (über eine geeignete Implementierung) zu kauen. Dann läuft es auch mit Nicht-SQL Daten.

Aber: Die Engine iteriert mehrmals über die Daten - eine reine Single-Pass Verarbeitung geht nicht, da die Engine eventuell Werte berechnen soll (sowas wie prozente über die Summe einer Gruppe) oder Seitenumbrüche berechnen muss. Die Engine wird mindestens 3 Mal über die Daten wandern (Compute Values, Paginate/Compute Layout, Content-Generation).

testors
08-24-2007, 08:26 AM
Was brauch ich alles um den Report Generator und den Layout Designer auf einem System benutzen zu können ?

Ohne das komplette System von Pentaho zu benutzen ?

- Tomcat
- report libary

was vom Designer Wizard ?