【问题标题】:Does the .prpt file (report template file) contain datasource information?.prpt 文件(报告模板文件)是否包含数据源信息?
【发布时间】:2021-09-05 21:15:54
【问题描述】:

当我使用 Pentaho Report Designer 创建报告时,它会输出一个扩展名为 .prpt 的报告文件。之后我在互联网上找到了一个示例,其中使用以下代码以 html 格式显示报告:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
     ResourceManager manager = new ResourceManager();  
     manager.registerDefaults();  
     String reportPath = "file:" +  
     this.getServletContext().getRealPath("sampleReport.prpt");  
      
     try {  
         Resource res = manager.createDirectly(new URL(reportPath), MasterReport.class);  
         MasterReport report = (MasterReport) res.getResource();  
         HtmlReportUtil.createStreamHTML(report, response.getOutputStream());  
     } catch (Exception e) {  
         e.printStackTrace();  
     }  
 }  

报告打印成功。因此,由于我们在这里没有指定任何数据源信息,我认为 .prpt 文件中包含该信息。

如果这是真的,那么 Jasper 不是比 Pentaho 更好的报告工具吗,因为当我们显示 Jasper 报告时,我们还必须提供数据源详细信息,这样我们的报告就很灵活,并且不绑定到任何特定的数据库。

【问题讨论】:

    标签: java jasper-reports pentaho


    【解决方案1】:

    不。数据源可以存储在 prpt 中,但也可以传递给报表。通常的方法是简单地使用 JNDI,这样您就可以将相同的报告部署到多个测试/开发/生产环境。

    您可能会从论坛获得更好更快的答案。 forums.pentaho.org

    【讨论】:

      【解决方案2】:

      PRPT 文件通常包含运行报告所需的所有信息。您可以通过修改从 ResourceManager 返回的 MasterReport 对象来提供自己的数据源。

      但是,我还必须看到这种操作真正有意义的有效用例。要在运行时为 SQL 数据源提供连接信息,您通常使用 Web 应用程序或 J2EE 服务器的 JNDI 子系统。

      99.99% 在 Pentaho BI-Server 上运行的报表不需要需要手动替换数据源才能运行。剩下的 0.01% 是来自旧报告引擎版本的遗留报告。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-16
        • 2012-04-02
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        • 1970-01-01
        相关资源
        最近更新 更多