Excel2Web: Self Contained Web Apps mit Vaadin und Jetty

von Michael Kanis

Für interne Workflows werden nach wie vor häufig Tabellenkalkulations-Programme wie Excel verwendet, selbst dann wenn Excel-Sheets der Aufgabe nicht mehr gewachsen sind. Ein wichtiger Grund dafür dürfte sein, dass maßgeschneiderte Anwendungen für interne Abläufe häufig zu teuer erscheinen. Dabei können entsprechende Business-Applikationen mit den richtigen Werkzeugen schnell erstellt werden und dann Monat für Monat Aufwand sparen. Eine Amortisation ist somit schon nach kurzer Zeit möglich.

Für einen Kunden haben wir zur Verbesserung betriebsinterner Abläufe eine Web-Applikation mit Vaadin entwickelt, die vollständig self contained als "fat jar" ausgeliefert und gestartet werden kann.

Das vorliegende Business-Intelligence-System extrahiert eine Vielzahl von Attributen aus verschiedenen Quellen im Web. Dabei kommt es immer wieder zu Problemen da die zugehörigen Webcrawler an Änderungen der entsprechenden Websites angepasst werden müssen. Um eine grobe Übersicht über die Qualität der jeweils aktuellen Daten zu erhalten, werden diese quantitativ mit den Vormonats-Daten verglichen. Dabei kommen bei dem Kunden bisher Kapow-Robots zum Einsatz, welche im Wesentlichen SQL-Abfragen ausführen und eine Excel-Datei erzeugen. Diese enthält zu verschiedenen Attributen die Anzahl der gefundenen Objekte auf einer Website im aktuellen Monat und den zugehörigen Vergleichswert aus dem Vormonat. Den Vergleich führt anschließend aktuell ein Mitarbeiter manuell durch.

Um das umständliche manuelle Verfahren zu vereinfachen und zu beschleunigen, haben wir für den Kunden eine Web-Applikation entwickelt, mit welcher die Abfragen online ausgeführt werden können.

Altes Excel-Sheet (Daten anonymisiert)
Vaadin-Webapp (Daten anonymisiert)

Als Grundlage dient uns das Vaadin-Framework, mit dem sich sehr schnell ansprechende und moderne Rich Internet Applications entwickeln lassen. Damit beim Kunden keine aufwendige Installation nötig wird, haben wir uns entschieden, die Applikation als ausführbare JAR-Datei mit allen nötigen Abhängigkeiten (sog. "fat jar") zu deployen. Dabei enthält die Anwendung auch die Jetty Servlet Engine, um vollständig selbstständig lauffähig zu sein.

Ein solches JAR lässt sich u. a. mit Gradle und dem Shadow Plugin erstellen:

apply plugin: "com.github.johnrengelman.shadow"

jar {
    manifest {
        attributes('Main-Class': 'com.exensio.MyVaadinApplication',
                'Built-By': System.getProperty('user.name'),
                'Build-Jdk': System.getProperty('java.version'),
                'Implementation-Title': project.name,
                'Implementation-Version': project.version,
                'Implementation-Vendor-Id': project.group)
    }
}

Um den eigentlichen Anwendungsserver kümmert sich dann der folgende Code in der main-Methode der Klasse MyVaadinApplication:

final Server server = new Server(HTTP_PORT);

final ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS);
server.setHandler(handler);

final ServletHolder servletHolder = handler.addServlet(VaadinServlet.class, "/*");
servletHolder.setInitParameter("UI", MyVaadinUI.class.getName());

if (isProductionMode()) {
 servletHolder.setInitParameter("productionMode", "true");
}

server.start();
server.join();

Wichtig dabei ist, für den ServletContextHandler bei dessen Instanziierung die Unterstützung für Sessions (ServletContextHandler.SESSIONS) zu aktivieren, da Vaadin ohne diese nicht lauffähig ist.

Selbstverständlich berät exensio Sie gern auch bei der Ablösung Ihrer Excel-Workflows durch einfach zu bedienende (Web-)Applikationen.

Zurück

© 2006-2024 exensio GmbH
Einstellungen gespeichert

Datenschutzeinstellungen

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, während andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.

Sie können Ihre Einwilligung jederzeit ändern oder widerrufen, indem Sie auf den Link in der Datenschutzerklärung klicken.

Zu den gesetzlichen Rechenschaftspflichten gehört die Einwilligung (Opt-In) zu protokollieren und archivieren. Aus diesem Grund wird Ihre Opt-In Entscheidung in eine LOG-Datei geschrieben. In dieser Datei werden folgende Daten gespeichert:

 

  • IP-Adresse des Besuchers
  • Vom Besucher gewählte Datenschutzeinstellung (Privacy Level)
  • Datum und Zeit des Speicherns
  • Domain
You are using an outdated browser. The website may not be displayed correctly. Close