Im letzten Artikel haben Sie eine Übersicht über das DB2 Web Query REST-based Application Extension (= WQRAX) und dessen grundlegene Einrichtung bekommen. Hinsichtlich der möglichen Einsatzarten wurde dort der Browse-Modus vorgestellt. Doch gibt es noch eine weitere Einsatzmöglichkeit von WQRAX, und zwar den sogenannten direkten Modus. Dieser soll Ihnen hier vorgestellt werden.

Wenn Sie die spezifische URL des Reports, den Sie ausführen wollen, kennen, können Sie diese direkt aufrufen. Damit ersparen Sie sich die Suche im Navigationsbaum, wie dies im letzten Artikel beschrieben wurde. Sie können den Report direkt über eine Anwendung ausführen. Die Struktur des direkten Modus entspricht der des Browse-Modus. Der einzige Unterschied zwischen den beiden Modi liegt darin, dass Sie den gesamten Pfad des Reports als Wert für die Variable qwqPath in der URL angeben.

Wollen Sie beispielsweise den Report mit dem kompletten Pfad „My_Top_Level_Folder/My_Report.fex“ auf Ihrem Server ausführen, dann geben Sie folgende URL an:

your_server:12331/wqrax/report?qwqPath=My_Top_Level_Folder/My_Report.fex

Sobald Sie die URL zusammengestellt haben, können Sie die entsprechende Zeichenfolge für verschiedene Implementationen verwenden. Hier sind einige Beispiele:

Verknüpfung über eine Webseite oder eine PC-Anwendung,

Zusendung des Links per E-Mail an Kollegen,

Hinzufügen als Quelle zu einem HTML iframe als InLine Frame einer existierenden Webseite.

Da hier eine URL verwendet wird, muss jeder Endanwender Zugriff auf die IBM i haben und dazu auch berechtigt sein (als gültiger DB2 Web Query User oder als Mitglied einer registrierten Laufzeitgruppe). In einer Firmenumgebung könnte das auch bedeuten, dass eine VPN-Verbindung eingerichtet werden oder die Einstellung einer Firewall angepasst werden muss.

Die URL ist statisch und persistent. Das bedeutet, dass der berechtigte Anwender den Report jederzeit ausführen kann, solange dieser in derselben Ordnerstruktur vorhanden ist. Die URL kann als Lesezeichen abgelegt, in eine andere Webanwendung kopiert oder als Link in einer E-Mail verschickt werden.

Die URL eines Reports bestimmen

Um den direkten Modus in einer Anwendung oder einem Browser anwenden zu können, benötigen Sie die spezifische URL des Reports. Für das Ermitteln der Informationen zur Erstellung der URL eines Reports gibt es zwei Möglichkeiten:

Der gesuchte Report kann mit Hilfe des Browse-Modus gesucht und die entsprechende URL kopiert werden (der Browse-Modus wurde im letzten Artikel beschrieben).

Der Pfad für den gesuchten Report kann über das BI-Portal bestimmt werden. Dieser kann dann ins URL-Konstrukt eingefügt werden.

Browse-Modus zur Bestimmung der URL

Mit Hilfe des Browse-Modus kann der gewünschte Ordner oder Report gesucht werden. Die für diesen Ordner oder Report spezifische URL wird in der Adressleiste des Browsers angezeigt (siehe Abbildung 1).

Abbildung 1: Report mit dessen URL in der Adressleiste

Objektpfad im BI-Portal ermitteln

Eine andere Technik zur Bestimmung der URL ist die Verwendung der Pfadangabe für den gesuchten Ordner oder Report. Diese kann über das Kontextmenü des gesuchten Objekts gefunden und dann ins URL-Konstrukt eingebaut werden (siehe Abbildung 2).

Abbildung 2: Vollständigen Pfad für einen Report ermitteln

Zum Kopieren der Pfadangabe genügt es nicht, einfach die Tastenkombination Strg+C zu drücken. Dazu muss zunächst der gesamte Text markiert werden (dies gilt nur bei Verwendung von Google Chrome als Browser). Bei Verwendung von Mozilla Firefox oder Internet Explorer brauchen Sie nicht den gesamten Text zu kopieren, sondern können nur den notwendigen Teil markieren und dann kopieren.

IBFS:/WFC/Repository/Century_Electronics/Assignment_01_-_Simple_Reports/1bTop_10_Products_by_Margin.fex

Abbildung 3: Vollständige Pfadangabe für ausgewählten Report

Der Anfangsteil IBFS:/WFC/Repository/ wird für die Erstellung der URL nicht benötigt. Es genügt folgender Text:

Century_Electronics/Assignment_01_-_Simple_Reports/1bTop_10_Products_by_Margin.fex

Abbildung 4: Für die URL erforderlicher Teil der Pfadangabe

Dieser Teil der Pfadangabe wird nun für den Parameter qwqPath eingesetzt. Damit ergibt sich als URL das folgende Konstrukt:

http://your_server:12331/wqrax/report?qwqPath= Century_Electronics/Assignment_01_-_Simple_Reports/1bTop_10_Products_by_Margin.fex

Abbildung 5: Vollständige URL für den gewählten Report

Implementierung einer kurzen URL

Eine interessante Ergänzung zum direkten Modus ist ein Feature mit dem Namen WQRAX Kurze URL. Dieses Feature besteht aus einem Hash-Algorithmus (to hash = zerhacken, zerlegen), der es ermöglicht, den kompletten Pfad eines Reports in einen kürzeren Ausdruck (zwölf Zeichen) zu zerlegen. Der Hash-Algorithmus kann dann mit dem direkten Modus anstelle der kompletten Pfadangabe verwendet werden. Es handelt sich um ein Feature, das auch für Reports eingesetzt werden kann, die einen oder mehrere Parameter erwarten.

Diese Implementation ist dann nützlich, wenn Sie eine kürzere URL benötigen (beispielsweise bei Verwendung mit dem CL-Befehl STRPCCMD) oder wenn die eigentliche URL durch eine kryptische Darstellung verschleiert werden soll.

Das folgende Beispiel zeigt eine lange URL mit Parameterangabe.

http://your_server:12331/wqrax/report?qwqPath=My_Top_Level_Folder%2FMy_Report.fex &COUNTRY=Canada&PRODUCTTYPE=Office

Die lange URL kann durch folgende kurze URL ersetzt werden:

http://your_server:12331/wqrax/reports?id=r3skSZblbgvj

Wie kann diese Umwandlung erfolgen? DB2 Web Query enthält ein Serviceprogramm QWEBQRY/QWQGNSHURL mit einer Prozedur GENERATEID. Diese Prozedur gilt es in einem Programm mit den erforderlichen Parametern aufzurufen.

Abbildung 6: Serviceprogramm QWQGNSHURL mit Prozedur GENERATEID

Hier ist der Prototyp der Prozedur GENERATEID.

int GENERATEID

(const unsigned int port,

const char* uri,

char* outputID)

In RPGLE sieht dieser Prototyp wie folgt aus:

D GenerateID PR 10I 0

D portNumber 10U 0 value

D uriPtr * value options(*string: *trim)

D shortID 20A

Untenstehend ist noch ein weiterer Code-Ausschnitt für die Übergabe einer langen URL abgebildet, um über die Prozedur GENERATEID eine kurze URL zu erhalten.

portNumber = 12336;

uriString = ‚/wqrax/report?&

qwqPath=My_Top_Level_Folder/My_Report.fex‘;

%str(uriPtr:urisize) = uriString;

ReturnCode = GENERATEID(portnumber: uriPtr: shortID);

shortID=%trim(shortID);

shortURL = ‚http://my_server:12331/wqrax/reports?id=‘+ shor

Beachten Sie, dass für den Eingabeparameter der Prozedur GENERATEID portNumber der Wert = 12336 übergeben wird. Für die Anwendung der kurzen URL muss dann allerdings die Portnummer = 12331 verwendet werden.

Hier findet sich eine Erläuterung der BIF%STR aus der Bedienerhilfe von RRDi.

Abbildung 7: Erläuterung der Built-in Function%STR

Hinweis PTF:

Prüfen Sie, ob das folgende PTF installiert ist:

5733WQX SI53582 V2R1M0

Quellcode für ein lauffähiges RPG-Programm mit CL-Command

Falls Sie Interesse an einem lauffähigen RPG-Programm für die Erzeugung der kurzen URL haben, schicken Sie bitte eine E-Mail an: theo.baer@edv-baer.com

Vorschau:

Im nächsten Artikel wird Ihnen gezeigt, was bei der Verwendung von Parametern mit WQRAX zu beachten ist.

Bis dahin wünsche ich Ihnen viel Spaß beim Mehren Ihrer Fertigkeiten.