Benutzerzugriff auf Ihre WebFacing-Anwendung abfragen

Mit Hilfe der WebFacing-Umgebungs-API können Sie überprüfen, ob ein Benutzer über einen Webbrowser oder über die 5250-Emulation auf Ihre Anwendung zugreift. Abhängig von der Art des Zugriffs, den ein Benutzer hat, können Sie mit dieser API das Verhalten Ihres Programms ändern. Sie könnten beispielsweise ein zusätzliches Feld oder einen anderen Text anzeigen lassen, wenn über einen Browser auf Ihr Programm zugegriffen wird, und dieses Feld bzw. diesen Text unterdrücken, wenn der Zugriff über die 5250-Emulation erfolgt.

Die WebFacing-Umgebungs-API wird als QqfEnvironment bezeichnet und ist Bestandteil der WebFacing-Serverlaufzeit. Beim Namen der externen Prozedur, QqfEnvironment, muss Groß-/Kleinschreibung beachtet werden. Es handelt sich dabei um eine Prozedur, die in ein Serviceprogramm mit Namen QQFENV eingebunden ist, das sich in der Bibliothek QSYS befindet. Die API gibt den Wert 1 zurück, wenn die Anwendung unter WebFacing läuft, und den Wert 0, wenn sie unter 5250-Emulation ausgeführt wird.

Die Beispiele unten zeigen, wie diese API verwendet wird. Im RPG-Beispiel ist die externe Prozedur QqfEnvironment mit DSpec QQFENV definiert. In diesem Beispiel wurde für das DSpec QQFENV derselbe Name vergeben wie für das Serviceprogramm und es wurde als ganze Zahl definiert, da die Prozedur 0 oder 1 zurückgibt. Außerdem wurde ein DSpec rc definiert, um den Wert 0 oder 1 aufzunehmen, wenn Eval rc = QQFENV ausgeführt wird. Das RPG-Programm verwendet dann den Wert von rc, um fallabhängig das Verhalten des Programms zu bestimmen und um zu entscheiden, was in der DDS-Anzeige angezeigt werden wird.

Wenn im DDS-Beispiel unten der Wert für rc im RPG-Modul NICHT 1 ist, wird der Text "Anwendung läuft nicht in der WebFacing-Umgebung" angezeigt. Wenn der Wert für rc 1 ist, wird der Text "Anwendung läuft in der WebFacing-Umgebung" angezeigt.

Beachten Sie Folgendes, wenn Sie ein Programm erstellen, um mit dieser API zu arbeiten:
  1. Verwenden Sie den Befehl CRTRPGMOD, um mit Ihrem RPG-Code ein Modul für den Aufruf der API zu erstellen. Es muss ein RPG-Modul erstellt werden, da es eine Prozedur außerhalb des Programms verwendet.
  2. Verwenden Sie beim Erstellen des Programms (mit CRTPGM) das Schlüsselwort BNDSRVPGM, um Ihr RPG-Modul mit dem QQFENV-Serviceprogramm in QSYS zu binden.
Abbildung 1. RPGLE-Beispiel
.........1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
     FCHKENVFM  CF   E             Workstn
      *
     DQQFENV           PR            10I 0 Extproc('QqfEnvironment')
      *
     Drc               S             10I 0
      *
     C                   Eval      rc = QQFENV
     C                   Eval      FLD001 = rc
      *
     C                   Dow       NOT *IN03
      *
     C                   If        rc = 1
     C                   Eval      *in01 = *on
      *
     C                   Else
     C                   Eval      *IN01 = *off
     C                   EndIf
      *
     C                   Exfmt     FMT01
     C                   EndDo
      *
     C                   Eval      *inlr = *on
Abbildung 2. DDS-Beispiel
....+A*..1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
     A*%%TS  SD  20010924  150104  USERID      REL-V4R4M0  5769-PW1
     A*%%EC
     A                                      DSPSIZ(24 80 *DS3)
     A          R FMT01
     A*%%TS  SD  20010924  150104  USERID      REL-V4R4M0  5769-PW1
     A                                      CA03(03)
     A                                  1 24'WebFacing-Umgebungs-API testen'
     A                                      DSPATR(HI)
     A                                 10  3'F3=Exit'
     A                                      COLOR(BLU)
     A N01                              5 13'Anwendung läuft nicht in der -
     A                                      Webfacing-Umgebung'
     A  01                              6 15'Anwendung läuft in der -
     A                                      WebFacing-Umgebung'
     A                                      COLOR(RED)
     A            FLD001         4S 0O  7 39
     A                                  7 22'QqfEnvironment:'
     A
     A*%%GP SCREEN1    01

Feedback