応用例 複数項目の組み合わせパターンに応じたデータの閲覧制御
最終更新日: 2020年3月14日
R8 | R9
あるモデルの複数項目の「組み合わせ」によって、アクセスレベルを算定できるものとします。
このとき、当該アクセスレベルをもった利用者のみ、データの閲覧を行わせたいという要件を実現してみます。
例を示します。ある工場からの出荷製品について、次のような条件で判定処理を行うものとします。
また、上記 1 〜 3 に対して、次のようなアクセスレベル表を用意するものとします。
始めにシステム管理者(admin)でログオンし、テストユーザを登録します。
ここではレベル1からレベル4のプリンシパルをもったアカウントをそれぞれ作成しました。
level1アカウントのプリンシパルには「一般ユーザ」と「レベル1」を付与します。同様に level2 アカウントには「レベル2」を、level3 アカウントには「レベル3」を、level4 アカウントには「レベル4」をそれぞれ付与します。
続いて製品(テストモデル)を作成します。各項目を入力すると、アクセスレベルの値は自動計算されます。
アクセスレベル毎のテストモデルを用意します。
アクセスレベル1をもったアカウントでログオンします。アクセスレベル1のデータのみが閲覧できます。
アクセスレベル2をもったアカウントでログオンします。
アクセスレベル1およびレベル2データが閲覧できます。
アクセスレベル3をもったアカウントでログオンします。
アクセスレベル1、レベル2、レベル3のデータが閲覧できます。
アクセスレベル4をもったアカウントでログオンします。
すべてのアクセスレベルのデータが閲覧できます。
サンプルで用意したモデルは次の通りです。
本サンプルで利用する項目を示します。
「アクセスレベル」を整数型として用意します。次の計算式によって求められるとします。
さらにアクセスレベル項目について、複数の暗黙条件を設定します。
暗黙条件の設定では「指定した権限を満たした場合、この暗黙条件を適用しない(無視する)」というオプションが用意されています。この機能を活用します。
複数の暗黙条件が指定された場合、これらの暗黙条件は「かつ」条件式として扱われます。
ここで示した例の場合、下記の条件が適用されることになります。
これに「適用外の権限」を考慮すると次のようになります。
暗黙条件は以下のように動作します。
ただし「2より小さい」という条件は「3より小さい」と「4より小さい」を包含しているので、結果的には「アクセスレベル」項目は「2より小さい」という条件が適用されることになります。
暗黙条件は以下のように動作します。
ただし「3より小さい」という条件は「4より小さい」を包含しているので、結果的には「アクセスレベル」項目は「3より小さい」という条件が適用されることになります。
権限を用意します。利用者毎に割り当てる「プリンシパル」と、各プリンシパルに対応した「パーミッション」を用意します。
サンプルの仕様
アクセスレベル
条件
説明
処理
レベル4
(1) かつ (2) かつ (3)
全世界へ公開
該当製品を公開する
レベル3
(1) かつ (2)
アジア地域へ公開
レベル2
(3)
国内へ公開
レベル1
社内限定
例
定義方法
IF(
AND(
${gaihihantei#id}==2,
${gaihihanteikekka#id}==2,
${status#id}==3,
${seihinsyubetsu#id}==1
),
4,
IF(
AND(
${gaihihantei#id}==2,
${gaihihanteikekka#id}==2,
${status#id}==3
),
3,
IF(
${seihinsyubetsu#id}==1,
2,
1
)
)
)
複数の暗黙条件が指定された場合
access1 権限を持つユーザの場合
access1, access2 権限を持つユーザの場合
権限の設定