Einheiten

Mit Hilfe von Einheiten werden im Rahmen der Roblet®-Technik alle möglichen von einem Roblet®-Server verwalteten Ressourcen dargestellt.  Auf der Ebene eines Roblets® wird nur mit Einheiten gearbeitet.  Der Roblet®-Server arbeitet hingegen prinzipiell mit Modulen und vermittelt nur Roblet®-Zugriffe auf Einheiten hin zu den Modulen.  Die Module sind letztlich die eigentlichen Verwalter einer jeweiligen Ressource.


E-Def = Einheiten-Definition
E-Impl = Einheiten-Implementierung

Ressourcen sind dabei alles erdenkliche:  Dateien, ganze Dateisysteme, Kommunikationsverbindungen, Datenbanken, SAP-Systeme, Motoren, Schalter, Audio-Geräte, Ultraschall-Sensoren, GPS-Empfänger - alles, was man von einem normalen Computer(-Programm) aus ansteuern oder abfragen kann.  Der Begriff Ressource wird auch verwendet, wenn es sich um eine Funktionalität handelt, die auf grundlegenderen Ressourcen basiert und die neue Ressource dann eigentlich Logik plus grundlegende Ressourcen darstellt.  Auch können beide dieser Formen parallel über Einheiten bereitgestellt werden.

Die Definition eines Ressourcen-Zugriffs, seine Implementierung und die Zuordnung zur Laufzeit (eines Roblets®) geschehen vollständig mit objektorientierten Mitteln.  Dabei wird eine Einheit definiert, indem einfach eine Java™-Schnittstelle (interface-Klasse) bereitgestellt wird.  Die class-Dateien einer Einheiten-Definition werden meist in einem Java™-Archiv (JAR-Datei) zusammengefaßt und zuzüglich einer Dokumentation, meist per Javadoc, an die zukünftigen Nutzer herausgegeben.  Ein derartiges Java™-Archiv wird dann Einheiten-Bibliothek genannt.  Nach Herausgabe bleibt eine solche Definition sinnvollerweise ungeändert - kann jedoch erweitert werden.  Die Einheiten-Bibliothek wird von den Roblets® und von den implementierenden Modulen (s.u.) verwendet.

Zur Implementierung einer Einheit implementiert (implements) eine Java™-Klasse (class-Klasse) die jeweilige Definition.  Diese Klasse kann dann alle möglichen Mittel bemühen, um die jeweilige Ressource tatsächlich zu verwalten.  Verwaltung bedeutet Zugriff, Synchronisation von Parallelitäten, Bereitstellung von Exklusivitäten und anderes mehr.  Module und die innenliegenden Einheiten-Implementierungen haben dabei freien Zugriff auf die Java™-Bibliotheken, die Erweiterungen und alles, was auf dem Klassenpfad liegt.  Das ermöglicht z.B. Netzwerkzugriffe für eine Datenbankanbindung oder die Nutzung von JNI (Java™ Native Interface) zur Anbindung von C++-Bibliotheken.  In C++-Bibliotheken lassen sich bei Bedarf auch echtzeitkritische Arbeiten durchführen, die in Java™ allein meist undenkbar wären.  Zur Einbettung in den Roblet®-Server wird diese Implementierung in ein Modul verpackt.  Es können in einem Module mehrere verschiedene Einheiten implementiert sein.  Ein Roblet®-Server kann mehrere Module verwalten.

Ein Roblet® bekommt Zugriff auf eine Ressource, indem es den Roblet®-Server dazu auffordert.  Dafür muß die zugehörige Einheiten-Definition an den Server übergeben werden, der damit seinerseits an die Module herantritt und diese auffordert, die Instanz einer Einheiten-Implementierung zurückzugeben.  Die Einheiten-Definition wird in Form der interface-Klasse übergeben, was eine Typ-Prüfung schon zur Zeit der Kompilation ermöglicht.  So ist dann ganz sicher, was ein Roblet® will und was ein Modul zu liefern hat.  Findet sich im Server kein Modul, welches eine passende Einheiten-Implementierung hat, so gibt der Roblet®-Server null, d.h. keine Instanz, an das Roblet® zurück.  Mit Hilfe dieser Mechanik kann ein Roblet® daher auch untersuchen, ob ein Roblet®-Server (mit seinen Modulen) eine bestimmte Ressource verwaltet oder nicht.  Davon ausgehend können beliebige weitere Entscheidungen im Roblet® getroffen werden.  Der Untersuchungsmechanismus umfaßt implizit ein Versionierungssystem, weil so auf einfachste Weise verschiedene Generationen von Roblets® (bzw. sendenden Anwendungen) verschiedene Versionen von Einheiten verwenden können.  Einheiten selbst werden nicht wirklich versioniert, sondern stattdessen wird bei Bedarf jeweils eine neue definiert, die dann natürlich ähnlich heißen kann (z.B. mit angehängter Nummer) und an die jeweilige Vorgängerin inhaltlich angelehnt ist.

Auch der Roblet®-Server stellt den Roblets® gewisse Ressourcen, wie etwa das Logging, in Form von Einheiten zur Verfügung.  Ein Roblet® kommuniziert mit dem Server nur über Einheiten.  Die Einheiten-Definitionen der vom Server (ohne weitere Module) bereitgestellten Ressourcen werden Server-Einheiten genannt und sind inklusive Dokumentation im Roblet®-Development-Kit (RDK) zu finden.

Definition und Implementierung einer Einheit müssen nicht immer aus einer Hand kommen.  Es ist durchaus möglich, daß die Definition für eine Ressource z.B. in einem Gremium erfolgt, dem mehrere Hersteller der Ressource und weitere Personen und Organisationen angehören.  Jeder Hersteller erstellt dann für seine Variante der Ressource eine eigene passende Implementierung und muß nur darauf achten, daß die Definition eingehalten wird und braucht im Grunde auch keine weitere Dokumentation liefern.  Dadurch entsteht für die Entwicklung von Roblet®-Anwendungen der wünschenswerte Effekt der Unabhängigkeit vom Ressource-Hersteller.  Ein Hersteller kann natürlich für die jeweilige Ressource auch erweiternde eigene Einheiten anbieten, aber die wären dann wieder Hersteller-abhängig aus Sicht der Roblet®-Anwendung.

powered by genRob®erzeugt am 15.05.2015 mit
genRob®-genSite 3.4