Pentaho 可通过DataFactory接口访问的资源

Pentaho 可通过DataFactory接口访问的资源,pentaho,Pentaho,查看org.pentaho.reporting.engine.classic.core.DataFactory,更具体地说,查看initialize方法(以前是ContextAwareDataFactory的一部分),我想知道哪些资源/上下文的哪些部分可以通过接口访问,例如通过ResourceManager 例如,是否可以访问报表中定义的“资源”,例如数据源或公式(除了可以通过查询方法访问的报表参数)?提前谢谢 资源管理器允许您访问zip/prpt文件中存储的原始数据,但我们不允许您访问已解析的

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


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

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

使用资源管理器,您可以加载嵌入式xml或其他文件,并在查询过程中解析它们

如果您要做一些特别讨厌的事情,需要访问报表定义及其内容,那么您可以通过使用子报表的恶意攻击获得访问权限:

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

  • 将该函数的结果作为参数传递给子报表

  • 子报表的数据工厂现在可以访问参数, 它是主报表函数返回的报表对象

  • 这个过程有意地复杂而不有趣。我们强烈反对在查询数据的过程中使用报表

    注意:如果您打算从可脚本化数据源访问SQL/MQL/MDX数据源,那么只需使用自PRD-3.9以来内置到这些数据源中的脚本扩展即可


    Thomas,感谢您精心准备并迅速回复。我的主要意图是开发一个数据源,它确实(与您已经怀疑的非常类似)可以访问报表中定义的所有其他数据源(SQL/Table/…),并且随后可以利用它们各自的表模型(通过对每个表模型调用queryData)。从您上面的回答中,我得出结论,没有直接的方法来访问数据源(当然,除了您提出的wild&crazy hack(这让我笑了),或者通过访问prpt中嵌套的数据源xml定义)。我说得对吗?