簡體   English   中英

帶有寧靜API的Birt

[英]Birt with restful APIs

我正在為一個PHP項目開發BIRT報告。 通過使用JDBC數據源直接連接到數據庫,我可以輕松地開發報告。 但是,某些數據來自寧靜的api,而我無法從這些api端點創建數據源。

Birt可以選擇從Web服務創建數據源,但是這似乎僅接受SOAP API。 我想知道是否有人可以向我展示如何從REST API創建Birt數據源。 我通讀了Google提供的所有搜索結果。 一些建議使用POJO數據源,而另一些建議使用腳本化數據源,這需要Java知識,而PHP程序員很難破解。 大多數鏈接都重定向到devshare,后者現在指向打開的文本,並且內容不再存在。 我嘗試了以下所有建議。

使用Webservices數據源:它需要wsdl文件的位置,而REST API不在該位置。 它僅隨SOAP API一起提供。 如果有替代方法,那會很好。

嘗試過POJO數據源和腳本化數據源:但是作為PHP開發人員無法獲得良好的結果,因為那里沒有逐步的指導來做到這一點。

因為REST在今天非常流行,所以我想知道是否有任何直接方法可以做到這一點,或者是否有人可以幫助Java或Javascript程序為PHP頭提供腳本化數據源。 在過去的15天里,我一直在嘗試這種方法,非常希望獲得一些幫助。

最終獲得了腳本化數據源。

使用open()方法創建腳本化數據源,如下所示:

logger = java.util.logging.Logger.getLogger("birt.report.logger");

importPackage(Packages.java.io);
importPackage(Packages.java.net);

//if you have a parameter
var param= params["industryname"].value;

var inStream = new 
URL("http://yourapi/endpoint/" + param).openStream();
var inStreamReader = new InputStreamReader(inStream);
var bufferedReader = new BufferedReader(inStreamReader);
var line;
var result = "";

while ((line = bufferedReader.readLine()) != null)
result += line;
inStream.close();

var json = JSON.parse(result);
vars["HTMLJSON"] = json;

logger.warning (result);
//logger.warning (json);

然后使用以下方法創建數據集:

打開()

recNum=0;

取()

len = vars["HTMLJSON"].length;

if (recNum >= len)
    return false;

row["name"] = vars["HTMLJSON"][recNum].name;
row["id"] = vars["HTMLJSON"][recNum].id;
row["active"] = vars["HTMLJSON"][recNum].active;

recNum++;

return true;

您可能需要在scriptlib文件夾中包含Apache Commons IO。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM