Dynamische Datenabfrage und leichtgewichtige Visualisierung

Die Macht der Bilder

János Vona


Datenauswertung ist ein wichtiges Thema. Wenn man nach Business Intelligence (BI) „yahoot“, „bingt“ oder googelt, findet man viele professionelle Lösungen. Natürlich braucht es kein SAP Business Objects, um unsere Daten auszuwerten. Aber eine gewisse Komplexität haben unsere Daten trotzdem. Am Anfang genügte es, eine HTML-Seite zu haben, die die Zahlen in einer einfachen Tabelle darstellte. Es gab aber keine Möglichkeit, komplexere Daten zu visualisieren. Einige Zeit später kam die Anforderung, die Businessdaten „Management-like“ zu präsentieren. Das heißt: Einerseits gab es eine gewisse Datenkomplexität (mehrdimensionale Daten), anderseits erhöhte Anforderungen zur Visualisierung. Es führte also kein Weg vorbei an einer Restrukturierung des Codes und der Entkopplung der zwei Funktionen. Damals gab es noch kein HTML5 oder Google Charts [1] und Co., deshalb wurde zuerst nach einer anderen Lösung gesucht. Wenn man zu dieser Zeit im JEE-Bereich grafische Auswertungen von Kennzahlen darstellen wollte, ist man zwangsläufig auf JFreeChart [2] gestoßen. JFreeChart ist eine Open-Source-Java-Bibliothek, mit der man mit wenig Programmieraufwand Charts, 3-D-Bars, Pies usw. erstellen kann. JFreeChart ist unter LGPL lizensiert, welche die kommerzielle Benutzung ohne weitere, große Beschränkungen zulässt.

JFreeChart erstellt von den Daten zuerst ein Bild (.png), das man in eine HTML-Seite einbetten kann. Diese Funktionsweise ist leider sehr statisch, und ohne das Bild ständig neu zu erzeugen, lässt es keine Interaktion zu. Um etwas mehr Interaktion zu ermöglichen, habe ich eine bestehende Erweiterung von JFreeCharts an meine Anforderungen angepasst. Die Erweiterung heißt Eastwood [3] und ist von der Funktion her ähnlich wie Google Charts. Wenn man bei Wikipedia nach Google Charts API sucht, findet man auch Eastwood als Open-Source-Variante. Ich habe also ein HttpServlet geschrieben, das nach Benutzereingabe das entsprechende Bild generiert und dieses mit dem HttpResponse zurückliefert. Meine Seite sieht man in Abbildung 1. Sie sieht zwar immer noch nicht sehr schick aus, aber man konnte seine Kennzahlen auswählen und zusätzliche Darstellungsmerkmale definieren (Anzahl der dargestellten Elemente, Diagrammtyp, Beschriftung usw.). Die Arbeit mit JFreeChart ist kinderleicht. Man kann auf die vorimplementierten Klassen zugreifen, die nur mit Daten gefüttert werden müssen. In Listing 1 sieht man, wie einfach JFreeChart-Objekte mithilfe von einem ChartFactory erstellt werde...

Dynamische Datenabfrage und leichtgewichtige Visualisierung

Die Macht der Bilder

János Vona


Datenauswertung ist ein wichtiges Thema. Wenn man nach Business Intelligence (BI) „yahoot“, „bingt“ oder googelt, findet man viele professionelle Lösungen. Natürlich braucht es kein SAP Business Objects, um unsere Daten auszuwerten. Aber eine gewisse Komplexität haben unsere Daten trotzdem. Am Anfang genügte es, eine HTML-Seite zu haben, die die Zahlen in einer einfachen Tabelle darstellte. Es gab aber keine Möglichkeit, komplexere Daten zu visualisieren. Einige Zeit später kam die Anforderung, die Businessdaten „Management-like“ zu präsentieren. Das heißt: Einerseits gab es eine gewisse Datenkomplexität (mehrdimensionale Daten), anderseits erhöhte Anforderungen zur Visualisierung. Es führte also kein Weg vorbei an einer Restrukturierung des Codes und der Entkopplung der zwei Funktionen. Damals gab es noch kein HTML5 oder Google Charts [1] und Co., deshalb wurde zuerst nach einer anderen Lösung gesucht. Wenn man zu dieser Zeit im JEE-Bereich grafische Auswertungen von Kennzahlen darstellen wollte, ist man zwangsläufig auf JFreeChart [2] gestoßen. JFreeChart ist eine Open-Source-Java-Bibliothek, mit der man mit wenig Programmieraufwand Charts, 3-D-Bars, Pies usw. erstellen kann. JFreeChart ist unter LGPL lizensiert, welche die kommerzielle Benutzung ohne weitere, große Beschränkungen zulässt.

JFreeChart erstellt von den Daten zuerst ein Bild (.png), das man in eine HTML-Seite einbetten kann. Diese Funktionsweise ist leider sehr statisch, und ohne das Bild ständig neu zu erzeugen, lässt es keine Interaktion zu. Um etwas mehr Interaktion zu ermöglichen, habe ich eine bestehende Erweiterung von JFreeCharts an meine Anforderungen angepasst. Die Erweiterung heißt Eastwood [3] und ist von der Funktion her ähnlich wie Google Charts. Wenn man bei Wikipedia nach Google Charts API sucht, findet man auch Eastwood als Open-Source-Variante. Ich habe also ein HttpServlet geschrieben, das nach Benutzereingabe das entsprechende Bild generiert und dieses mit dem HttpResponse zurückliefert. Meine Seite sieht man in Abbildung 1. Sie sieht zwar immer noch nicht sehr schick aus, aber man konnte seine Kennzahlen auswählen und zusätzliche Darstellungsmerkmale definieren (Anzahl der dargestellten Elemente, Diagrammtyp, Beschriftung usw.). Die Arbeit mit JFreeChart ist kinderleicht. Man kann auf die vorimplementierten Klassen zugreifen, die nur mit Daten gefüttert werden müssen. In Listing 1 sieht man, wie einfach JFreeChart-Objekte mithilfe von einem ChartFactory erstellt werde...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang