在Pentaho中动态生成报告并处理数据库中存储的报告定义

在Pentaho中动态生成报告并处理数据库中存储的报告定义,pentaho,Pentaho,我正在开发一个报告应用程序,用户可以从100个报告的列表中选择(并排序)报告,并请求主报告。此主报告将按确切顺序包含所有选定的报告,并带有一个目录,列出主报告中包含的报告。可供用户选择的报告(可能是100秒)存储在数据库中 我的问题是:- 要使用用户选择的报告生成主报告,我能看到的唯一解决方案是使用报告引擎API生成动态报告,我必须将用户选择的报告作为子报告添加到其中。这是解决这个问题的正确和最简单的方法吗?是否有人有报告引擎API使用的示例,特别是在主报告中插入子报告 由于我将报告存储在db(

我正在开发一个报告应用程序,用户可以从100个报告的列表中选择(并排序)报告,并请求主报告。此主报告将按确切顺序包含所有选定的报告,并带有一个目录,列出主报告中包含的报告。可供用户选择的报告(可能是100秒)存储在数据库中

我的问题是:-

  • 要使用用户选择的报告生成主报告,我能看到的唯一解决方案是使用报告引擎API生成动态报告,我必须将用户选择的报告作为子报告添加到其中。这是解决这个问题的正确和最简单的方法吗?是否有人有报告引擎API使用的示例,特别是在主报告中插入子报告
  • 由于我将报告存储在db(BLOB)中,因此我试图找到一种方法,使用inputstream而不是
    ResourceManager.createDirect(URL,MasterReport.class)
    中指定的URL生成子报告,但迄今为止尚未成功。如何从数据库中存储的定义生成报告?应该有一些资源抽象

  • 将报告读入字节数组,然后像往常一样使用ResourceManager.CreateDirective方法。这将解决您解析报告的问题

    您可以使用

    ResourceManager.createDirectly(字节,子报表.class)

    然后,这些子报告可以作为带状子报告添加到主报告中。如果希望所选报告在新页面上开始,请确保在子报告的报告标题上设置“pagebreak before”样式

    有一个资源抽象:它被称为“LibLoader”,您可以创建自己的ResourceLoader来处理将数据作为原始流从数据库中取出的问题,以便ResourceFactory实现可以解释/解析原始数据


    但是每个数据库的设计都不同,因此作为系统集成商,您必须为其编写粘合代码。我们只能提供接口。

    你说得对。我昨天在看了源代码之后意识到了这一点。对于字节[],一个RawResourceLoader开始工作。我想知道如何让报告从新的一页开始。多亏了你,我现在知道了。