Screenshots des HAF
Code Generation Studio
Der Lieferumfang des Host Abstraction Frameworks beinhaltet eine Lizenz des Diomex Code Generation Studios. Mit Hilfe dieser Anwendung ist es möglich ein Modell zu pflegen und dieses später über einen Codegenerator in verschiedenen Sprachen und für verschiedene Plattformen auszugeben. Zu den Highlights des CGS gehört die Generierung für das .NET Compact Framework und die Unterstützung für den Microsoft Team Foundation Server.
Bei sehr großen HAF-Projekten wird auch das zugehörige Modell sehr schnell sehr groß. Um trotzdem schnell benötigte Informationen zu finden, beinhaltet das CGS eine sehr flexible Suche, die es ermöglicht das ganze Modell oder auch nur bestimmte Bereiche (z.B. Namensräume oder Datenstrukturen) zu durchsuchen.
Nachdem das Modell erstellt bzw. geändert wurde, wird mit Hilfe des Codegenerators das Modell in Quellcode übersetzt. Das CGS unterstützt verschiedene Sprachen, Plattformen und Visual Studio-Versionen. Wenn das zu generierende Projekt in einer Quellcodeverwaltung liegt (z.B. Microsoft Team Foundation Server), kann das CGS bestehende Dateien automatisch abrufen und auschecken. Neue Dateien werden automatischen in die Quellcodeverwaltung eingefügt.
Im- und Export von RPG-Sourcen
Nachdem die zu importierenden Funktionen ausgewählt wurden, wird definiert wo die Funktionen und Datenstrukturen im Modell erstellt werden sollen. In diesem Schritt erkennt das CGS auch, ob es bereits bestehende, passende Strukturen für die Parameter der zu importierenden Funktionen im Modell gibt und schlägt diese vor.
Bei neuen Funktion macht es Sinn erst das Modell und dann die hostseitigen Funktionen zu erstellen. Um dies zu erleichtern beinhaltet das CGS eine Funktion zum erstellen vom RPG-Sourcen. Der Export erstellt sowohl die Datenstrukturen als auch ein „leeres“ RPG-Programm mit entsprechender Parameterleiste. Die Sourcen können entweder auf der Festplatte oder direkt per FTP auf einem iSeries-System gespeichert werden.
Validierung von RPG-Sourcen
Um sicherzustellen, dass die im Modell definierten Strukturen mit den Programmen auf dem Hostsystem übereinstimmen, beinhaltet das CGS eine Funktion zum Validieren der Hostschnittstelle. Hierzu werden die Sourcen der Hostprogramme vom Hostsystem abgerufen, analysiert und die Parameter mit dem Modell verglichen.
Stored Procedures für DB2-Provider erstellen
Einer der möglichen Kommunikationsprovider für HAF-basierte Anwendungen ist der „HAF-Provider für IBM .NET DB2-Provider“. Dieser Provider ruft Funktionen auf einem Hostsystem als Stored Procedure auf. Da auf einem iSeries-System hierzu im Vorfeld für jedes Programm eine Stored Procedure erzeugt werden muss, enthält das CGS eine Funktion um diese automatisiert anhand des Modells zu erzeugen.<//span>
Businessobjekte erstellen
Nachdem die hostseitigen Datenstrukturen im Host-Access-Layer definiert wurden, können anhand dieser Strukturen Businessobjekte im sogenannten Business-Rules-Layer erzeugt werden. In diesem Schritt können auch automatisch alle Felder einer Struktur als Eigenschaften in dem neuen Businessobjekt übernommen werden.
Die HAF-Runtime unterstützt sehr flexible Caching-Funktionen, um den Traffic zwischen Client und Server zu minimieren. Diese Caches können direkt mit dem CGS im Modell definiert werden, indem die Parameter zum Aufruf einer Funktion im Modell hinterlegt werden.<//span>
Eine der großen Stärken des HAF-Modells ist die Möglichkeit Businessobjekte über Caches und Funktionsaufrufe zu verknüpfen. So erhält man ein Objektmodell, das sich in der Handhabung nicht von dem einer reinen .NET-Applikation unterscheidet, obwohl sich hinter einer HAF-basierten Anwendung ein in der Regel sehr altes und nicht objektorientiertes Backend verbirgt.
Debuggen mit dem Trace Analyser
Neben dem Code Generation Studio beinhaltet das HAF eine Anwendung zum Debuggen von HAF-basierten Anwendungen, den Trace Analyser. Mit Hilfe des Trace Analyser kann die Kommunikation mit dem Hostsystem protokolliert werden. Außerdem ermöglicht der TA die schrittweise Ausführung der einzelnen Hostfunktionen und das erneute Ausführen von Hostfunktionen mit den gleichen Parametern.



















