3

誰かがこれを行う方法についての指示を提供できますか?いくつかの異なるJDBCデータソースを設定していて、異なるデータソースを使用して同じレポートを実行するようにユーザーを構成できるようにしたいと考えています。たとえば、ユーザーAがログインしてレポートAを実行すると、データソース1が使用されます。ユーザーBがログインしてレポートAを実行すると、データソース2が使用されます。バージョン4.0を使用しています。

4

4 に答える 4

2

私は JasperReports Server のリリース 6.2 を使用していますが、ユーザーには属性があり、データソース接続設定でこれらの属性を参照できるため、これは完全に可能です。

たとえば、DB ホストに特定の IP を設定しません。代わりに、ユーザー属性を参照します (属性は、ユーザーに対して定義するか、組織またはサーバー自体から継承することができます)。

host = {attribute('dbHost')}

また

host = {attribute('dbHost', 'User')}

前者は、階層全体 (ユーザー > 組織 > 親組織 > サーバー) で属性を見つけようとします。後者は、ユーザーレベルで定義された属性を見つけることを期待しています。

JasperReports Server Admin Guideのセクション 4.1とここで完全な説明を見つけることができます。

http://community.jaspersoft.com/documentation/tibco-jasperreports-server-administrator-guide/v601/attributes-data-source-definitions

于 2016-06-20T15:24:25.217 に答える
0

このようなことは、JasperReportsServerのマルチテナントバージョンを使用することで実現できます。2つ(またはそれ以上)のテナント/会社があり、ユーザーは別の会社に割り当てられます。ログオンすると、ユーザーにはその会社に属するレポート/リソースのみが表示されます。そうすれば、会社ごとに異なるデータソースを使用でき、各会社で同じレポートを設定できますが、各レポートユニットはそれぞれのデータソースを指します。レポートの重複が心配な場合でも、共通のレポートJRXMLリソースファイルは、両方の会社(ルートレベルなど)で表示できる共通のフォルダーにあり、レポートユニットはこれらをサブレポートと呼びます。

于 2013-01-15T13:33:26.567 に答える
0

JasperReports Server には、そうするための組み込み機能はありません。JDBC データソースのラッパーとして機能する Java 拡張機能を実装する必要があります。このラッパーは、ユーザーごとに選択された既存の接続またはユーザー オブジェクト自体を利用して、必要な情報をデータソースに渡します。この記事は以前のバージョンを対象としている可能性がありますが、正しい方向に導くことができます。

一般的なカスタム データソースの詳細は、JasperReports Server インストールの samples/customDataSource フォルダ (jasperserver-install-dir/samples) にもあります。

于 2013-01-07T11:35:16.150 に答える