DEPT!@CUR.Label = DEPT!@POV.Label (1)
アクセス許可タイプ
ワークグループタイプのアプリケーションでは、アクセス許可タイプは利用できません。 |
アクセス許可タイプとは何か
「アクセス許可タイプ」は、ユーザの担当職務や組織にもとづいて、アクセス可能な元帳セルの範囲を柔軟に制御するための設計オブジェクトです。
アクセス許可タイプは、例えば、以下のようなアクセス許可条件を表します:
-
自部門のデータのみ参照可能 & 更新は一切不可
-
自事業部のデータのみ参照・更新可能
-
全部門の人件費予算のみ参照・更新可能
アクセス許可タイプの特長
(1)アクセス許可範囲の「基準点」を、パラメータ化できる
上述の例のように、アクセス許可タイプの定義にあたっては、「自部門」「自事業部」というように、アクセス許可範囲の「基準点」をパラメータ化することができます。すなわち、「自部門」が具体的にどの部門なのかという情報をアクセス許可定義に含めずに、別途指定することができます。
このため、アクセス許可タイプは、個々の組織単位ごとに設ける必要がありません。たとえば、各部門のユーザに「自部門のデータのみ参照可能」という権限を与えたいというケースを考えましょう。この場合、部門が 100 個あったとしても「アクセス許可タイプ」を100個作成する必要はありません。「自部門のデータのみ参照可能」という条件を組み込んだアクセス許可タイプを1個作成するだけで十分です。
「自部門」がどの部門かは、「業務責任単位」という別のオブジェクトで設定します。どのユーザにどの業務責任単位の権限を与えるかも別途設定します。アクセス制御に必要な情報をこのように適切に切り分けて設定できるので、fusion_place でのアクセスセキュリティ設定は手間がかからないものとなっています。
領域定義式
アクセス許可タイプには、読み取り許可領域定義式と、書き込み許可領域定義式が含まれます。2つの領域定義式がそれぞれ元帳セルごとに評価され、結果が「True」となった場合にのみ、そのセルの値の読み取りまたは書き込みが許可されます(ただし他の理由で書き込みが禁止されることがあります)。
領域定義式が指定されていない場合は、どの元帳セルについても「True」となる式が指定されたものとみなされます(したがってすべてのセルに対してアクセスが許可されます)。
⚠ すべてのセルへのアクセスを禁止したい場合は、領域定義式の欄に "FALSE" と入力してください(二重引用符は含まず)。
領域定義式の記述方法
領域定義式はテキスト式の方言のひとつです。詳細な文法についてはテキスト式の解説をご参照ください。ここでは領域定義式の特長に加えて、よく使われると思われる記述例をいくつかご紹介します。
特長
マスク条件式と同じく、領域定義式でも、「現在のメンバ」は、検査対象である個々の元帳セルに結びついたディメンションメンバを意味します(前述したように、領域定義式の判定は、個々の元帳セルごとに行われます)。
それに加えて、領域定義式では、ユーザが所属する業務責任単位の「責任範囲キー」で指定されたメンバを、「視点メンバ」として参照することができます。たとえば、DEPT
ディメンションに関する「視点メンバ」を DEPT!@POV
で取得することができます("POV":Point of View の略)。
視点メンバは、「アクセス許可タイプの特長」で述べた「アクセス許可範囲の基準点」として使うことができます。具体的には、領域定義式で、「現在のメンバ」と「視点メンバ」の関係を判定することによって、それぞれの業務責任単位ごとに異なるアクセス許可領域を指定することができます(下記記述例もご参照下さい)。
記述例
(1)ディメンションメンバのラベルによる条件判定
例)
1 | 元帳セルに係る部門(DEPT)ディメンションメンバのラベルが、ユーザが選択した業務責任単位の「責任範囲キー」で指定された部門(DEPT)ディメンションメンバのラベルと一致していること。すなわち、自部門のデータであること。 |
式の要素 | 意味 |
---|---|
DEPT |
|
DEPT!@CUR |
上記ディメンションの「現在のメンバ」 ⚠領域定義式で「現在のメンバ」とは、対象元帳セルに関わるメンバの意味です。 |
DEPT!@CUR.Label |
上記メンバのラベル |
= |
左辺と右辺の値が等しいことを検査する |
DEPT!@POV |
⚠領域定義式で「視点メンバ」とは、ユーザが選択した業務責任単位の「責任範囲指定キー」で指定されているメンバの意味です。 |
DEPT!@POV.Label |
上記メンバのラベル |
なお、.Label を省略して、上述の式を次のように書くこともできます。
DEPT!@CUR = DEPT!@POV
(2)ディメンションメンバの親子関係による条件判定 - 1
例)
DEPT!@CUR.is_descendent_of(DEPT!@POV) (1)
1 | 元帳セルに係る部門(DEPT)ディメンションメンバが、ユーザが選択した業務責任単位の「責任範囲キー」で指定される部門(DEPT)ディメンションメンバの子孫であること。すなわち、自部門配下の部門のデータであること。 |
式の要素 | 意味 |
---|---|
DEPT |
|
DEPT!@CUR |
上記ディメンションの「現在のメンバ」 |
is_descendent_of(…) |
対象メンバ(左のメンバ)が、引数で指定された(右の)メンバの子孫である場合に「True」を返すメソッド |
DEPT!@POV |
|
(3)ディメンションメンバの親子関係による条件判定 - 2
例)
DEPT!@CUR.shares_ancestors_with(DEPT!@POV, TRUE, "DEPT_TYPE", "DIV") (1)
1 | 元帳セルに係る部門(DEPT)ディメンションメンバと、ユーザが選択した業務責任単位の「責任範囲キー」で指定される部門(DEPT)ディメンションメンバが、同じ事業部に属すること。すなわち、自事業部配下の部門のデータであること。 |
式の要素 | 意味 |
---|---|
DEPT |
|
DEPT!@CUR |
上記ディメンションの「現在のメンバ」 |
shares_ancestors_with(…) |
対象メンバ(左のメンバ)と、第 1 引数で指定された(右の)メンバが、第 2 ~ 第 4 引数で指定された条件を満たす共通の祖先メンバを持つ場合に「True」を返すメソッド ⚠ 「祖先メンバ」とは自分自身およびその直接・間接の親メンバのことです。 |
DEPT!@POV |
|
TRUE |
|
DEPT_TYPE |
|
DIV |
第 4 引数は、第 3 引数で指定されたプロパティについて、対象メンバが保持していなくてはならない値のラベルを指定します。左記 第 3・第 4 引数を合わせると、検索対象祖先メンバを「事業部」に限定する意味となります。 |