2009-08-19 18 views
1

私は、データセットで利用できないデータに基づいて「推定」列を含める必要があるレポートを作成しています。外部依存関係で計算されたデータを表示

理想的には、私はJavaインターフェイスを定義できるようにしたいと思い

public int getEstimate(int foo_id, int bar_id, int quantity); 

どこfoo_idbar_idquantityは、私は推定値が提示する行でご利用いただけます。

見積もりを作成するための複数の戦略がありますので、必要に応じてインターフェイスを使用してスワップすることをお勧めします。

BIRTドキュメントを見ると、イベントハンドラのメカニズムを使用する必要があるかもしれませんが、それはクラスの定義のみを許可するようですが、設定された見積もりを注入したいと思っています。

難解でない例として、IPアドレス列を含むデータセットがあり、IPアドレスから国を解決するためにGeoIPサービスを使用できるようにしたいと考えています。その場合、私はインターフェイスpublic String getCountryName(String address)を持っていて、実際の実装ではMaxMind、ローカルキャッシュまたは他のシステムを使用することがあります。

どうすればいいですか?

または.. BIRTに配信する前に計算されたデータを統合できるスクリプト化されたデータソースを作成する方がよいでしょうか?

または何らかの種類のスクリプト化されたデータソースを使用して結合データセットを作成しますか?

答えて

0

私はScripted Data Sourceがうまくいくと思うが、Javaベースのイベントハンドラはもっと簡単だろう。これを単純なPOJOとして実装し、複雑なオブジェクトやツールにアクセスして、見積もりを計算することができます。最も簡単な解決策は、単純にデータセットに計算フィールドを追加することです。

計算フィールドを作成する際には、合成ロジックを使用して結果の値を生成することができます。このルートの中で一番いいのは、行の他のすべての列の値(見積もりを計算する必要があると仮定します)が式エディターで使用可能になっていることです。 「Packages」オブジェクト(var red = new Packages.redwood.HelloWorld())を使用して複雑なオブジェクト(POJO)を取得することもできます。

イベントハンドラクラスを作成する場合は、ここをクリックしてください。私はテキストオブジェクトを作成し、あなたのPOJOに(TextItemEventAdapterを拡張することによって)onCreateをバインドし、 "onCreate"メソッドをオーバーライドします。最後に、希望する作業を行うことができます。単に「text.setText(theEstimateResult);」と呼んで見積もり自体を表示するだけです。あなたの計算を行うためにデータ値にアクセスする限り、あなたはPOJOのものにもアクセスできます。私は、見積もりが大きな値表の一部になると考えています。特定の行の値には、reportContextを介してアクセスできます。

これらは私が最初に試してみる2つのアイデアです。計算列は実装するのが最も速く、展開中にカーブを投げる可能性は低いです。あなたが選択した方法を教えてください。私たちは必要に応じてさらにそれをハッシュすることができます。

+0

あなたの例では、redwood.HelloWordインスタンスがBIRTスクリプトからではなく、事前に設定されたプロパティをどのように持つことができるかを確認しようとしています。たとえば、BIRTを実行しようとしている私のSpringコンテキストでは、見積もり者が使用する必要のあるサービスインタフェース実装があるかもしれません。HelloWorldをインスタンス化することは、直接設定する必要があることを意味します。たぶん、私はSpring AOPを動的に注入する必要があるかもしれませんが、BIRT OSGIビットが途中で入るかもしれないと思われます。 イベントハンドラは素晴らしく見えますが、私はちょうど既存の外部からバットのインスタンスへの参照を取得する方法を知りません。 – ptomli

+0

イベントハンドラの例では、既存のインスタンスを取得して(同じVM内で実行している)必要がある場合は、シングルトンパターンを実装するために「何か」が必要になる可能性があります。プライベートコンストラクタとパブリック "getInstance()"メソッド。これにより、POJOから簡単に取得できます。 – MystikSpiral

+0

OK、私はいくつかの変種を試して、何が落ちるのかを見てみましょう。私はイベントハンドラがそれに対して良い感じを持っていますが(特定の目的のための特定のクラス)、データソースがSpring内でより良い制御メカニズムを提供すると考えています(インスタンスを挿入でき、Singletonを避けることができます)。ありがとう – ptomli

関連する問題