Herzlich willkommen auf dem Blog der exensio GmbH

exensio ist ein unabhängiges Software-Unternehmen von erfahrenen IT Beratern und Architekten. Zu unseren Kunden zählen namhafte deutsche Großunternehmen.

exensio verbessert das Kommunikations- und Informationsmanagement von Unternehmen. Auf Basis sinnvoller und zweckmäßiger Technologien erarbeiten wir flexible und übergreifende Lösungen für webbasierte Informationssysteme. Abhängig von den Kundenanforderungen realisieren wir Web Applikationen sowie Lösungen auf Basis von Web Content Management- und Portalsystemen. Integrativ, wirtschaftlich und anwenderfreundlich!

Hier gelangen Sie zur exensio GmbH.

Mittwoch, 9. Dezember 2015

Excel2Web: Self Contained Web Apps mit Vaadin und Jetty

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.

Keine Kommentare:

Kommentar veröffentlichen