アクセス許可タイプ

設計者
ワークグループタイプのアプリケーションでは、アクセス許可タイプは利用できません。

アクセス許可タイプとは何か

「アクセス許可タイプ」は、ユーザの担当職務や組織にもとづいて、アクセス可能な元帳セルの範囲を柔軟に制御するための設計オブジェクトです。

アクセス許可タイプは、例えば、以下のようなアクセス許可条件を表します:

  • 自部門のデータのみ参照可能 & 更新は一切不可

  • 自事業部のデータのみ参照・更新可能

  • 全部門の人件費予算のみ参照・更新可能

アクセス許可タイプの特長

(1)アクセス許可範囲の「基準点」を、パラメータ化できる

上述の例のように、アクセス許可タイプの定義にあたっては、「自部門」「自事業部」というように、アクセス許可範囲の「基準点」をパラメータ化することができます。すなわち、「自部門」が具体的にどの部門なのかという情報をアクセス許可定義に含めずに、別途指定することができます。

このため、アクセス許可タイプは、個々の組織単位ごとに設ける必要がありません。たとえば、各部門のユーザに「自部門のデータのみ参照可能」という権限を与えたいというケースを考えましょう。この場合、部門が 100 個あったとしても「アクセス許可タイプ」を100個作成する必要はありません。「自部門のデータのみ参照可能」という条件を組み込んだアクセス許可タイプを1個作成するだけで十分です。

「自部門」がどの部門かは、「業務責任単位」という別のオブジェクトで設定します。どのユーザにどの業務責任単位の権限を与えるかも別途設定します。アクセス制御に必要な情報をこのように適切に切り分けて設定できるので、fusion_place でのアクセスセキュリティ設定は手間がかからないものとなっています。

(2)読み取り・書き込み権限を別々に設定できる

アクセス許可タイプでは、読み取り許可条件と書き込み許可条件をそれぞれ別に設定できます。

(3)ユーザグループの役割に応じて、異なるタイプの権限を割り当てることができる

データに対するアクセス許可はユーザの担当職務や所属部門に応じて異なります。アクセス許可タイプは、いくつでも設けることができ、かつ、各「業務責任単位」に、任意のアクセス許可タイプを割り当てることができます。

「自部門のデータのみ参照可能」という部門に加えて、「自部門配下の全部門のデータを更新・参照可能」としたい部門があるならば、それぞれの権限内容を表す2つのアクセス許可タイプを設けて下さい。その上で、各部門に対応する業務責任単位に、2つのアクセス許可タイプのいずれかを選択して割り当てて下さい。

領域定義式

アクセス許可タイプには、読み取り許可領域定義式と、書き込み許可領域定義式が含まれます。2つの領域定義式がそれぞれ元帳セルごとに評価され、結果が「True」となった場合にのみ、そのセルの値の読み取りまたは書き込みが許可されます(ただし他の理由で書き込みが禁止されることがあります)。

領域定義式が指定されていない場合は、どの元帳セルについても「True」となる式が指定されたものとみなされます(したがってすべてのセルに対してアクセスが許可されます)。

⚠ すべてのセルへのアクセスを禁止したい場合は、領域定義式の欄に "FALSE" と入力してください(二重引用符は含まず)。

領域定義式の記述方法

領域定義式はテキスト式の方言のひとつです。詳細な文法についてはテキスト式の解説をご参照ください。ここでは領域定義式の特長に加えて、よく使われると思われる記述例をいくつかご紹介します。

特長

マスク条件式と同じく、領域定義式でも、「現在のメンバ」は、検査対象である個々の元帳セルに結びついたディメンションメンバを意味します(前述したように、領域定義式の判定は、個々の元帳セルごとに行われます)。

それに加えて、領域定義式では、ユーザが所属する業務責任単位の「責任範囲キー」で指定されたメンバを、「視点メンバ」として参照することができます。たとえば、DEPT ディメンションに関する「視点メンバ」を DEPT!@POV で取得することができます("POV":Point of View の略)。

視点メンバは、「アクセス許可タイプの特長」で述べた「アクセス許可範囲の基準点」として使うことができます。具体的には、領域定義式で、「現在のメンバ」と「視点メンバ」の関係を判定することによって、それぞれの業務責任単位ごとに異なるアクセス許可領域を指定することができます(下記記述例もご参照下さい)。

記述例
(1)ディメンションメンバのラベルによる条件判定

例)

  DEPT!@CUR.Label = DEPT!@POV.Label (1)
1 元帳セルに係る部門(DEPT)ディメンションメンバのラベルが、ユーザが選択した業務責任単位の「責任範囲キー」で指定された部門(DEPT)ディメンションメンバのラベルと一致していること。すなわち、自部門のデータであること。
式の要素 意味

DEPT

DEPT をラベルとするディメンション

DEPT!@CUR

上記ディメンションの「現在のメンバ

⚠領域定義式で「現在のメンバ」とは、対象元帳セルに関わるメンバの意味です。

DEPT!@CUR.Label

上記メンバのラベル

左辺と右辺の値が等しいことを検査する

DEPT!@POV

DEPT ディメンションの「視点メンバ

⚠領域定義式で「視点メンバ」とは、ユーザが選択した業務責任単位の「責任範囲指定キー」で指定されているメンバの意味です。

DEPT!@POV.Label

上記メンバのラベル

なお、.Label を省略して、上述の式を次のように書くこともできます。

  DEPT!@CUR = DEPT!@POV
(2)ディメンションメンバの親子関係による条件判定 - 1

例)

  DEPT!@CUR.is_descendent_of(DEPT!@POV) (1)
1 元帳セルに係る部門(DEPT)ディメンションメンバが、ユーザが選択した業務責任単位の「責任範囲キー」で指定される部門(DEPT)ディメンションメンバの子孫であること。すなわち、自部門配下の部門のデータであること。
式の要素 意味

DEPT

DEPT をラベルとするディメンション

DEPT!@CUR

上記ディメンションの「現在のメンバ

is_descendent_of(…​)

対象メンバ(左のメンバ)が、引数で指定された(右の)メンバの子孫である場合に「True」を返すメソッド

DEPT!@POV

DEPT ディメンションの「視点メンバ

(3)ディメンションメンバの親子関係による条件判定 - 2

例)

  DEPT!@CUR.shares_ancestors_with(DEPT!@POV, TRUE, "DEPT_TYPE", "DIV") (1)
1 元帳セルに係る部門(DEPT)ディメンションメンバと、ユーザが選択した業務責任単位の「責任範囲キー」で指定される部門(DEPT)ディメンションメンバが、同じ事業部に属すること。すなわち、自事業部配下の部門のデータであること。
式の要素 意味

DEPT

DEPT をラベルとするディメンション

DEPT!@CUR

上記ディメンションの「現在のメンバ

shares_ancestors_with(…​)

対象メンバ(左のメンバ)と、第 1 引数で指定された(右の)メンバが、第 2 ~ 第 4 引数で指定された条件を満たす共通の祖先メンバを持つ場合に「True」を返すメソッド

⚠ 「祖先メンバ」とは自分自身およびその直接・間接の親メンバのことです。

DEPT!@POV

DEPT ディメンションの「視点メンバ

TRUE

shares_ancestors_with メソッドの第 2 引数は、検索対象祖先を「使用中」メンバに限定するかどうかを指定します。
ここでは「真(TRUE)」が指定されているので、限定が行われます。

DEPT_TYPE

shares_ancestors_with メソッドの第 3・第 4 引数は、併せて、対象先祖メンバのプロパティ値に関する条件を指定します。第 3 引数は、対象メンバの絞り込みに用いるプロパティのラベルです。
左記 DEPT_TYPE は、部門ディメンションに「部門タイプ(DEPT_TYPE)」というプロパティが定義されており、先祖メンバの絞り込みにそのプロパティの値を用いることを示しています。

DIV

第 4 引数は、第 3 引数で指定されたプロパティについて、対象メンバが保持していなくてはならない値のラベルを指定します。左記 DIV は「事業部」を表すプロパティ値です。

第 3・第 4 引数を合わせると、検索対象祖先メンバを「事業部」に限定する意味となります。