暗黙条件

最終更新日: 2020年3月14日
R8 | R9

商品モデルの「価格」が「0より大きい」ものだけを検索対象とする、という暗黙条件を加えた例を示します。図1で、価格が0円の商品を登録します。

図1 価格が0円の商品を登録する

図2に示すように、検索結果に表示されません。これは隠れた検索条件項目「価格」が用意されており、「0より大きい」という条件が常に有効になっているためです。

図2 価格が0円の商品は検索されない。

暗黙条件が適用されない権限を用意する

暗黙条件を設定すると、条件に漏れたデータは誰も閲覧できなくなります。そこで、この条件が適用されない権限を設定することができます。 図3では「商品管理者」というプリンシパルを用意した例を示します。

図3 商品管理者プリンシパルを用意する

このプリンシパルをもったアカウントでログオンした場合、商品データはすべて検索されます。

図4 すべての商品データ(暗黙条件を適用しない)

定義方法

シンプルな定義

暗黙条件を適用したいモデル項目の詳細定義ダイアログを開きます。「暗黙条件」タブで、条件式を設定します。

図5の例では、「0より大きい」と指定しています。

暗黙条件は複数、指定することができます。すべての条件を満たすデータだけが検索対象になります。

図5 暗黙条件の設定

注意

図5の設定では、どのアカウントも(条件に適合しなかったデータを)検索することはできません。これを回避するために、「適用外の権限」を同時に指定することができます。[後述]

適用外の権限を設定する

はじめに、このモデルに新しい権限(パーミッション)を作成します。(図6)

図6 パーミッションの作成(1)

ここでは「除外 (p_except)」という名前の権限を用意しました。

図7 パーミッションの作成(2)

追加した権限を管理するためのプリンシパルを作成します。(図8)

図8 プリンシパルの作成(1)

ここでは「商品管理者 (product_mgr)」というプリンシパルを用意しました。除外パーミッションを持ちます。

図9

暗黙条件の設定で、作成した "p_except" (除外) パーミッションを「適用外の権限」欄に設定します。

図10 適用外の権限を指定する

注意

ここではパーミッションを設定します。プリンシパルではありません。

図3に示すように、このプリンシパルをもったアカウントは、暗黙条件がスキップされます。

暗黙条件の仕組み

暗黙条件は、データベース問合せ時に SQL の where 句に自動的に付与されます。 このため、データベース自体にはデータが格納されます。システム利用時には、検索されることはありません。(適用外の権限を除く)

関数を利用する

文字列型項目の場合、条件値の部分に項目を参照せずに計算結果を取得できる関数を利用することができます。

ログオンアカウントを暗黙条件とする

USERNAME()

履修年度を暗黙条件とする

FISCALYEAR(NOW())

USERINFO関数を使ってjuserの値を取得する

USERINFO("name")
TOINT(USERINFO("age"))

USERINFO関数の戻り値は文字列型です。整数型の値を使いたい場合は、TOINTなどの関数と併用してください。

利用できない関数の考え方

暗黙条件には、関数の引数に特定モデルの項目が紐付かないものは利用できます。 例えば絶対値をとる ABS という関数を例にとって説明します。

ABS(-1)

は利用できますが

ABS(${item1})

は利用できません。

特別表記nowを利用する

「日付」「時間」「日付と時間」項目の暗黙条件に "now" 表記を使用することができます。

関数を利用した場合

関数の結果が NULL または 空文字となる場合は、暗黙条件による絞込は行われません。

OR検索

暗黙条件で OR 検索を利用する場合、暗黙条件の設定に代わってスクリプトで実現します。WDN

仕様・制約

システム管理者の扱い

システム管理者には暗黙条件が適用されません。

通常の検索条件との併用は不可

暗黙条件と、通常の検索条件を併用することはできません。この場合は暗黙条件が優先され、検索条件に値を入力しても無視されます。

範囲検索との併用は不可

検索制御の「範囲検索」と暗黙条件は同時に指定できません。

検索・一覧表示画面が必要

そのモデルの検索・一覧表示画面を用意しなかった場合、暗黙条件は利用できません。(設定は無効となります。)

トラブルシューティング

暗黙条件が効かないという場合の確認方法を説明します。

  • システム管理者(admin)でログオンしていませんか? システム管理者には暗黙条件が適用されません。
  • "適用外の権限" を定義したときは "権限 > 機能権限" の設定で、これを同名のパーミッションとして用意する必要があります。