Dynamic Data Sources mit dem REST Service des Analytics Publisher

In einem früheren Post habe ich bereits über die REST Services des Oracle BI/Analytics Publisher berichtet. Hier ist insbesondere die POST-Methode interessant, mit der man existierende Berichtsdefinitionen ausführen kann.

Kürzlich kam in einem Projekt die Frage auf, ob man mit Hilfe eines REST-Aufrufs die definierte Datenquelle eines Berichts überschreiben kann. Diese Anforderung tritt auf, wenn ich ein und denselben Bericht gegen verschiedene Datenbanken (z.B. Test, Produktion, Schulung) laufen lassen will.

Da ich mit den SOAP Services des Analytics Publishers beim Aufruf die definierte Datenquelle überschreiben kann, stellt sich die Frage, ob dies auch mit den REST Services möglich ist.
Die offizielle Dokumentation gibt an dieser Stelle wenig her. Also blieb mir nichts weiter übrig, als es auszuprobieren.

Als Vorlage diente mir die Struktur des Datentyps „ReportRequest“, der in mehreren Methoden der SOAP Services (z.B. runReport, scheduleReport) verwendet wird.

<v2:reportRequest>
<v2:attributeFormat>pdf</v2:attributeFormat>
<v2:attributeLocale>en-US</v2:attributeLocale>
<v2:attributeTemplate>Test_Template</v2:attributeTemplate>
<v2:byPassCache>true</v2:byPassCache>
<v2:dynamicDataSource>
<v2:JDBCDataSource>
<v2:JDBCDriverClass>?</v2:JDBCDriverClass>
<v2:JDBCDriverType>?</v2:JDBCDriverType>
<v2:JDBCPassword>?</v2:JDBCPassword>
<v2:JDBCURL>?</v2:JDBCURL>
<v2:JDBCUserName>?</v2:JDBCUserName>
<v2:dataSourceName>?</v2:dataSourceName>
</v2:JDBCDataSource>
</v2:dynamicDataSource>
<v2:flattenXML>false</v2:flattenXML>
<v2:reportAbsolutePath>?</v2:reportAbsolutePath>
<v2:reportOutputPath>?</v2:reportOutputPath>
<v2:sizeOfDataChunkDownload>-1</v2:sizeOfDataChunkDownload>
</v2:reportRequest>

 

Transformiert man diese Struktur in ein JSON-Format sieht der Data Type so aus:

{
„attributeFormat“:“pdf“,
„attributeLocale“:“en-US“,
„attributeTemplate“:“Test_Template“,
„byPassCache“:true,
„flattenXML“:false,
„dynamicDataSource“: {
„JDBCDataSource“: {
„JDBCDriverClass“: „oracle.jdbc.OracleDriver“,
„JDBCDriverType“:“jdbc“,
„JDBCPassword“:“password“,
„JDBCURL“:“jdbc:oracle:thin:@ora19c:1521/PDB“,
„JDBCUserName“:“username“,
„dataSourceName“:“beliebig“
}
}
}

Baut man diesen Datentyp dann in das Formular der POST-Methode ein und ruft diese auf, wird der angegebene Bericht mit der im Aufruf angebenen Data Source ausgeführt.

Offensichtlich wurden die REST Services des Analytics Publisher so implementiert, dass sie die gleichen Aufrufstrukturen wie die SOAP Services verwenden. Dies gibt dem Entwickler viele Möglichkeiten und erleichtert die Nutzung der REST Services in eigenen Anwendungen.

Jürgen Menge (Der IT-Macher)

November 16th, 2021 by