Skip to main content.

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 

Realisierung einer Reportinglösung für den Aussendienst auf Open-Source-Basis

MEX-Reports ist eine sehr interessante und leistungsfähige Offline Reporting Lösung, welche ich an dieser Stelle nur grob skizzieren kann, weitere Details sind unter http://reports.clemens-kraus.de zu finden.

Ziel

Für mehrere hundert Aussendienstmitarbeiter werden Umsatz- und Absatzstatistiken auf Excel-Basis benötigt, die täglich verteilt werden sollen.
Die Reports sollen flexibel einstellbar sein ("dynamische Reports") und mit einer zuverlässigen serverbasierten Lösung kostengünstig auf Open-Source-Basis realisiert werden.

Für diese hohen Anforderungen gibt es tatsächlich eine praxiserprobte (!) und sehr leistungsfähige Lösung, die ich hier kurz vorstellen möchte.
Sie heisst MEX-Reports und basiert auf der Jakarta POI-Library.

Features

Datenmenge

MEX-Reports kann mit sehr grossen Datenmengen umgehen. Wer sich schon einmal mit Business Intelligence (BI) Themen beschäftigen musste weiss, dass vor allem hier die Probleme liegen.
Unter Standardbedingungen kommt es schon zu erheblichen Datenmengen.

Beispiel:

  • Ein Aussendienstmitarbeiter (ADM) hat max. 50 Kunden,
  • an die er mehrere Produkte verkauft.
  • Zu seinen Berichtsjahreszahlen will er zusätzlich die Vorjahreszahlen als Vergleichsbasis sehen.
  • Jeder ADM benötigt 10 "Standardberichte".
  • Die Standardberichte sollen aber auch flexibel veränderbar sein, d.h. es sollen Filter gesetzt werden können und das Berichtslayout soll veränderbar sein.
  • Das hat zur Folge, dass jeden Tag die "tiefste Ebene" (alle Kunde - Produkt Kombinationen) für alle ADMs erzeugt werden muss, auf dem Server kommt es schnell zu langen Laufzeiten und pro ADM können mehrere Megabyte an Daten entstehen!

Performanz

Die Lösung ist hoch performant und stark skalierbar, durch Erhöhung der Parallelitätsgrades kann die Verarbeitungsgeschwindigkeit gesteigert werden.

Robustheit

Dieser Punkt ist im Grunde selbstverständlich, die Erfahrung zeigt aber, dass dem oft nicht so ist. Gute Ergebnisse wurden mit Unix/Linux-basierten System erzielt.

Einfache Anpassbarkeit und Erweiterbarkeit

Änderungen in den Berichten sollten problemlos und schnell durchführbar sein. Das gleiche gilt für neu hinzugekommene Felder (Kennzahlen, Merkmale).

Kosten

Der Einsatz von kommerziellen Produkten ist oft mit sehr hohen Lizenzkosten verbunden. Lizenzgebühren fallen bei der Open Source Lösung nicht an.

Standards

Dadurch dass Standards verwendet werden, entfällt die Einarbeitung in proprietäre Lösungen. Viele Kollegen in den IT-Abteilungen kennen Java, XML und SQL.
keine kommerzielle Lösung verfügbar
Momentan ist mir keine kommerzielle Lösung bekannt die die gleiche Funktionalität bietet und ebenso ausgereift ist wie die hier vorgestellte Lösung!

"Zutaten"

Die wichtigste Komponente stellt die Java Bibliothek POI dar. Sie wurde im Apache Jakarta Projekt entwickelt und erlaubt es Excel-Dateien unter Linux zu lesen und zu schreiben.
Um die POI-Library wurde einige kleinere Java-Klassen entwickelt, die wiederum von Shell-Scripts aufgerufen werden.
Mit den erzeugten Excel-Files werden Excel-Makros mitverteilt - diese müssen voher natürlich mit Excel erstellt werden.

Architektur

Excel reports with POI

Funktionsprinzip

  • auf dem Server:
    Für jeden ADM werden eine oder mehrere Ausgangsdateien (raw files) mit einer festen Satzstruktur erwartet. Aus diesen Dateien werden über ein Shell-Script, welches ein Java-Programm aufruft, mit Hilfe der POI-Library Excel-Dateien erzeugt.
    In csv-Dateien werden die Metainformationen zu den raw files und den Berichten hinterlegt. Ein Java-Programm (CreateMeta.java) erzeugt aus den csv-Metainformationen ein kleines Repository, auf welches bei der Excel-Datei Erzeugung zugegriffen wird.
    Die erzeugten Dateien werden dann gezippt und per Mail verschickt.
  • auf dem Client:
    ... werden die Excel-Dateien zuerst entpackt. Beim ersten Aufruf der Datei startet automatisch die Makroverarbeitung und erzeugt alle Berichte, die auf diese Excel-Datei zugreifen.
    Nach ca. 1 Minute stehen alle Reports zur Verfügung. Der Aufruf der Excel-Dateien erfolgt über eine zentrale Startdatei (index.xls), dort sind auch Verweise auf die Dokumentation etc. hinterlegt.
    Alle Excel-Reports werden über das Makro als Pivot-Tabellen erzeugt. Nur mit ihnen hat man die volle Flexibilität, die man für das geforderte dynamisch Reporting benötigt!
    Die Berichte wurden so erstellt, dass auch ungeübte Anwender damit arbeiten können, es ist kein KnowHow in Bezug auf Pivot Tabellen erforderlich!

Beispiele / Screenshots

sind hier zu finden

 


Erweiterungsmöglichkeiten

Durch seine einfache, klare Architektur ist das System in vielerlei Hinsicht erweiterbar:

  • Durch Änderung der Makroprogramme auf dem Client können schnell neue Berichte erzeugt werden.
  • Statt ASCII-Datei als Eingabeformat sind natürlich auch SQL-Selects direkt auf eine Datenbank oder csv-Dateien möglich.
  • Die Laufzeiten können durch noch stärkere Parallelisierung nochmals verkürzt werden (dazu muss nur ein Variablenwert im Shell-Script verändert werden), die Systemlast steigt dann bis auf 100%. Eine weitere Steigerung ist dann nur noch über zusätzliche Prozessoren oder schnellere Prozessoren möglich.
  • Ferner ist es möglich persönliche Filtereinstellungen pro Report in einer csv-Datei abzuspeichern, damit können sog. "Persönliche Berichte" realisiert werden.
  • Es kann eine Reportvariante für Vertriebsleiter erstellt werden, welche weniger Informationen beinhaltet (z.B. kann die Materialnummer weggelassen werden).
  • Selbstverständlich es es auch möglich mit dieser Lösung auch andere Formate als Excel zu erzeugen, s. POI-Dokumentation. (Wenn auf POI ganz verzichtet wird sind auch Lösungen denkbar, die OpenOffice Datei-Formate erzeugen.)

Download

Die Sourcen können von http://reports.clemens-kraus.de/download.html downgeloaded werden.

Beschreibung

Da die detaillierte Beschreibung der Reporterstellung mit MEX-Reports relativ umfangreich ist, habe ich mich entschlossen ein eigenes Handbuch zu diesem Thema zu erstellen. Sie können es hier bestellen.

Kommentar schreiben


Sicherheitscode
Aktualisieren