0

org.pentaho.reporting.engine.classic.core.DataFactory、より具体的には初期化メソッド (以前は ContextAwareDataFactory の一部でした) を調べると、インターフェイスを介してどのリソース/コンテキストのどの部分にアクセスできるのか疑問に思っていました。リソースマネージャー。

たとえば、レポートで定義された「リソース」、たとえばデータ ソースや数式 (クエリ メソッドを介してアクセスできるレポート パラメータは別として) にアクセスすることは可能ですか? 前もって感謝します!

4

1 に答える 1

1

リソース マネージャーを使用すると、zip/prpt ファイルに保存されている生データにアクセスできますが、解析済みレポートまたはその (解析済み) コンポーネントにはアクセスできません。

リソース マネージャーを使用すると、たとえば、埋め込まれた xml ファイルやその他のファイルを読み込んで、クエリ プロセスの一部として解析できます。

レポート定義とそのコンテンツへのアクセスを必要とするさらに厄介なことを行う場合は、サブレポートを使用してワイルドハックを介してアクセスできます。

  1. (コードを介して) 新しいレポート関数を作成します。その関数で、"reportInitialized" メソッドをオーバーライドしてレポート インスタンスを取得します ("event.getState().getReportDefinition()")。そのオブジェクトを関数に格納し、関数の「getValue()」メソッドを介して返します。

  2. その関数の結果をパラメーターとしてサブレポートに渡します。

  3. サブレポートのデータ ファクトリは、マスター レポートの関数によって返されるレポート オブジェクトであるパラメーターにアクセスできるようになりました。

このプロセスは意図的に複雑で面白くありません。データのクエリの過程でレポートを使用することには強く反対します。

PS: スクリプト可能なデータソースから SQL/MQL/MDX データソースにアクセスする場合は、PRD-3.9 以降、これらのデータソースに組み込まれているスクリプト拡張機能を使用してください。

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

于 2012-06-27T14:35:18.290 に答える