RCP UI und Framework

Ein großes österreichisches Dienstleistungsunternehmen im Bereich Logistik beauftragt eine unternehmensweite Software Lösung, das die Entscheidungsträger bei der Optimierung der Auftragszuteilung unterstützt. Die grafische Aufbereitung des geplanten und aktuellen Geschehens auf verschieden granularen Ebenen ist dabei ebenso Thema wie die Kommunikation mit den Mitarbeitern vor Ort.

Umfeld

Im Unternehmen ist eine hauseigene Lösung für eine Logistik Software geplant, das die beteiligten Personen beim Treffen ihrer Entscheidungen unterstützt. Jede handelnde Person hat dabei immer alle notwendigen Daten lokal auf ihrem Rechner, um gegen kurzzeitige Netzwerk Ausfälle immun zu sein. Die Daten werden laufend über ein eigenes Netzwerk Protokoll repliziert.

Ein wichtiger Aspekt beim Design der Software ist das grafische User Interface. Es soll den verschiedenen beteiligten Personen eine für sie optimale Sicht auf den für sie relevanten Teil des Unternehmensdatenmodells gewähren. Diese nicht-funktionale Anforderung folgt aus dem Umstand, dass die Software auch unter großem Stress möglichst fehlerfrei bedient werden kann.

Das Unternehmensdatenmodell ist sehr komplex und vor allem sehr umfangreich. Es kommen daher generische und generative Ansätze bei der Erstellung des User Interface in Betracht.

Parallel zum User Interface Teil wird eine Service Schicht entwickelt, die die fachliche Logik und Persistenz beinhaltet.

Die Entwicklung des Benutzer Interfaces erfolgt auf Basis der Eclipse Rich Client Plattform. In einer ersten Ausbaustufe werden nur Windows PCs und Linux Server unterstützt. Es ist aber auch zu beachten, dass Tablets und ähnliche Geräte einmal zum Einsatz kommen werden und bei Architekturentscheidungen wird darauf Rücksicht genommen.

Ziele des Projekts

Ziel ist die Entwicklung der grafischen Benutzeroberfläche für diese Software.

Nicht Teil dieses Projekts ist die Entwicklung der fachlichen Service Layer. Naturgemäß ist eine umfangreiche Kommunikation mit diesem Projekt Team erforderlich und gewährt auch tiefere Einblicke in die dortige Architektur.

Projektumfang

Da dieses Projekt sehr umfangreiches ist, beschränkt man sich am Anfang auf die Umsetzung der Kernfunktionalität, die im Anschluss Zug um Zug erweitert wird.

Ein erster wichtiger Schritt ist das Kennenlernen der bisherigen Arbeitsabläufe im Gespräch mit den Mitarbeitern des Unternehmens und die Abbildung dieser als Usecases. Im Anschluss daran werden UI Prototypen skizziert, im Dialog weiter verfeinert und schließlich umgesetzt.

Die Umsetzung wird durch die Verwendung des Eclipse RCP Frameworks und ein paar anderen Fremd-Komponenten sehr erleichtert. Es zeigt sich jedoch, dass diese nicht alle Probleme zufriedenstellend lösen.

Insbesondere der große Umfang des Datenmodells und die immer wiederkehrenden Implementier Tätigkeiten führen zur Entwicklung eines Framework, dass das Entwicklungsteam von diesen Tätigkeiten befreit.

Ein paar Eckpunkte dieses Frameworks sind:

  • Es leistet das Mapping zwischen Business Modellen und dem UI Klassen
  • Es kann auf verschieden granulare Weise verwendet werden. Hier ein Auszug:
    • Generische Dialoge durch bloße Angabe einer Klasse.
    • Bestimmte Dialogtypen (Create, Edit, Search, ...) können durch Felder und/oder Dialog Bausteine parametrisiert werden.
    • Teile von Dialogen (Listen, Suchfilter, Eingabe/Anzeige Composites) können auch anderswo verwendet werden.
    • Das Mapping zwischen Modell und UI kann auch ohne die Verwendung der Dialoge wiederverwendet werden.
    • Eine kleine Widget Library rundet das ganze ab.
  • Es validiert Felder und ganze Dialoge
  • Es können Eingabe- Edit- und Suchdialoge ganz einfach deklarativ erstellt werden.
  • Es baut auf den Elementen von Eclipse SWT und JFace auf und verwendet keine anderen kostenpflichtigen Libraries.
  • Es vereinfacht die Abhängigkeiten der Plug-Ins untereinander, die es verwenden.
  • Es ist unter Verwendung des Extension Point Mechanismus vielfältig erweiterbar
    • Es können eigene Widgets integriert werden
    • Es können Images auf Basis des Business Modells einmal registriert werden, die dann an den verschiedenen Stellen in den Dialogen und Views angezeigt werden.
    • Es unterstützt verschiedene Business Modell Typen.
  • Es unterstützt beim Erstellen von Kontext Menus