Birt with restful API

时间:2018-04-09 03:52:41

标签: javascript rest birt

我正在为PHP项目开发BIRT报告。通过使用JDBC Datasource直接连接到数据库,我可以轻松地开发报告。但是某些数据来自restful api,我无法从这些api端点创建数据源。

Birt可以选择从Web服务创建数据源,但这似乎只接受SOAP API。我想知道是否有人可以告诉我如何从REST API创建birt数据源。我仔细阅读了谷歌提供的所有搜索结果。有些人建议使用POJO数据源,有些人建议使用脚本化数据源,这需要Java知识,而PHP程序员很难解决这个问题。大多数链接重定向到devshare,现在指向打开文本,内容不再存在。我尝试了以下所有建议。

使用Webservices数据源:它需要wsdl文件的位置,而REST API不存在该位置。它只带有SOAP API。如果有替代方案,那将会很棒。

尝试了POJO数据源和脚本数据源:但是由于没有一步一步的指导,因此PHP开发人员无法获得良好的结果。

因为REST今天很受欢迎,所以我想知道是否有任何直接的方法可以做到这一点,或者是否有人可以帮助Java或Javascript程序为PHP头部编写脚本数据源。我在过去的15天里一直在尝试这个,并且急需一些帮助。

1 个答案:

答案 0 :(得分:1)

结束脚本化数据源。

使用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。