InstantWeb-Generator
Der InstantWebGenerator erleichtert die Erstellung einer
InstantWeb-Anwendung, indem es den Ersteller durch die notwendigen Schritte führt
und diverse Arbeiten so weit wie möglich selbst durchführt. Syntaktische
Fehler und falsche Links werden so vermieden.
Generell gilt: Aus einem InstantView®-Fenster werden 3 Dateien erzeugt:
- Java-Klasse, abgeleitet von CX_Action, die die Aktionen des Benutzers
verarbeitet
- Java-Klasse, abgeleitet von CX_ActionForm, die die Inhalte der Webseite,
und damit der InstantView®-Seite, festhält
- JSP-Seite, die die Webseite in HTML beschreibt

Vorgehen
- Der InstantWeb-Generator lässt sich über die Message INSTANTWEB_GENERATOR
aufrufen. Das Hauptfenster des Generators enthält eine Reihe von
Eingabefeldern zur Konfiguration:
- Projektname: Der Name des Projektes, für welches eine
Webanwendung erstellt wird. Für das Evaluate-Projekt muss hier z.B.
"Evaluate" eingetragen werden, bei Kundenprojekten entspricht der
Projektname häufig dem Firmennamen.
- Webanwendung: Der Name der Webanwendung. Im Beispiel ist dies
die Telefonliste, welche "PhoneList" heisst. Dieser Name leitet sich
auch aus der zugehörigen .cxp-Datei ab und wurde bei der Erstellung der
Dateien für die Webanwendung gewählt (siehe entsprechende
Anleitung).
- Vollständiger Name: Name der Webanwendung. Er wird
automatisch aus dem darüber angegebenen Projektnamen und dem Namen der
Webanwendung erzeugt, kann aber auch angepasst werden. Dieser Name wird auch
in der Konfiguration des Koordinators verwendet.
Genauer gesagt, bezeichnet der Name eine ClassiX®-Instanz. Verschieden
konfigurierte ClassiX®-Instanzen benötigen unterschiedliche
Namen, damit sie korrekt angesprochen werden können.
Für Experten: Wenn nun nur eine ClassiX®-Instanz genügt, weil alle InstantWeb-Anwendungen die gleiche
Konfiguration benutzen, reicht es, nur eine Instanz im Coordinator zu
definieren. Diese wird bei jeder InstantWeb-Anwendung hier im Feld
"Name" angegeben. Es ist also nicht zwangsweise notwendig, dass jede InstantWeb-Anwendung einen eigenen Namen trägt. Die endgültige URL
wird über den Namen der .WAR-Datei festgelegt, nicht über dieses Feld!
- Host:Port: Adresse des Rechners, auf dem der Coordinator läuft.
Bitte beachten Sie, dass in der Koordinator-Konfiguration derselbe Port
angegeben werden muss, damit sich Webserver und Coordinator finden.
- InstantWeb-Zielverzeichnis: Dies ist das Zielverzeichnis, wohin das
Template kopiert wird. Es handelt sich dabei um ein temporäres
Verzeichnis, d.h. nach Erstellung der .WAR-Datei (s.u.) kann diese
Verzeichnis wieder gelöscht werden.
- Bitmap-Verzeichnis: Beim Konvertieren der Fenster werden z.B. für
Buttons mit Bitmaps oder für Toolbars die entsprechenden Bilder benötigt. Für die InstantWeb-Anwendung werden alle Bitmaps gesammelt und in ein
Verzeichnis kopiert. Dieses Verzeichnis sollte immer relativ sein und
befindet sich unterhalb des InstantWeb-Verzeichnisses. Im obigen
Beispiel würden die Bitmaps alle nach
y:\classix\InstantWeb\Build\bmp\ geschrieben werden.
- .WAR-Datei: Zum Schluss wird das gesamte Werk in eine
.WAR-Datei gestellt und kann so auf einfache Art und Weise auf dem
Webserver installiert werden (deploy). Der Pfad und der Name der .WAR-Datei
wird automatisch aus dem oben angegebenen Projektnamen und dem Namen der
Webanwendung erzeugt, kann jedoch auch manuell angepasst werden. Der
Name der .WAR-Datei definiert später die URL, unter welcher die
Webanwendung angesprochen werden kann.
- InstantWeb-Vorlage: Aus diesem Verzeichnis liest der
InstantWeb-Generator das Template. Es wird 1:1 kopiert und anschließend
werden alle Template-Variablen und Makros ausgewertet.
- Startdatei: Datei, die vom Webserver übertragen werden soll,
wenn der Web-Anwender ein Verzeichnis oder / in der URL angibt, z.B.
http://webshop.de/
- JSP-Fehlerseite für Verbindungsfehler: Diese Seite wird dem
Web-Anwender angezeigt, wenn die Verbindung zwischen Webserver und
Coordinator abreißt oder nicht zustande kommt.
- JSP-Fehlerseite für "Ungültige Startseite": Wie in
Punkt 7 beschrieben (s.u.), müssen Einstiegsseiten durch ein * gesondert
gekennzeichnet werden. Wenn nun ein Web-Anwender eine Seite anwählt,
die nicht als Startseite gekennzeichnet ist, und diese Seite
gleichzeitig die erste Seite seines Besuches ist, wird eine Fehlerseite
angezeigt. Welche das ist, wird mit diesem Feld festgelegt.
- Bevor der Generator loslegen kann, müssen die Fenster ausgewählt
werden, die in eine InstantWeb-Anwendung konvertiert werden sollen. Der
Button "1. Fenster wählen" öffnet ein weiteres
Fenster:

- Zunächst werden alle Module zusammengesucht und
geparst. Dieser Vorgang dauert einige Sekunden.
- Im oberen Drittel werden nun alle Module aufgelistet, die gefunden wurden.
Durch Eingabe des Namens über die Tastatur kann zu einem bestimmten Modul
gesprungen werden. Im nächsten Schritt werden alle Module und Fenster
ausgewählt, die eine InstantWeb-Anwendung bilden sollen.
- Wählen Sie ein bestimmtes Modul mit der Maus aus. In der Liste
"Fenster" links unterhalb der Modulliste werden nun alle Fenster
aufgelistet, die in diesem Modul definiert sind. Ein einfacher Klick
akualisiert die Liste der Widgets, die dieses Fenster besitzt. Diese Liste
ist im unteren Drittel des Fenster zu finden. Ein Klick auf den Button
"(Source)" öffnet Eclipse und lädt das entsprechende Modul.
- Wählen Sie nun das gewünschte Fenster aus und drücken Sie auf den
Button "-->", um das Fenster in die Liste der Web-Fenster
aufzunehmen. Ein Doppelklick führt zum selben Resultat. Der Button mit dem
roten X löscht ein Fenster wieder aus der Liste. Es ist auch die
gleichzeitige Auswahl mehrer Fenster möglich.
- Je nach Bedarf kann dem Fenster nun noch der Name der Start-Message
mitgegeben werden. Die Start-Message ist die Message, die das Fenster öffnet.
Normalerweise ist es nicht notwendig, diese Message anzugeben, denn ein
Fenster wird i.d.R. von ClassiX® geöffnet und nicht über den Browser.
Ein Beispiel: Das Loginfenster ist ein typischer Fall für ein Fenster, das
initial vom Browser geöffnet werden muss. Der Benutzer gibt die URL in seinen Browser ein
und erwartet, dass ClassiX® die angeforderte Seite öffnet und sie im Browser
darstellt. Das InstantWeb-Interface weiß, welche URL zu welcher Seite gehört.
Doch wie soll ClassiX® angewiesen werden, die Seite zu öffnen? Die Lösung
ist eine Message, die getriggert wird und dadurch eine Seite öffnet. Genau
diese Message wird hier als Start-Message bezeichnet, denn sie
"startet" das Fenster.
Wenn dagegen ClassiX® eine Seite öffnet, z.B. als Folge einer Menüauswahl,
muss das InstantWeb-Interface die Message nicht kennen, denn ClassiX® hat die
Seite bereits geöffnet und liefert nur noch die Daten des Fensters. Das InstantWeb-Interface muss, im Gegensatz zum Loginfenster, die Seite nicht öffnen.
Wenn der Start-Message ein Stern (*) vorangestellt wird, so kennzeichnet
dies das Fenster mit zugehöriger Message als Startpunkt für die gesamte
InstantWeb-Anwendung (d.h. diese Message bzw. das Fenster darf auch ohne
Login aufgerufen werden). Typischer Fall hierfür ist wieder die
Login-Message.
- Für weitere Fenster wiederholen Sie die Schritte 5-7, ansonsten schließen
Sie einfach das Fenster.
Achtung! In der aktuellen Version
des InstantWeb-Frameworks muss auch immer folgendes Fenster mit in
die Anwendung eingefügt werden (wie im Screenshot gezeigt): Modul "GLOBAL"
mit Fenster "ControlWin". Zusätzlich muss mindestens ein Fenster
mit einer Start-Message als Einstiegsseite (also mit Sternchen) angegeben
werden. Dies wird in den meisten Fällen ein Login-Fenster sein.
- Mit dem Button "Dateien erstellen" können nun
automatisch alle ausgewählten Fenster in JSP-Seiten konvertiert werden.
Gleichzeitig werden die entsprechenden Formulare und der Java-Code erzeugt.
Das Ergebnis wird in Build\ unterhalb des InstantWeb-Verzeichnisses
abgelegt.

- Bitte kopieren Sie nun weitere Dateien, die Sie zusätzlich brauchen (insbesondere Java-Code)
ebenfalls in das neu erstellte InstantWeb\Build-Verzeichnis. Es steht Ihnen außerdem frei, Änderungen
am Java-Code vorzunehmen.
- Der Button "Compilieren" übersetzt sämtlichen Java-Quellcode
im Verzeichnis /com/classix/ in Java-Bytecode und erzeugt somit eine Reihe
von .class-Dateien. Zur Kontrolle kann per Hand überprüft werden, ob die .class-Dateien
wirklich erzeugt worden sind.
- An dieser Stelle bietet sich die letzte Gelegenheit, weitere Dateien ins
InstantWeb-Verzeichnis zu kopieren (weitere .html, .jsp-Seiten, Style sheets
etc.) bzw. Anpassungen an den vorhanden Dateien vorzunehmen, damit diese im letzten Schritt mit ins
.WAR-Archiv übernommen werden. Außerdem können jetzt noch die generierten
JSP-Seiten überarbeitet werden. Statische Texte
werden nicht in den JSP-Seiten abgelegt, da sie sprachabhängig sind. Sie
sind in den .properties-Dateien im Unterverzeichnis
WEB-INF/classes/com/classix/ zu finden. Die Texte können nach Belieben verändert
werden.
Ein wichtiger Parameter ist in der Datei WEB-INF/web.xml zu finden: Der
Timeout für inaktive Benutzer (Zeitdauer, nach welcher ein inaktiver
Benutzer automatisch ausgeloggt wird). Eine genaue Beschreibung hierzu und
zu den anderen Parametern in web.xml findet sich hier.
- Mit dem Button ".WAR erstellen" werden abschließend alle
Dateien im InstantWeb-Verzeichnis gepackt. Auf dem Webserver kann dieses
Archiv nun mit dem Deploy-Vorgang installiert werden.
- Bei Bedarf kann nun das InstantWeb-Zielverzeichnis gelöscht werden, da
alle Informationen in der .WAR-Datei vorhanden sind. Diese ist ein einfaches
.zip-Archiv mit anderer Dateiendung, daher kann die .WAR-Datei bei Bedarf
auch wieder ausgepackt werden um weitere Änderungen vorzunehmen.
Erläuterung der Schritte
Dieser Vorgang muss nicht immer von Anfang bis Ende durchgeführt werden,
sondern es kann auch mit einem späteren Schritt "begonnen" werden
bzw. ein Schritt kann wiederholt werden. Das ist dann sinnvoll, wenn z.B. ein
Fehler in der InstantWeb-Anwendung festgestellt wurden und daher
InstantView®-Code verändert wird oder einfach nur eine HTML-Seite in der
.WAR-Datei fehlt. Es folgt eine Auflistung, welcher Button welche Arbeiten genau
durchführt und wann übersprungen werden kann, vorausgesetzt, das
InstantWeb-Zielverzeichnis ist noch vorhanden!
- Mit dem ersten Button werden nur die Fenster ausgewählt, die in eine
InstantWeb-Anwendung konvertiert werden sollen. Dieser Schritt kann übersprungen
werden, wenn sich
- die Reihenfolge der Widgets nicht geändert hat und
- keine Widgets gelöscht oder hinzugefügt wurden (wodurch sich die
Reihenfolge der nachfolgenden Widgets verändert) und
- die Widget-Typen nicht geändert haben, also jeder Prompt auch ein
Prompt bleibt und
- die Beschriftungen sich nicht geändert haben und
- die Flags nicht geändert haben.
Werden dagegen Kommentare verändert oder auch Koordinaten, kann die
Auswahl der Fenster übersprungen werden.
- Mit dem zweiten Button werden die .JSP und .JAVA Dateien erstellt. Sollten sich Änderungen wie oben beschrieben im InstantView®-Code
befinden, sind die Webseiten neu zu erzeugen. Ansonsten kann auch dieser
Schritt übersprungen werden. Werden Widgets oder Fenster verändert, die
sich im selben Modul befinden, aber selbst nicht ins Web konvertiert wurden,
sollte vorsichtshalber dieser Schritt (zusammen mit Schritt 1) durchgeführt
werden, da sich die Reihenfolge und damit die Benennung der Widgets geändert
haben kann.
- Wurden Änderungen am Java-Code vorgenommen werden oder wurde Schritt 2
ausgeführt, muss der Code neu übersetzt werden. Ansonsten kann dieser
Schritt ebenfalls übersprungen werden. Aber: Vermeiden Sie es, in Java zu
programmieren! Auf keinen Fall darf die Logik des generierten Java-Codes verändert
werden! Besser ist es, in InstantView® zu programmieren!
- Vierter Schritt: Erstellen der .WAR-Datei. Dieser Schritt muss nach jeder Änderung ausgeführt werden:
- Bei Änderungen am InstantView®-Code,
- am JSP-Code,
- beim Austausch oder Hinzufügen oder Löschen von Dateien aus dem
InstantWeb-Zielverzeichnis
Hinweise:
Der InstantWeb-Generator unterstützt die Mehrsprachigkeit von ClassiX®
noch nicht vollständig. Der Generator ist auch für die Extraktion aller
statischen Texte (z.B. Buttonbeschriftungen, Fenstertitel, ...) zuständig,
allerdings funktioniert dies nur für die Sprachen Deutsch und Englisch
zuverlässig. Weitere Sprachen werden nicht exportiert bzw. der Generator ist auf
Französisch und Russisch beschränkt. Andere Sprachen als diese werden vom
Generator nicht unterstützt. In der fertigen Webanwendung wird die Sprache
anhand der vom Browser des Benutzers übermittelten gewünschten Sprache
automatisch eingestellt. Dies bezieht sich jedoch auch nur auf die statischen
Texte, es erfolgt zur Zeit noch keine automatische Sprachumstellung in ClassiX®
selbst. Diese müsste vom Benutzer (bzw. der Webanwendung) manuell ausgelöst
werden, damit auch dynamische Texte in der gewünschten Sprache angezeigt werden.
Eine Sprachumstellung in ClassiX®
hat jedoch keinerlei Auswirkungen auf die statischen Texte, d.h. wenn z.B. der
Browser des Benutzers Englisch als präferierte Sprache übermittelt und der
Benutzer die Sprache in ClassiX®
manuell auf Spanisch stellt, dann erscheinen die statischen Texte in Englisch
und die dynamischen Texte in Spanisch. Diese Probleme werden in einer
zukünftigen Version von InstantWeb behoben sein.