Wie funktioniert a35?
Kurz & bündig
Nach dem Aufruf, z.B. mit http://www.allegro-c.de/demo/a35-pc.php, sieht man zuerst ein Bild mit vier Quadranten: (ohne die roten Beschriftungen!)
a35 sitzt dann quasi als Client im Browser und wartet nur ständig auf Datenströme, die vom Server kommen (abgesandt von den Programmen avanti + acon). Ein Datenstrom - wie sieht der aus? Es handelt sich immer um Zeichenfolgen, mal kurz, mal lang. Wenn so ein Datenstrom eingetroffen ist, dann sieht man noch nichts, denn er geht in einen Zwischenspeicher, und dann erst passiert das Wichtige: a35 sucht darin nach diesen drei Zeichen: _!_. Wenn es eine solche Sequenz findet, und dahinter drei Buchstaben, z.B. INF, dann nimmt es den Abschnitt, der hinter diesem „Label“ kommt, z.B. also hinter _!_INF , bis zum nächsten Label _!_XYZ. Und was wird nun mit diesem Abschnitt aus dem Datenstrom? a35 schaut nach, ob es in seinem Innern ein Feld findet, das ein Attribut id="INF" hat. Im Bild oben sieht man, welches Feld das ist. Der Inhalt dieses Feldes wird dann überschrieben durch den besagten Datenabschnitt und wird sichtbar. Dann kommt der nächste Abschnitt dran, bis zum nächsten Label _!_XYZ, usw. Eins nach dem andern, aber das fällt nicht auf, weil es so schnell geht. (Für Programmierer: Diese ganze Arbeit mit dem Datenstrom macht die Funktion receivE() in a35.js. Man braucht sie aber nicht zu ändern, wenn man eigene neue Labels einbaut in das Grundgerüst a35-*-cont.php.) Das ist alles! Im Vergleich zu
HTML oder gar XML
scheint das
äußerst primitiv zu sein. Es ist aber so,
daß der Inhalt eines
Abschnitts eine
komplette HTML5-Datei sein kann, mit allem drum und dran. (Meistens
aber weniger aufwendig: nur eine
Textdatei mit eingestreuten HTML-Auszeichnungen nur da, wo es sinnvoll
ist.) Die Labels
_!_ mit
drei Buchstaben dahinter trennen also sozusagen eine Folge von
Textdateien,
die in dem Datenstom alle hintereinander angekommen sind. Die Labels
bilden,
könnte man sagen, eine ganz simple Superstruktur oberhalb
HTML. (Warum
gerade
_!_ als Steuerzeichen - könnten die nicht auch ganz normal in
einer
HTML-Datei
vorkommen? Theoretisch ja, praktisch haben wir sie aber in
großen
Mengen
Dateien nirgends gefunden. Auch nicht, und das ist noch wichtiger, in
z.B. Bibliotheksdatensätzen
(Millionen MARC-Daten der LC und BL wurden durchsucht), denn solche
können innerhalb
von a35-Datenströmen vorkommen! Wer’s
aber
durchaus will, könnte auch eine andere, noch ausgefallenere
Kombination nehmen, wie etwa >&>.
Änderungen wären dann nötig in a35.js
und in den Jobdateien.) Kurz zusammengefaßt und ganz schematisch sieht also ein Datenstrom, den a35 bekommt, so aus (hier nur ein Ausschnitt): ..... _!_ERG Text1_!_INF Text2 _!_EXT Text3 _!_.......... Und a35 steckt dann den Text1 in das Feld ERG, Text2 in das Feld INF und Text3 in das Feld EXT. Ein Beispiel für einen solchen Datenstrom ist die Datei a35start.htm, die a35 gleich nach seinem Start als ersten Datenstrom überreicht bekommt. Und in jedem Text können beliebige "spezielle Links" vorkommen. Einfach mal reinschauen in die Dateien und vergleichen, wie das im a35 dann ausschaut. Wie aber kommen die „Datenströme“ denn zustande und wer sendet sie an a35? Sie kommen vom selben Webserver, aus dem a35 in den Browser geladen wurde. Der Webserver sendet nicht von sich aus Daten an den Browser sondern dazu braucht es einen Klick auf einen Link innerhalb des a35-Fensters oder ein ausdrückliches Anfordern von Daten mit einem Direktbefehl: Ein Direktbefehl
wird von Hand eingegeben, und zwar
gibt es zwei Typen: 1a. h a35examp.htm, dann wird direkt die Datei a35examp.htm an das a35 im Browser gesendet, und zwar als Datenstrom, den a35 dann in der beschriebenen Weise auseinandernimmt. In diesem Fall findet a35 darin nur ein einziges Label, nämlich _!_INF, gefolgt von dem Text, den es dann im Feld INF erscheinen läßt. Dieser Aufruf steckt auch hinter dem Menüpunkt "Datei / Link-Beispiele". Setzen Sie da den Mauszeiger drauf, um zu sehen, wie der spezielle Link zum Aufruf dieser Datei aussieht. 1b. h a35find.txt: Der Dateityp muß gar nicht .htm sein, trotzdem klappt's. Ein kleines Eingabeformular erscheint, mit dem man eine Suche starten kann. Dieser Aufruf findet sich auch hinter dem Menüpunkt "Datei / Simple Suche". 2a. X a35dbi
: Ruft die "Datenbank-Info" ab. Erstellt
wird sie vom Job a35dbi.job,
der zum Standardumfang von
a35 gehört. Dieser Aufruf liegt auch hinter dem Menüpunkt "Ansicht / Info zur Datenbank". write "_!_INF Dies ist eine Information_!_EXT <b>HALLO</b>" Dann würden die Texte Dies ist eine Information bzw. HALLO anschließend in den Feldern INF bzw. EXT erscheinen. Dieser Aufruf ist auch eingebaut in den Menüpunkt Fast alle Links, die man im a35-Fenster sieht, enthalten im Kern einen solchen Direktbefehl, meistens vom Typ 2. Das sind also Befehle, die irgendeinen Job starten. Das gesamte Menü ist zu finden in der Datei a35-pc-menu.php. Darin findet man alle Arten von Beispielen für spezielle Datei- oder Job-Aufrufe. Es ist in HTML geschrieben und damit leicht zu modifizieren. Ein Job ist zunächst eine Datei vom
Typ .job
- eine schlichte
Textdatei, die aus Befehlen in der allegro-Sprache FLEX
besteht. Und zwar ist es die
avanti-Variante
von FLEX. Die aktuelle Dokumentation können sie mit a99
studieren, sie gehört zum sog.
„Gesamtpaket“ des allegro-Systems. (Auch die Demo-Version
enthält die komplette, aktuelle FLEX-Dokumentation.) Ohne FLEX
kann
man von außen gar nicht auf eine allegro-Datenbank zugreifen!
Wer also eine allegro-Datenbank
ins Netz stellen will, kommt an FLEX nicht vorbei. Der wichtigste Punkt
bei
a35 ist eigentlich, daß man nur
FLEX braucht, d.h. Job-Dateien in
dieser Sprache zu schreiben hat! Weder PHP noch JavaScript braucht man
zu
beherrschen, und mit HTML5 und CSS sind nur die Kenntnisse
nötig, die ohnehin
jeder besitzt, der für das Web etwas programmiert. Zum
Glück sind die
Grundfunktionen, die zur Anbindung einer allegro-Datenbank unbedingt
gebraucht
werden, alle schon im Standardpaket vorhanden. Man kann sie erst einmal
fast
alle unbesehen übernehmen und einsetzen. Z.B. produziert der
Job a35ind.job
die Registerseiten, die im
Feld REG erscheinen, und a35get.job
erstellt die Anzeige des Datensatzes, den man im Feld EXT zu sehen
bekommt;
zugleich die Anzeige des oben nicht sichtbaren Feldes INT, das hinter
EXT liegt
und mit F5 sichtbar wird. Letzte Frage: Wie funktionieren die zwei anderen Modelle, für Tablets und Smartphones? Genauso. Nur die Oberfläche ist anders angeordnet, darunter passiert dasselbe. Das bedeutet, man braucht nicht drei Varianten eines Jobs zu schreiben. Sondern was einmal funktioniert, das klappt in allen drei Modellen. Nur das PC-Modell hat vier gleichzeitig sichtbare Quadranten, die anderen haben "Tabs", die jeweils ein "Panel" einschalten, aber die entsprechen je einem Quadranten. Das Tab-Modell hat eine eigene Menüdatei namens a35-tab-menu.php, das App-Modell hat beim Start kein Menü. Aber man kann eins aufrufen, das dann unter dem Tab "Extras" erscheint, wenn man in den roten Rahmen unter dem Tab "Ergebnisse" eingibt h a35-menu.htm. Man wird in dieser Datei natürlich nur solche Funktionen bereitstellen, die auf dem Mobiltelefon wirklich sinnvoll und erwünscht sind. |
B.Eversberg 2014-05-04