コードを記述することなしにデータを表やグラフとして出力できる帳票ツール「Elixir Report」 4ページ

クライアントアプリケーションからのアクセス

 Elixir Reportにはレポートサーバーへのアクセスを行うためのJavaライブラリが付属している。たとえばレポートを生成するには、レポートサーバークライアントである「com.elixirtech.ers2.client.ERSClient」クラスのインスタンスを作成してrenderReportメソッドを実行すれば良い。

 次のサンプルコードは、レポートサーバーにアクセスしてPDF形式のレポートを生成しそれをクライアントに返す、というJavaサーブレットを実装したものだ。

import java.io.IOException;
import java.util.Properties;

// レポートサーバーAPIクラスのインポート
import com.elixirtech.ers2.client.ERSClient;
import com.elixirtech.job.IJobInfo;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ItdServlet extends HttpServlet {

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException {
        
        // サーバーに渡すプロパティの準備
        Properties prop = new Properties();
        // prop.put( "key", "value"); の形でキーと値を指定できる

        // 生成したレポートに対応するストリームの準備
        ServletOutputStream sos = response.getOutputStream();

        // 出力Content-Typeを設定
        response.setContentType("application/pdf");
        try {
            // レポートサーバー接続管理オブジェクトの作成
            ERSClient client = new ERSClient("localhost",  // 接続先ホスト
                                             7001,         // ポート番号
                                             "itd_test",   // ユーザー名
                                             "itd_test");  // パスワード

            // レポートサーバーへレポート生成リクエストを発行
            IJobInfo job = client.renderReport("/IT_System/itd_investment.rml",
                                               "application/pdf",
                                               sos,
                                               prop);

            // エラー判定処理
            if (job.getInteger(IJobInfo.STATUS_CODE) == IJobInfo.STATUS_OK) {
                // 正常時の処理
                sos.flush();
                sos.close();
            } else {
                // エラー時の処理(省略)
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 このJavaサーブレットをコンパイルしてTomcat(Javaアプリケーションサーバー)に配備し、WebブラウザでアクセスするとPDF形式でレポートが生成され、それがWebブラウザ上で表示される(図29)。

図29 WebブラウザでTomcatにアクセスしてJavaサーブレットを実行するとレポートが表示される
図29 WebブラウザでTomcatにアクセスしてJavaサーブレットを実行するとレポートが表示される

コーディングなしにドキュメント作成が可能に、柔軟性も高いElixir Report

 以上ではElixir Reportのレポートデザイナおよびレポートサーバーの機能を簡単ではあるが紹介してきた。このようにElixir Reportを使うことで、一切コードを書かずにデータからレポートを作成することが可能になる。また、レポートサーバーにアクセスするクライアント側のコードも、ライブラリを使用することで簡潔に記述できる。Elixir Reportを使用することで、帳票を出力するようなアプリケーションや、さまざまなデータをグラフィカルに表示させるようなアプリケーションにおいて、その実装の手間を大きく軽減できるだろう。

 さて、今回はMySQLをデータソースとして使用したが、Elixir ReportではXMLファイルやExcelファイルなど、さまざまなデータソースにも対応している。また、データソースとしてJDBCドライバを利用できるため、SalesforceやGoogleなどのクラウドサービスに対応したJDBCドライバと組み合わせることで、クラウド上のデータを簡単にドキュメント化することが可能だ。次回は、これら外部データソースの活用について紹介する。