Willhöft IT-Beratung
  • Zur Startseite
  • Zum Blog-Archiv
08. Jul 2016

GUIDE - Generic UI Dispatcher of Events

Wir stellen unsere UI-Lösung zur eleganten und einfachen Realisierung asynchroner Web-Seiten vor, inklusive einer Beispiel-Applikation auf Basis der Bosch SI inubit BPM Suite. Den anschaulichen Screencast finden Sie am Ende des Beitrags.

Das Problem

In unseren Projekten sehen wir uns zunehmend neuen Anforderungen gegenüber:

  • Web-Oberflächen ersetzen native Anwendungen.
  • Diese werden auch zum Monitoring und zur Steuerung kritischer Geschäftsprozesse eingesetzt.
  • Es wird eine zuverlässige, sofortige Rückmeldung von Ereignissen erwartet.
  • Potentiell greifen auf die Anwendungen viele Clients parallel zu.

Wenn sich Serverseitig ein Zustand ändert, ein Fehler auftritt oder eine neue Nachricht eintrifft, dann soll dieses Ereignis zeitgleich in allen geöffneten Browser-Fenstern angezeigt werden. Wenn sich ein Zustand erneut ändert, soll dies zeitgleich nachvollzogen werden. Es gibt verschiedene Ansätze diese Anforderungen programmatisch anzugehen. Aber gerade bei BPM- und Integrations-Lösungen wie dem Inubit IS möchte man möglichst keine Spezialkomponenten entwickeln.

In diesem Blog-Post stellen wir vor, wie GUIDE die Probleme der traditionelle Ansätze Pull und Idle-Wait umgeht ohne die Business-Logik Ihrer Anwendung zu verkomplizieren.

Pull-Ansatz

Beim Pull-Ansatz fragt die Web-Seite regelmäßig den aktuellen Zustand beim Server an. Typischerweise, in dem Teile der Seite neu geladen werden. Sind mehrere Browser verbunden, vervielfachen sich Anfragen und Antworten.

Die Probleme dieses Ansatzes werden schnell offensichtlich:

  • Der Zustand wird nicht sofort, sondern nur in regelmäßigen Abständen aktualisiert. Für eine zeitnahe Darstellung müssen häufiger Abfragen gemacht werden.
  • Auch wenn gar keine Änderung vorliegt, wird sowohl Client-, als auch des Serverseitig, viel unnötige Last erzeugt.
  • Bei jeder Anfrage werden alle Ist-Zustände ermittelt, obwohl meistens nur die Änderungen von Interesse sind.
  • Die Last steigt proportional zu Anzahl der Clients und Häufigkeit der Abrufe.
  • Die Gefahr besteht, dass die erzeugte Last die Verarbeitung von kritischen Geschäftsprozessen blockiert.

Long-Poll / Idle-Wait

Ein eleganterer Weg ist der Idle-Wait oder auch Long-Poll genannte Ansatz. Der Ansatz funktioniert wie folgt: Der Web-Browser fragt nach neuen Ereignissen beim Server an. Der Server gibt jedoch nicht wie üblich schnellstmöglich eine Antwort zurück, sondern wartet, bis tatsächlich ein neues Ereignis eintritt. Die Netzwerkverbindung wird solange gehalten. Erst dann gibt er eine Antwort mit dem Ereignis zurück und der Browser fragt sofort erneut an.

Der Ansatz basiert auf einem sehr eleganten Trick. Für einen zuverlässigen Betrieb müssen aber einige Randbedingungen berücksichtigt werden: So kann der Browser nicht unterscheiden, ob ein Netzwerkfehler aufgetreten ist oder beim Server bloß noch kein Ereignis vorliegt. Es muss sichergestellt werden, dass Ereignisse nicht verloren gehen, auch wenn sie genau zwischen zwei Anfragen auftreten oder tatsächlich ein Netzwerkfehler auftritt.

Die Berücksichtigung dieser Randbedingungen gestaltet die Umsetzung relativ komplex. Für jede gehaltene Netzwerkverbindung wird, je nach Server-Backend-Technologie, darüber hinaus jeweils ein Thread belegt. Speziell auf inubit-Backends sind Threads jedoch Lizenz- und damit kostenpflichtig und ihre Belegung konkurriert mit der Verarbeitung anderer, evtl. geschäftskritischer, Prozesse.

Mit GUIDE stellen wir eine Komplettlösung für diese Probleme vor.

GUIDE

Auf Basis unserer Projekterfahrung haben wir den Generic UI Dispatcher of Events (GUIDE) als eigenständige Komponente entwickelt, die zwischen Server und Clients vermittelt. Ereignisse, die auf dem Server eintreten leitet dieser an den GUIDE-Dispatcher weiter und GUIDE übernimmt die sichere und effiziente Verteilung an alle authorisierten Browser.

Durch diesen Ansatz ergeben sich folgende Vorteile:

  • Die Last-Problematik und Ressourcen-Beschränkungen der vorangehenden Ansätzen werden vermieden.
  • Als eigenständige, spezialisierte Komponenten ist GUIDE für mehrere hundert parallele Browser-Verbindungen ausgelegt. Im Bedarfsfall können diese leicht auf mehrere Instanzen verteilt werden.
  • Serverseitig besteht minimaler Implementationsaufwand. Ereignisse werden einfach über eine REST-Schnittstelle an GUIDE übergeben.

GUIDE ist aus dem Kontext von inubit-Projekten entwickelt worden, lässt sich aber genauso einfach in andere Tomcat Enterprise Anwendung integrieren, sowie als eigenständige Applikation oder mit anderen BPM- bzw. Web-Backends verwenden.

Wie ein Einsatz an einem konkreten Beispiel auf Basis der inubit BPM-Suite aussieht, sehen Sie im nachfolgenden Screencast.

Screencast: Chat-Applikation mit inubit Workflows

Ihr Webbrowser unterstützt leider keine Video-Wiedergabe. Klicken sie hier um das Video herunterzuladen.

Impressum



Telefon:
Telefax:
E-Mail:

Vertreten durch

Registereintrag

Registergericht:
Registernummer:

Umsatzsteuer-ID
USt.-Identifikationsnummer 
gemäß §27a USt.-Gesetz:

Angaben zur Berufshaftpflichtversicherung
Name und Sitz der Gesellschaft:


Geltungsraum der Versicherung: