可通过DataFactory接口访问的资源

时间:2012-06-25 14:16:22

标签: pentaho

查看org.pentaho.reporting.engine.classic.core.DataFactory,更具体地说是初始化方法(以前是ContextAwareDataFactory的一部分)我想知道通过接口可以访问哪些资源/上下文的哪个部分,例如通过ResourceManager。

例如,是否可以访问报告中定义的“资源”,例如数据源或公式(除了可通过查询方法访问的报告参数)?提前谢谢!

1 个答案:

答案 0 :(得分:1)

资源管理器允许您访问存储在zip / prpt文件中的原始数据 - 但我们不允许您访问已解析的报告或其任何(已解析的)组件。

使用资源管理器,您可以加载嵌入的xml或其他文件,并将其作为查询过程的一部分进行解析。

如果您要做一些需要访问报告定义及其内容的额外讨厌的内容,那么您可以通过使用子报告的狂野黑客获取访问权限:

  1. 创建一个新的报告功能(通过代码)。在该功能中,覆盖 获取报表实例的“reportInitialized”方法 ( “event.getState()。getReportDefinition()”)。将该对象存储在 函数并通过函数的“getValue()”方法返回它。

  2. 将该函数的结果作为参数传递给子报告。

  3. 子报表的数据工厂现在可以访问参数, 这是master-report函数返回的报表对象。

  4. 这个过程有意复杂而且不好玩。我们强烈反对在查询数据的过程中使用该报告。

    P.S:如果您打算从可编写脚本的数据源访问SQL / MQL / MDX数据源,那么只需使用自PRD-3.9以来内置于这些数据源中的脚本扩展。

    http://www.sherito.org/2011/11/pentaho-reportings-metadata-datasources.html