一.概要
1.バージョン
帳票サーババージョン | 機能変動 |
11.0 | - |
11.0.31 | パラメータ$fine_role_idを追加し、役割のリネームによる権限設定の無効化を防ぐ |
2.機能概要
ユーザ認証後、帳票の3つの固定デフォルトパラメータ$fine_username、$fine_role、$fine_positionがSessionに保存されます。
同時に、GETUSERDEPARTMENTS()、GETUSERJOBTITLES()の2つの関数を提供し、それぞれ部署役割の部署と職位を取得します。
同じ帳票環境では、テンプレート内で直接パラメータの形式で対応する値を取得でき、その後テンプレート内でフィルタリング判断を行うことで、異なるデータとスタイルを表示できます。
3.パラメータ概要
権限の細粒度に関連するパラメータと関数は以下の表の通りです:
注意1:$fine_username、$fine_role、$fine_positionはFineReportのデフォルトパラメータですので、呼び出す際は大文字と小文字を正確に一致させる必要があります。
注意2: 模擬計算はサポートされていません。
パラメータ | 説明 | 例 |
$fine_username | システムにログインしたユーザ名を取得 | 例えば、ログインユーザ名がHanakoの場合 $fine_username=Hanako |
$fine_display_name | システムにログインした姓名(ユーザ名)を取得 | 例えば、ログインユーザ名が花子の場合 $fine_display_name==花子(Hanako) もしログインユーザの姓名「花子」のみを取得したい場合(姓名に重複がある可能性があることに注意) left($fine_display_name,find("(",$fine_display_name)-1)=花子 |
$fine_role | システムにログインしたユーザの役割を取得 | 1)もしログインユーザがスーパ管理者である場合 $fine_role=superusers 2)もしログインユーザの役割がカスタム役割(例えば、データアーキテクト)である場合 $fine_role=データアーキテクト 3)もしログインユーザに役割がない場合、 このパラメータの値は空白 4)もしログインユーザに複数の役割「役割1」「役割2」が存在する場合 $fine_role=役割1,役割2 |
$fine_role_id | システムにログインしたユーザの役割IDを取得 | 1)ログインユーザがスーパ管理者の場合 |
$fine_position | 部署職位を取得し、戻り値は部署と職位で構成される配列とする | 1)ログインユーザが「人事部-部長」の場合 |
GETUSERDEPARTMENTS() | 部署職位内の部署を取得 | 1)ログインユーザが「人事部-部長」の場合 |
GETUSERDEPARTMENTS(X) | 部署職位内の第X層の部署を取得 | 1)ログインユーザが「営業部-関東営業部-関東営業1組-リーダー」の場合 |
GETUSERJOBTITLES() | 部署職位内の職位を取得 | 1)ログインユーザが「人事部-部長」の場合 |
二.例一:ログイン名に基づくデータ内容の制限
本文の例:
FineReportポータルにはユーザsuzukinとyamadaが存在します。
データベースの「SALES_BASIC」テーブルには、「英語略称」というデータ列があり、この列のデータはFineReportポータルのユーザ名に対応しています。
「SALES_BASIC」テーブルに基づいて、「ログイン名に基づくデータ内容の制限」というテンプレートを作成し、FineReportポータルのディレクトリにマウントします。
suzukiとyamadaがシステムにログインしてこのテンプレートを表示すると、自分の販売データのみを見ることができ、他の内容は見ることができません。
注意:本章ではデータセットパラメータを例に使用していますが、ユーザはテンプレートパラメータを使用することもできます。
1.テンプレートの新規作成
デザイナを開き、新しい一般帳票を作成します。
新しいデータベースクエリds1を作成します:SELECT * FROM SAlES_BASIC where 英語略称='${fine_username}'
システムにログインしたユーザ名を取得します。例えば、ログインユーザ名がsuzukiの場合、$fine_username=suzuki。
以下の図のように:
2.テンプレートのデザイン
テンプレートのスタイルデザインは以下の図のように:

3.ポータルへのテンプレートのマウント
管理者がFineReportポータルにログインし、[システム]-[目次管理]をクリックし、[ディレクトリ管理]を選択し、[テンプレート追加]をクリックします。
前の節で作成したテンプレート「ログイン名に基づくデータ内容の制限」を選択し、[次へ]をクリックします。[タイプ]を[プレビュー]に選択し、[表示端末]の[PC]をチェックし、[確定]をクリックします。以下の図のように:
4.テンプレートのプレビュー権限の設定
管理者がFineReportポータルにログインし、[システム]-[権限管理]-[一般権限設定]をクリックします。
権限のキャリアを[全ての部署]に選択し、ディレクトリ「ログイン名に基づくデータ内容の制限」の[プレビュー]権限を割り当てます。以下の図のように:
5.効果のプレビュー
ユーザsuzuki(suzuki,123456)がFineReportポータルにログインしてこのテンプレートをプレビューすると、自分の販売内容のみを確認できます。以下の図のように:
ユーザyamada(yamada,123456)がFineReportポータルにログインしてこのテンプレートをプレビューすると、自分の販売内容のみを確認できます。以下の図のように:
6.テンプレートのダウンロード
テンプレートをダウンロードするにはこちらをクリックしてください:
注意:ポータルにテンプレート内の対応するユーザsuzukiとyamadaが存在することを確認してください。そうでない場合、最終的な効果を正しく表示できません。
三.例二:ログイン役割に基づく表示行と列の制限
異なる役割がテンプレートにアクセスするとき、表示されるテンプレートの列数や行と列の色が異なることを希望する場合、行と列に条件属性を追加して行の高さ、列の幅、背景などを設定することができます。
本章の例:
FineReportポータルには「demo」という役割があり、ユーザAnnaはこの役割に属し、ユーザAliceはこの役割に属していません。
ディレクトリにはあるテンプレートがマウントされており、このテンプレートには「販売量」列が存在します。
「demo」役割に属さないユーザAliceがFineReportポータルにログインしてこのテンプレートをプレビューすると、「販売量」列を確認できます。
「demo」役割に属するユーザAnnaがFineReportポータルにログインしてこのテンプレートをプレビューすると、「販売量」列を確認できません。
1.テンプレートの新規作成
デザイナを開き、新しい一般帳票を作成します。
新しいデータベースクエリds1を作成します:SELECT * FROM 販売量
以下の図のように:
2.テンプレートのデザイン
テンプレートのスタイルデザインは以下の図のように:
3.条件属性の設定
E2セルを選択し、右側の設定バーの[条件属性]をクリックし、[条件の追加]を選択します。
[数式条件]の[タイプ]を[数式]に設定し、数式の内容は次の通りです:$fine_role='demo'。[追加]をクリックします。以下の図のように:
注意:ユーザが複数の役割を持っている場合、数式はfind('demo',$fine_role)>0となります。
4.ポータルへのテンプレートのマウント
管理者がFineReportポータルにログインし、[システム]-[目次管理]をクリックし、[ディレクトリ管理]を選択し、[テンプレート追加]をクリックします。
前の節で作成したテンプレート「ログイン役割に基づく表示行と列の制限」を選択し、[次へ]をクリックします。[タイプ]を[プレビュー]に選択し、[表示端末]の[PC]をチェックし、[確定]をクリックします。以下の図のように:
5.テンプレートのプレビュー権限の設定
管理者がFineReportポータルにログインし、[システム]-[権限管理]-[一般権限設定]をクリックします。
権限のキャリアを[全ての部署]に選択し、ディレクトリ「ログイン名に基づくデータ内容の制限」の[プレビュー]権限を割り当てます。以下の図のように:
6.効果のプレビュー
「demo」役割に属さないユーザAlice(Alice,123456)がFineReportポータルにログインしてこのテンプレートをプレビューすると、「販売量」列を確認できます。以下の図のように:
「demo」役割に属するユーザAnna(Anna,123456)がFineReportポータルにログインしてこのテンプレートをプレビューすると、「販売量」列を確認できません。以下の図のように:
7.テンプレートのダウンロード
テンプレートをダウンロードするにはこちらをクリックしてください: