サポート > Wagby定義ファイル > 26 活用のヒント > 複数項目の組み合わせパターンに応じたデータの閲覧制御を行う。
複数の暗黙条件指定を組み合わせることで、複雑な権限管理を行えるようになります。(R6.0.0)
仕様の例
あるモデルの複数項目の「組み合わせ」によって、アクセスレベルを算定できるものとします。 このとき、当該アクセスレベルをもった利用者のみ、データの閲覧を行わせたいという要件を実現してみます。
例を示します。ある工場からの出荷製品について、次のような条件でアクセスレベルを用意するものとします。
| 参照項目 | 判定 | ||
|---|---|---|---|
| (1) | 「該非判定処理」が済 | 「該非判定結果」が該当 | 非公開 |
| 「該非判定結果」が非該当 | 公開 | ||
| 「該非判定処理」が未 | 非公開 | ||
| (2) | 「ステータス」は特認前 | 非公開 | |
| 「ステータス」は認定前 | 非公開 | ||
| 「ステータス」は特認完了 | 公開 | ||
| (3) | 「製品種別」が一般品 | 公開 | |
| 「製品種別」がカスタム | 非公開 | ||
また、上記 1 〜 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)))マスタモデルを参照する場合、自動計算式で「#id」を付与するとマスタモデルのID値を取得することができます。
- さらにアクセスレベル項目について、複数の暗黙条件を設定します。
暗黙条件の設定では「指定した権限を満たした場合、この暗黙条件を適用しない(無視する)」というオプションが用意されています。この機能を活用します。
複数の暗黙条件が指定された場合
複数の暗黙条件が指定された場合、これらの暗黙条件は「かつ」条件式として扱われます。
ここで示した例の場合、下記の条件が適用されることになります。「アクセスレベル」項目は「1より小さい」かつ「2より小さい」かつ「3より小さい」かつ「4より小さい」(「適用外の権限」が考慮されていないとき)これに「適用外の権限」を考慮すると次のようになります。
- access1 権限を持つユーザの場合。
-
暗黙条件は以下のように動作します。
「アクセスレベル」項目は「2より小さい」かつ「3より小さい」かつ「4より小さい」
ただし、「2より小さい」という条件は「3より小さい」と「4より小さい」の包含しているので結果的には、「アクセスレベル」項目は「2より小さい」という条件が 適用されることになります。 - access1, access2 権限を持つユーザの場合。
-
暗黙条件は以下のように動作します。
「アクセスレベル」項目は「3より小さい」かつ「4より小さい」
ただし、「3より小さい」という条件は「4より小さい」の包含しているので結果的には、「アクセスレベル」項目は「3より小さい」という条件が適用されることになります。
- 続いて、権限を用意します。利用者毎に割り当てる「プリンシパル」と、各プリンシパルに対応した「パーミッション」を次のように指定します。
- 以上で設定を終了です。この定義ファイルをビルドして実行した例を次に示します。
実行例
- はじめに、システム管理者(admin)でログオンし、テストユーザを登録してみます。ここではレベル1からレベル4のプリンシパルをもったアカウントをそれぞれ作成してみました。
- 続いて製品(テストモデル)を作成します。各項目を入力すると、アクセスレベルの値は自動計算されます。
- アクセスレベル毎のテストモデルを用意した例を示します。
- アクセスレベル1をもったアカウントでログオンしてみます。
- アクセスレベル1のデータのみが閲覧できます。









