パッケージJava製品開発担当の大です。こんにちは。

先週、エイチ・オー・エスは「帳票クリエータ Ver.2」をリリースしました。帳票クリエータは最初のリリースから2年あまり、今回が初のメジャーバージョンアップになります。

製品の概要や価格、ライセンス体系などは製品紹介ページを見ていただくとして、ここでは開発者から見て「帳票クリエータ Ver.2」って何なのか、ということについて書いてみたいと思います。

シーオーリポーツはライブラリ、帳票クリエータはフレームワーク

よくお客様からお問い合わせいただくのが、「シーオーリポーツと帳票クリエータって何が違うの?」というご質問です。確かにどちらも帳票を作成するツールですし、レイアウトを設計するフォームエディタや閲覧用のビュアーもいっしょですから、違いはいまいちわかりにくいですよね。一番の違いは、帳票出力を制御する部分なんです。

シーオーリポーツと帳票クリエータ

シーオーリポーツと帳票クリエータ(クリックで拡大)


シーオーリポーツの帳票出力エンジンである描画ライブラリは、帳票出力に必要なプリミティブな機能を提供する、シンプルなライブラリです。ユーザプログラムからの呼び出しは柔軟に行える一方、制御は1から10までユーザプログラムで行わなければなりません。また、データソースとの連携機能もないため、データベースへの接続やCSVファイルの読み込み等もユーザプログラムで行う必要があります。

これに対して、帳票クリエータは帳票出力の土台を提供するフレームワークと考えることができます。データソースとの連携や出力帳票形式をGUIのマッピングツールで定義すれば、あとはその設定情報を元に、帳票出力の制御は帳票クリエータが行います。帳票によって必要な処理(たとえば、取得データがマイナスの数値だったら文字色を変えるとか、明細リストがいっぱいになったら合計を計算するとか)は、必要なところだけイベントリスナとして追加できるので、シーオーリポーツよりもユーザプログラムの記述量はかなり少なくなります。

スクリプティング on 帳票クリエータ Ver.2

前述のように、帳票クリエータではイベントリスナとしてユーザプログラムを追加できる、イベント駆動型の開発をサポートしています。以前のバージョンの帳票クリエータでは、イベントリスナはJavaやVB.NETなどのプログラミング言語で記述、コンパイルして追加する必要がありました。

public class SampleEventListener implements IFormOpenedEventListener {
    public void formOpened(CrFormEvent e) throws CrException {
        // フォームオープン後にレイヤ0を不可視に設定します。
        e.getCrForm().getCrLayer(0).setVisibleAtPrint(false);
    }
}

帳票クリエータ Ver.2では、イベントリスナはJavaScriptでも書けるようになりました。もちろん従来どおりJavaやVB.NETでも記述できますが、簡単な条件分岐等はマッピングツール上でスクリプトを書いてすぐにプレビュー、結果を確認することができてお手軽です。スクリプトはXMLの設定ファイル中に保持されるため、運用段階に入ってもデプロイ等の手間無く、再編集して動作を変更することも可能です。

<Script on="formOpened">
    // フォームオープン後にレイヤ0を不可視に設定します。
    $L(0).visibleAtPrint = false;
</Script>

スクリプトエンジンは、JavaではSun JavaSE6に標準で搭載されているRhino、.NETではMicrosoft JScriptを利用しています。ECMAScript3で標準的に用意されている関数やオブジェクトはもちろん、Java/.NET Frameworkのクラスライブラリもスクリプト中で使用できます。独自の関数を定義し、それを複数の帳票でインクルードして再利用することもできるようになりました。

複数のデータソースとの連携

従来の帳票クリエータでは、1レポートにつきひとつのデータソースしか関連づけることができませんでした。このため、複数のフォームを切り替えて使用する帳票や、フィールドによって別々のデータソースを割り当てたい場合(例えばヘッダ項目はDBから取得するけど、明細リストの中身はCSVだったり)などには、うまく対応することができませんでした。

複数のデータソースとの連携

複数のデータソースとの連携(クリックで拡大)


帳票クリエータ Ver.2では、データソースのスキーマをレコードセットという形で構築します。レコードセットは複数定義でき、入れ子表現も可能です。これにより、「帳票側で欲しいデータ」と「実際のデータ」のミスマッチを解消できるようになりました。

WEB API(for Java)/WebService(for .NET)

AjaxでWEB APIを呼び出し

AjaxでWEB APIを呼び出し(クリックで拡大)


帳票クリエータ Ver.2 for Javaに用意されているWEB APIは、ウェブ経由で帳票クリエータを使用するためのAPIです。以前のバージョンではApache AXIS 2が必要でしたが、今回のバージョンからJAX-RSに対応したため、一般的なサーブレットエンジンとJerseyやRESTEasy等のJAX-RSの実装があれば動作します。REST形式であるため、Ajax等を利用して呼び出すことも簡単にできます。

帳票クリエータ Ver.2 for .NETに用意されているWebServiceは、帳票クリエータ Ver.2 for JavaのWEB APIと同様のREST形式のインタフェースに加え、SOAP形式でのアクセスにも対応した、ASP.NETアプリケーションです。Visual Studioで「Web参照」を使用すれば、ローカルのライブラリを使用するのと変らない感覚で利用できます。

体験版

というわけで、新しくなった帳票クリエータ、ぜひダウンロードして試してみてください!と言いたいところなのですが、実はまだ体験版のご用意ができておりません。すみません。。。近日中に公開しますので、もう少々お待ちください。。。