Web-Schnittstelle - Aufruf von Prozeduren
Web-Schnittstelle - Aufruf von Prozeduren Aufruf von Prozeduren von der Web-Schnittstelle
Die Verarbeitung von Benutzereingaben der Web-Anbindung erfolgt über die in der Konfigurationsdatei eingetragene Request-Funktion ( c16_web.cfg ) und über Prozeduren, die aus einer HTML-Seite mit dem Befehl C16.CALL() aufgerufen werden. Zur Programmierung der entsprechenden Funktionen stehen die Prozedurbefehle des CONZEPT 16-Befehlssatzes zur Verfügung.
Von der Web-Schnittstelle können nur A+ Prozeduren verarbeitet werden. Der Aufruf von Prozeduren mit dem Befehl CallOld () wird ignoriert. Innerhalb der Prozeduren stehen nicht alle Befehle zur Verfügung. Alle verwendbaren Befehle sind in der Online-Hilfe mit dem Symbol versehen.
Die eingetragene Request-Funktion nimmt alle Anfragen eines Browsers entgegen. In dieser Funktion sollte aufgrund der vom Browser übermittelten Daten eine neue Seite zurückgegeben werden. Der URL der Applikation (bei einer Standardinstallation http://<Hostname>/scripts/c16_web.dll) werden bei Verwendung des Clients unterschiedliche Argumente angehangen. Diese Argumente können mit dem Befehl WseArg () in der Request-Funktion ermittelt und aufgrund des Ergebnisses unterschiedliche Seiten zurückgegeben werden.
In der Request-Funktion müssen unterschiedliche Zustände überprüft werden. Diese Zustände können über den Befehl WseStatus () ermittelt werden. Die Request-Funktion besteht damit zunächst aus einer switch-Anweisung:
switch (WseStatus())
{
case _WseUserInit :
{
// Request-Funktion zum ersten Mal aufgerufen
...
}
case _WseUserProc :
{
// Request-Funktion bei laufender Applikation aufgerufen
...
}
case _WseUserTerm :
{
// Request-Funktion vor der Abmeldung des Benutzers aufgerufen
...
}
case _WseUserHTML :
{
// Request-Funktion mit C16.CALL() aufgerufen
...
}
}
Im Zustand _WseUserInit können globale Datenbereiche für die Applikation angelegt und initialisiert werden. In diesem Zustand wird die erste Seite der Applikation zurückgegeben. Die hier angelegten Datenbereiche können im Zustand _WseUserTerm wieder freigegeben werden.
Der Zustand _WseUserTerm wird nicht durch einen Request erreicht. Dadurch sind nur begrenzte Möglichkeiten vorhanden. So ist es zum Beispiel an dieser Stelle nicht möglich eine Antwortseite zurückzuschicken.
Der Zustand _WseUserHTML ist nur gegeben, wenn die Funktion aus einer HTML-Seite (mittels C16.CALL() ) aufgerufen wurde. Wegen der Übersichtlichkeit sollten Funktionen, die Inhalte von Seiten erzeugen und Funktionen, die zur Ablaufsteuerung der Applikation dienen, voneinander getrennt werden. Der Zustand _WseUserHTML kann dann in der Request-Funktion nicht vorkommen.
Im laufenden Betrieb wird bei einem Request die URL mit einer Benutzer-ID übermittelt. Durch den Request wird die Request-Prozedur aufgerufen. In der Prozedur wird dann der Status _WseUserProc ermittelt. Der URL können ein oder mehrere Argumente angehangen werden, die in diesem Zustand ermittelt werden können. Je nach ermittelten Argumenten kann dann die Prozedur unterschiedliche Seiten zurückgeben. In diesem Bereich bietet sich ebenfalls eine switch-Anweisung an:
// Request-Funktion bei laufender Applikation aufgerufen
aArgName # WseArg(_WseArgName,'',1);
switch (aArgName)
{
case ...
default :
{
// unbekannter Parameter übermittelt
...
}
}
In dem Beispiel wird der Name des ersten Arguments abgefragt. An dieser Stelle ist es günstiger den Namen über ein Namensfragment (z. B. App*) zu ermitteln. Im einfachsten Fall wird dann mit dem Befehl WseReturn () eine Seite zurückgegeben.
WseReturn(_WseRetFile, 0, 'text/html', 'c:\inetpub\wwwroot\default.htm');
Eine Seite kann auch vollständig aus der Datenbank generiert und abschnittsweise zurückgegeben werden.
WseReturn(_WseRetString, 0, 'text/html',
'<p>Weiter mit unten stehendem Link.</p>' +
'<a href="C16.URL(absolute,Button=Weiter)">' +
'Weiter</a>');
Der in dem Rückgabewert angegebene Link, kann dann wieder von der Request-Funktion ausgewertet werden. Als Name wird 'Button' und als Wert wird 'Weiter' ermittelt.
Kann eine Funktion nicht fehlerfrei ausgeführt werden, wird eine Fehlermeldung in die Protokolldatei eingetragen und gegebenenfalls eine Fehlerseite zurückgegeben.
Die Anweisung C16.URL() erzeugt einen Link auf die Web-Schnittstelle.