带有 restful 个 API 的 Birt

Birt with restful APIs

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

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

使用 Web 服务数据源:它需要 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;

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