Eine Benutzeraktion XTEND resultiert entweder in einer Aktion, die direkt vom XTEND-Server ausgeführt wird, oder in einem Aufruf eines X3-Webservices. Bei diesem Webservice handelt es sich entweder um ein Unterprogramm oder um eine Aktion in Verbindung mit einem X3-Objekt.
Ist die Aktion mit einer Schnittstelle verknüpft, verwendet sie X3-Webservices.
Eine Webaktion erwartet Parameter als Eingaben, führt eine Verarbeitung aus und belegt eine bestimmte Anzahl von Parametern als Rückgabewerte, wie z. B. beim Aufruf eines 4GL-Unterprogramms.
Im Falle einer XTEND-Applikation werden die Parametereingaben in der Regel vom Benutzer in einem HTML-Formular vorgenommen; die vom Unterprogramm zurückgegebenen Werte werden in der Benutzersitzung im Speicher gehalten (Mapping), um auf einer HTML-Seite angezeigt oder als Parameter für weitere Aktionen verwendet werden zu können.
Im vorliegenden Dokument wird beschrieben, wie neue Benutzeraktionen angelegt werden können.
Der erste Schritt besteht im Programmieren und TESTEN der 4GL-Verarbeitung oder des von der XTEND-Aktion aufgerufenen X3-Objekts im X3-Client-Modus.
Vor der Verwendung von X3-Objekten in einer XTEND-Anwendung muss gewährleistet sein, dass die betreffenden X3-Objekte in Webservices verwendet werden können.
Insbesondere muss sichergestellt werden, dass die Aktionsverarbeitung nicht die Anwesenheit eines (menschlichen) Benutzers vor einem Bildschirm voraussetzt, weil auf eventuelle Fragen oder vom X3-Server zurückgegebene Meldungen reagiert werden muss.
Die AWEB-Verarbeitung umfasst Hilfsunterprogramme für die Verwaltung der Benutzermeldungen.
Versand eines Hinweises, einer Warnung oder einer Fehlermeldung:
Testmodus
Eine Benutzeraktion wird als gültig betrachtet, wenn der Aufruf des Webservice keine Fehlermeldung zurückgibt.
Fehlermeldungen werden in 4GL mit dem Unterprogramm ADDMESSERR (Call ADDMESSERR("Message") From AWEB) ausgegeben.
Die Anzeige der X3-Meldungen wird mit dem Token AXUSERMSG ausgeführt.
Beispiel: <span id="userMsg" class="userMsg" adx="aMsgUser"></span>
Wichtiger Hinweis: Der Aufruf einer X3-Verarbeitung über einen Webservice ist "ohne Status" (stateless), d. h. der für die Verarbeitung eines Webservice verwendete (globale) Kontext der X3-Sitzung ist lediglich während der Verarbeitung des Service gültig. Nach der Verarbeitungsausführung geht dieser Kontext verloren. Er wird bei jedem Aufruf neu initialisiert.
Sämtliche Kontextdaten müssen in den Aufrufparametern des Webservice übergeben werden.
Beim Aufruf von Webservices vom Typ Unterprogramm fügt der XTEND-Server Kontextparameter hinzu, indem er die Parameter AXPARCOD und AXPARVAL der Veröffentlichungsgruppe AX_PAR belegt, sofern die Gruppe AX_PAR während der Veröffentlichung des Unterprogramms definiert wurde.
Standardkontextparameter:
Code | Beschreibung |
SITCOD | Code der XTEND-Webseite |
USRCOD | XTEND-Benutzercode, sofern der Benutzer identifiziert ist |
USRPRF | XTEND-Benutzerprofil, sofern der Benutzer identifiziert ist |
USRLANG | XTEND-Sprachcode (Sprache der Webseite) |
In diesem Schritt wird sichergestellt, dass die Webservices zur Verfügung stehen und korrekt funktionieren.
Siehe Seite Webservices.
Mit der Funktion Entwicklung/Safe X3 WAS/Link SAFE X3/Schnittstelle ein Schnittstellendatenblatt anlegen
Nach dem Aufruf eines Webservice vom Typ Aktion werden Daten zurückgegeben, bei denen es sich um Parameter eines Unterprogramms handelt, also um Felder eines X-Objekts.
Sämtliche für die Anzeige oder Übergabe von Parametern vom Typ Web oder XTEND verwendeten Felder müssen im Felddictionary deklariert sein.
Nach Anlage der Schnittstelle wird empfohlen, über das Menü "Tools/Tokenfeld anlegen" sämtliche vom Webservice zurückgegeben Felder anzulegen.
Die vom Webservice zurückgegeben Parameter werden in Veröffentlichungsgruppen eingeteilt.
Dieser Schritt besteht darin, eine XTEND-Entität pro Veröffentlichungsgruppe anzulegen.
Zur Anlage der Entitäten ist die entsprechende Funktion im Menü "Tools/Belegungshilfe" zu verwenden.
Dieser Schritt besteht darin, die Webaktion für die Definition des Abgleichs zwischen den Parametern des Webservice und den XTEND-Einheiten anzulegen.
Dieser Schritt besteht darin, den dynamischen Link anzulegen, der entweder in Form eines Buttons oder als Anker in die HTML-Seite eingefügt wird, damit der Benutzer die Aktion per Mausklick auslösen kann.
Über den dynamischen Link kann auch vorgegeben werden, wie die Aufrufparameter der Webaktion belegt werden: entweder mit den vom Benutzer erfassten Daten (Webfelder) oder mit den im Speicher gehaltenen Daten (XTEND-Felder).
XTEND kennt zwei Benutzertypen:
Der Benutzer identifiziert sich beim XTEND-Server über die Anmeldeseite, indem er einen Benutzercode und ein Passwort erfasst.
Die XTEND-Aktion ruft ein 4GL-Unterprogramm (Webservice) auf, das die Existenz des Benutzers und die Gültigkeit des Passworts prüft. Im Falle einer ungültigen Anmeldung wird eine Fehlermeldung (ADDMESSERR) ausgegeben.
"Geschützte" XTEND-Seiten sind lediglich für identifizierte Benutzer sichtbar.
Je nach XTEND-Profil, dessen Code vom Anmeldeprogramm zurückgegeben werden kann (optional), kann auch der Zugriff auf die XTEND-Seiten geschützt werden.
Siehe Anmeldung an die Webseite ASAMPLE.
XTEND kann alle 4GL-Unterprogramme aufrufen, die mit den folgenden 12 Parametern beginnen:
Subprog ACTION (AXPARCOD, AXPARVAL, AXUSERCODE, AXPWD, AXUSERPROF, AX3SOL,
AX3FLDR, AX3LANG, AX3USER, AX3PWD, AXLOGCOD ,AXLOGVAL ...)
Variable Char AXPARCOD()()
Variable Char AXPARVAL()()
Variable Char AXUSERCODE()
Value Char AXPWD()
Variable Char AXUSERPROF()
Variable Char AX3SOL()()
Variable Char AX3FLDR()()
Variable Char AX3LANG()()
Variable Char AX3USER()()
Variable Char AX3PWD()()
Variable Char AXLOGCOD()()
Variable Char AXLOGVAL()()
...
Parameter | Typ | Beschreibung |
AXPARCOD | Belegung durch die XTEND-Engine | Kontextparameter Schlüssel / Wert, die vom XTEND-Server bei Aufruf des Unterprogramms belegt werden. |
AXUSERCODE | Von Benutzer erfasst | Vom Benutzer erfasster XTEND-Benutzercode |
AXPWD | Von Benutzer erfasst | Vom Benutzer erfasstes Passwort |
AXUSERPROF | Von X3 zurückgegeben | Für die Verwaltung des Seitenzugriffs verwendeter X3-Profilcode |
AX3SOL | Von X3 zurückgegeben | Code X3-Lösung |
AX3FLDR | Von X3 zurückgegeben | X3-Ordnercode |
AX3LANG | Von X3 zurückgegeben | X3-Sprachcode für die Anmeldung an AX3SOL/AX3FLDR |
AX3USER | Von X3 zurückgegeben | X3-Benutzercode für die Anmeldung an AX3SOL/AX3FLDR |
AX3PWD | Von X3 zurückgegeben | X3-Passwort für die Anmeldung an AX3SOL/AX3FLDR |
AXLOGCOD | Von X3 zurückgegeben | Benutzerzusatzdaten vom Typ Schlüssel / Wert, die in der XTEND-Sitzung gespeichert werden (Block ASESSION). |
.... |
| Das Unterprogramm für die Anmeldung kann andere Daten zurückgeben, die XTEND-Entitäten zugeordnet werden |
Beschreibungsdaten des Unterprogramms für die Anmeldung.
Die Namen der Veröffentlichungsgruppe der AX*-Parameter müssen beachtet werden.
Code | Typ | Dim | Argumenttyp | Veröffentlichungsgruppe |
AXPARCOD | Char | 20 | Nach Adresse | AX_PAR |
AXPARVAL | Char | 20 | Nach Adresse | AX_PAR |
AXUSERCODE | Char | 1 | Nach Wert | AXLOG_PAR |
AXPWD | Char | 1 | Nach Wert | AXLOG_PAR |
AXUSERPROF | Char | 1 | Nach Adresse | AXLOG_PAR |
AX3SOL | Char | 10 | Nach Adresse | AXLOG_X3 |
AX3FLDR | Char | 10 | Nach Adresse | AXLOG_X3 |
AX3LANG | Char | 10 | Nach Adresse | AXLOG_X3 |
AX3USER | Char | 10 | Nach Adresse | AXLOG_X3 |
AX3PWD | Char | 10 | Nach Adresse | AXLOG_X3 |
AXLOGCOD | Char | 50 | Nach Adresse | AXLOG_RES |
AXLOGVAL | Char | 50 | Nach Adresse | AXLOG_RES |
Folgende Parameter werden zu Informationszwecken angegeben und vom XTEND-Benutzer verwaltet.
Eine Liste von Lieferadressen und eine Liste von Rechnungsadressen (max. 10 Zeilen), die den Entitäten SHIPADDR und INVADDR zugeordnet werden.
SHIPADDR | Char | 10 | Nach Adresse | SHIPADDR |
SHIPCITY | Char | 10 | Nach Adresse | SHIPADDR |
SHIPZIP | Char | 10 | Nach Adresse | SHIPADDR |
INVADDR | Char | 10 | Nach Adresse | SHIPADDR |
INVCITY | Char | 10 | Nach Adresse | SHIPADDR |
INVZIP | Char | 10 | Nach Adresse | SHIPADDR |