1 Einführung

populo bearbeitet strukturierte Rechercheanfragen (wie sie etwa von Web-Browsern initiiert werden) für allegro-Datenbanken und liefert ein geeignet aufbereitetes Ergebnis zurück. Für die eigentliche Recherchearbeit bedient es sich des Avanti-Servers und seiner Auftragssprache.

populo ist Free Software unter der Gnu General Public Library Licence.

Downloadmöglichkeiten bestehen unter .

Genauso wie Avanti kann auch populo verschiedene Datenbanken betreuen.

Um die von populo zu leistenden Aufgaben besser verstehen zu können, folgt zunächst eine Beschreibung der notwendigen Arbeitsschritte. Die Eingabe der Rechercheanfrage erfolgt über einen (WWW-)Client. Dieser schickt seine Anfrage an das populo-Programm populo.pl, welches diese Anfrage aufbereitet und einen entsprechenden Auftrag für Avanti formuliert. Das von Avanti produzierte Ergebnis muß von populo nun noch in geeigneter Weise in eine HTML-Seite gepackt und zurück an den Browser geschickt werden.

In der Praxis gibt es viele Anforderungen an dieses an sich recht einfache Strickmuster:

populo versucht auf folgende Weise, diesen Anforderungen an die Flexibilität gerecht zu werden:

  1. Es gibt ein einziges Grundprogramm populo.pl, welches für alle Anfragen zuständig ist.. Diesem Programm werden als fixe Elemente stets der Name der „Datenbank“ und die Art der Anfrage mitgeteilt.

  2. Eine „Datenbank“-spezifische Konfigurationsdatei enthält Informationen über die reale Datenbank und einige Perl-Routinen, die die Aufbereitung der Information über die Möglichkeiten von Avanti hinaus zu unterstützen (Etwa um Zeilen aus einem Register „Exemplardaten“ in fünf getrennte Komponenten zu zerlegen).

  3. Vorlagendateien (Job-Templates) für die diversen strukturell verschiedenenen Rechercheanfragen an die Datenbank. Dies sind Dateien, die den Syntaxregeln der Avanti-Sprache genügen. Viele Elemente (etwa welcher Suchbegriff, welches Register etc.) sind natürlich erst während der Laufzeit des Programms bekannt und müssen in der Template-Datei durch Platzhalter angezeigt werden.

  4. Vorlagendateien (HTML-Templates) für die diversen strukturell verschiedenenen Präsentationen von Rechercheergebnissen. Dies sind Dateien, die den Syntaxregeln von HTML genügen. Viele Elemente (etwa wieviele Treffer, welche und wieviele Registerzeilen etc.) sind natürlich erst nach Ausführung der konkreten Suchanfrage durch Avanti während der Laufzeit des Programms bekannt und müssen in der Template-Datei durch Platzhalter angezeigt werden.

Die notwendigen Rechercheangaben werden populo als Paare Name=Wert übergeben. Im weiteren Programmverlauf stehen diese Angaben unter Rückgriff auf die Routine IniVar zur Verfügung.

Während die Benennung der Übergabeparameter im allgemeinen völlig frei ist, haben zwei dieser HTTP-Felder feste Bedeutung für populo:

  1. Die Angabe der Datenbank erfolgt stets als Wert des Felds db (wird kein solches angegeben, nimmt populo als Default die (nicht vorhandene) Datenbank nodb).

  2. Die Angabe der auszuführenden Aktion („Jobtyp“) erfolgt stets durch ein HTTP-Feld der Form t_xxx[_yyy] (typischerweise der name-Teil des Submit-Buttons). Hierbei ist xxx durch den Jobtyp und der optionale yyy-Teil durch einen eventuellen Jobsubtyp zu ersetzen.

    Die Angabe eines Jobsubtyps ermöglicht es, die Angabe eines zusätzlichen Parameters von der Wahl eines Submit-Buttons abhängig zu machen. Gibt es beispielsweise in einem Formular zwei Knöpfe „vorwärts blättern“ und “rückwärts blättern“, so ist es sinnvoll, beide auf eine Jobdatei blaetter.job zu führen. Die Knöpfe belegen bei Betätigung aber nur ein HTTP-Feld unterschiedlich, daher wird die Art des Knopfes zusätzlich zur gewünschten Auftragsart als t_blaetter_next und t_blaetter_prev in das name-Tag hineincodiert: Der Variable JobTyp wird dann blaetter zugewiesen und JobSubtyp der Wert next oder prev.

    Ist kein solches HTTP-Feld übermittelt worden, so wird der Jobtyp anhand der datenbankspezifischen Konfigurationsdatei initialisert.

Diese Angaben sind in populo im weiteren Verlauf unter den Variablennamen Db, JobTyp und JobSubtyp zugänglich.

Damit die Verarbeitung der Anfrage ordnungsgemäß vorgenommen werden kann, muß es zur Datenbank Db eine korrespondierende datenbankspezifische Konfigurationsdatei Db.pl geben und zu JobTyp eine auftragsspezifische Templatedatei JobTyp.job. Damit korrespondiert (falls nicht JobTyp im Verlauf der Verarbeitung der Anfrage modifizert wird) eine Datei JobTyp.htm mit dem Template für die Ausgabe. In welchen Verzeichnissen diese Templatedateien zu finden sind, ist (datenbankspezifisch) in der Konfigurationsdatei spezifiziert.

Abgesehen von den zwei grundlegenden HTTP-Feldern (und den zugehörigen populo-Variablen) ist noch folgendes festgelegt:

Ist keine Datenbank angegeben oder eine nichtexistierende (d.h. es wurde keine Konfigurationsdatei gefunden), so schaltet populo automatisch um auf die „festverdrahtete“ Datenbank nodb mit dem einzigen JobTyp nodb