Eclipse BIRTのレンダリング時にReport Parametersによって読み込む固定ファイルを変更する

シナリオ

  • レポート生成ツールとしてEclipse BIRTを利用している
  • 多数のCSVファイルが存在する
  • BIRT Serverへのリクエスト時に引き渡す値によって異なるCSVファイルを読み込んで出力したい

CSVを読み込むには

以下、BIRT用のEclipse Designerを利用していることが前提条件です。

今回はBIRT 4.3.1で確認。

  • Data Explorer > Data Sources > New Data Source
  • Flat File Data Sourceを選択し、このデータソース名の名前を入れる(例: summary)
  • Define Folder or a File URI で何も入力せず*1に Test Connection > Finish
  • Data Sourcesに追加されたデータソースをEditで開き、Property Bindingを選択
  • この中の File URI にはJavaScriptを利用した動的URIが記載できるので、それに従って記載する。


具体例として、year, month, dayを受け取って、"data/[year]/[month]/[day].csv" *2 を開く場合は以下のようになる。

なお、相対パスでファイルを記述する場合はContextRootからの相対パスになります。

大抵の場合、/(Tomcatなどのインストールパス)/webapps/birt/ がContextRootとなるので、この場合はbirtの下にdataという名前のシンボリックリンクを張っておけば便利に利用できるでしょう。

'data/' + param['year'] + '/' + param['month'] + '/' + param['day'] + '.csv'


XML Sourceで見るとこんな感じ。

        <structure>
            <property name="name">URI</property>
            <property name="id">10</property>
            <expression name="value" type="javascript">'data/' + param['year'] + '/' + param['month'] + '/' + param['day'] + '.csv'</expression>
        </structure>


最初のWizardでできると思ってかなり調査に時間を使ってしまった…

*1:後述の入力があると、この入力は無視される模様

*2:ここでは 0-padding無しの入力を考慮していないので、そのチェックが必要な場合はJavaScriptを使って記述してください