Deutsch English

Architektur Datenbank Client-Module XML-Module XML-Panel Features Beispiel Warenwirtschaft

Architektur des Aviantes-Business-Application-Frameworks für Java

Das Aviantes-Business-Application-Framework dient zur einfachen Erstellung von komplexen Business-Applikationen auf der Basis des Three-Tier-Models in der Programmiersprache Java. Das Framework besteht somit aus einer Server- und einer Client-Komponente. Dazu wird dann mindestens eine externe Datenbank angebunden.

Client-Server Architektur des Aviantes-Business-Application-Frameworks

Server

Die Server-Komponente hat keine Oberfläche und kann durch Verwendung von Wrapper-Klassen in verschiedenen Umgebungen eingesetzt werden. Eine Wrapper-Klasse zur Nutzung des Servers als Servlet in einem J2EE-Container wie z.B. dem Tomcat ist in dem Framework enthalten. Die Server-Komponente übernimmt dabei folgende Aufgaben:

Kern-Bestandteile des Servers können durch eigene Klassen ausgetauscht werden, um spezielle Funktionalitäten in den Server integrieren zu können.

Server-Module

Die Business-Logik der fachspezifischen Anwendung wird durch eigene Module in den Server integriert. Diese Module implementieren ein bestimmtes Interface bzw. werden von einer abstrakten Basisklasse abgeleitet. In der Konfigurationsdatei für den Server werden diese Modul-Klassen dann eingetragen und sind somit in den Server integriert. Diese Module können sehr einfach die Resourcen des Servers wie z.B. Datenbank-Connections, Mandanten, Logging usw. nutzen.

Die fachspezifischen Module haben in erster Linie die Aufgabe, den Clients bestimmte Dienste anzubieten, z.B. gewünschte Daten zu liefern, Daten zu ändern, zu löschen usw. Die Erzeugung eines solches Moduls ist sehr einfach. Zunächst muss ein Interface erstellt werden, welches sämtliche Methoden, die das Modul den Clients zur Verfügung stellen möchte, definiert. Das Modul selbst implementiert dann dieses Interface. Der Client bzw. die Client-Module können dann über das Interface die Methoden des Server-Moduls aufrufen. Dabei kann jedes Client-Modul jedes Server-Modul aufrufen. Es bestehen da also keine 1:1 Verknüpfungen bzw. irgendwelche Einschränkungen. Das Prinzip ähnelt also dem in Java integrierten RMI (Remote Method Invocation). Allerdings nutzt das Framework nicht RMI sondern hat ein einfacheres und flexibleres Datenübertragungs-Verfahren implementiert, das nicht die Nachteile von RMI hat (benötigt keine RMI-Registry, keine besonderen Port-Freigaben erforderlich). Dieses Verfahren kann auch einfach angepasst bzw. erweitert werden, z.B. um die Datenübertragung zu verschlüsseln oder zu komprimieren.

Sobald ein Client eine Methode aus einem Server-Modul aufruft und das erste Mal in diesem Aufruf ein Datenbank-Zugriff ausgeführt werden soll, wird für diesen Thread eine Datenbank-Connection reserviert, die dann für alle weiteren Zugriffe in diesem Aufruf-Thread verwendet wird. Die Connection gehört dabei immer zu der Mandanten-Datenbank mit der der Client im Moment arbeitet. Der Server überwacht auch, ob begonnene Transaktionen korrekt beendet werden.

Der Server hat zum einen eine interne Konfiguration, die vom Entwickler vorgenommen wird, sowie eine externe Konfiguration mit der die Einrichtung bei der Installation der Anwendung durchgeführt wird. In der internen Konfiguration werden z.B. die Server-Module und das Datenbank-Schema festgelegt. Bei der externen Konfiguration wird z.B. die Haupt-Datenbank-Verbindung eingerichtet. Der Mechanismus wie die externe Konfiguration vorgenommen wird bzw. wie das Framework an diese Parameter kommt ist wie vieles im Framework austauschbar.

Client

Der Client ist eine Java-Applikation und basiert auf Swing. Idealerweise sollten die Clients über Java-Webstart gestartet werden. Java-Webstart sorgt für eine sehr einfache Installation und Aktualisierung der Client-Software, die vollkommen automatisch abläuft. Der Client im Framework übernimmt folgende Aufgaben:

Ein Anwender meldet sich mit Benutzernamen und Kennwort am Client an. Gleichzeitig erfolgt auch eine Auswahl des Mandanten (falls mehrere im System zur Verfügung stehen). Ein anderer Mandant kann auch nachträglich noch ausgewählt werden. Allerdings müssen dazu alle offenen Module geschlossen werden. Ein Client kann immer nur mit einem Mandanten zur selben Zeit arbeiten.

Entsprechend der Rechte des angemeldeten Anwenders werden in einem Menü die Module zur Verfügung gestellt, die der Anwender nutzen darf. Die vom Anwender geöffneten Module können dabei auf verschiedene Arten dargestellt werden (MDI-Anwendung, SDI-Anwendung, Registerkarten in einem Fenster). Wenn es ein Modul zulässt, so kann dasselbe Modul auch mehrfach geöffnet werden, um mehrere Datensätze gleichzeitig in der Bearbeitung zu haben.

Module können selbstverständlich auch komplett selbst in Java implementiert werden. XML-Module bzw. -Panels sind einfach erweiterbar. XML-Module können sogar von Personen erstellt werden, die über keine Programmierkenntnisse verfügen. Es werden nur grundlegende XML- und Datenbank-Kenntnisse benötigt.