2011-01-03 16 views
2

BIRTの基本チュートリアルをチェックしたところ、BIRTはデータベース中心であると感じました。私はまったく別の状況です。BIRTを使用したレポートの作成

別の種類のデータソースからレポートを生成する必要があります。公開されるデータはオンザフライで作成されます(これは別のモジュールの作業です)、データを保持する複雑なデータ構造(List of Mapsなど)があります。私はテンプレートを作成することはできません。テンプレートはすべてユーザーの操作に依存しています。しかし、データ構造には、各レポートを作成するために必要なすべてのデータ、つまり列名、行数、行の値が含まれています。

この種のデータソースからレポートを作成する方法は本当に混乱しています。 BIRTはPOJOのみをサポートします。データセットとしてマップを指定し、データソースとしてJavaクラスを指定できる方法はありますか?そうでない場合、代替案は何ですか?

答えて

2

私は、BIRTがデータに頼りがちなツールの一つだと主張します。どのレポート作成ツールもデータ中心のものになります。データは、ユーザーに提示しようとしているものです。 BIRT(あなたが指摘しているように)は、RBDMSソースと非RDBMSソース(POJOなど)の両方を幅広くサポートしています。

POJOは、アプリケーション駆動のデータ収集では論理的に適していると思います。問題はデータへのアクセスではありません。 BIRTはこれをPOJO経由で簡単に行うことができます(BIRT Exchangeでこれを参照してください)。この問題は、レポート自体でデータをどのように使用するのかという点に関係しています。

レポートのアーキテクチャで最も重要な依存関係は、収集されたデータを意味のある方法で適用するためにユーザーにデータを伝達するために利用しているさまざまなコントロールの機能です。コントロール(チャート、テーブルなど)は、データ型と列名(アクセスの理由から)の2つのことを気にします。これらの2つのことは、コントロールがデータセットから要素を要求し、それを結果として得られるキャンバスに正常に適用する場合に重要です。

カラム名の最初の問題は、汎用カラム名を作成し、実行時にデータセットがアセンブルされるときにPOJOからそれらのカラムを簡単に取り込むことで、簡単に処理できます。列がデータセットおよびコンポーネントレイヤー全体でどのように管理されるかについては、一貫性と論理が必要ですが、それは実行可能です。 は、実行時にデータセットに列を追加することもできませんが、設計時に最大数の列を設計し、実行時に必要なものを移入できます。

データ型の2番目の問題は、少し制限があり、実装前にさらに計画する必要があります。データセットVal1の最初の要素の名前を(前の段落に沿って)指定して文字列として入力した場合は、データセットを作成するたびに文字列を保持する必要があります。そうしないと、実行時エラーが表示されます。データで膨大な計算をしていない場合は、実行時にPOJOをデータセットに変換するときに、データ型の変換でこれを克服することができます。

あなたが探していることをする方法があります。この実装には、データセットの構造とデータセットを活用するコントロールのレイアウトの両方について多大な計画が必要です。 レポートのライフサイクルのすべてのイベントをスクリプトで上書きすることができ、多くの活用力と柔軟性を提供します。

最後に、厳密に型指定されたデータセットを使用して実行時にすべてを実行したい場合は、そうすることができます。コードでレポートを生成するには、BIRT APIを使用する必要があります。 WYSIWYG Eclipseデザイナーでできることは、広範なAPIを使ってコード内で行うことができます。 BIRT Exchangeもチェックしてください。これらの複雑な項目を再利用可能なポートフォリオに集約するために、レポートライブラリ(BIRTのもう1つの優れた機能)を検討することをお勧めします。

0

データに基づいてコードからレポートを作成する必要があります。あなたは、あなたの状況をそのように言い表すのに十分なほど詳しく説明していませんでした。コードからのビルドは、まれにしか行われないようにする必要があります。これは、変更のためにプログラムの変更が必要なためです。しかし、コントロールの必要が報告ツールの範囲外である場合は、そのアプローチを見てください。このアプローチをとっていれば、PDF生成にiText、DOCX/XLSX/PPTX用OpenXMLなどを使うことができます。

これでPOJOからXMLファイルを作成できますか?これは追加のステップですが、可能であれば、XMLのスキーマが一定であれば、ほとんどのレポーティングシステムにフィードを提供できます。これは、レポーティング・レイアウト、書式設定、およびロジックをレポーティング・ツールで保持するように、より良いアプローチになります。あなたの時間を節約し、改訂をもっと簡単にします。

XMLルートをご利用になる場合は、Windward Reportsをご覧ください。 Windwardでは、Microsoft Word、Excel、またはPowerPointでレポートをデザインしています。これにより、レポートのデザインと編集が簡単になります。&が簡単になりました(WindwardのCTOです)。

一般的な情報については、java-reportsreporting-softwareをお勧めします。あなたにとってうまくいくシステムの鍵は、デザインツールがあなたのスタイルに自然にフィットするものです。それで、いくつか試してみてください。

1)スクリプトデータソースを使用してアプリケーション・コンテキストを通して、あなたのリスト/マップ構造に渡す:

4

あなたは、いくつかの異なるオプションがあります。 、スクリプトデータセットのフェッチイベントで、

var myData = reportContext.getApplicationContext().get("myPassedInValue"); 
reportContext.setGlobalVariable("data", myData); 

その後、必要に応じて、リスト/マップを反復処理:レポートでは、初期化イベントでこのような何かを行います。

2)データ構造を明示的に処理するODAプラグインを作成します。これはより多くの足の仕事ですが、レポートのデザインを容易にします。

3)BIRTのDesign Engine APIを使用してプログラムとデータを作成します。

関連する問題