MS_CRMBusinessRules - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

CRM 業務ルールの構成

概要

  • 2013 からの新機能
  • プログラミングのスキルがなくてもフォームに条件ロジックを追加できる。
  • クライアント サイドの単項目エラー チェックとエラー メッセージの表示
    (サーバー サイドは、ワークフロー(プロセス)やプラグイン(カスタム コード))

補足(現在も「業務ルール」として健在): 業務ルール(Business Rules)は
Dataverse/モデル駆動型アプリでもそのまま提供されており、
Power Apps のテーブル設定から作成する。
「JavaScript を書かずにフォームの条件ロジックを表現する」という
本ページの位置づけは現在も変わっていない。
なお、後述の「エンティティ スコープ」で作成した業務ルールは
サーバー側でも評価されるため、
「クライアント サイドのみ」という記述は
フォーム スコープの場合と読むのが正確である。

特定のフィールド値に基づいて、

  • 別のフィールドを必須 or 読み取り専用に変更する。
  • 計算された値を自動的にフィールドに入力する。

移行メモ(正誤): 元ページの「読み取り変更」は、
後段の「フィールドのロック・ロック解除」の説明と照らして
「読み取り専用」の誤記と判断し、修正した。

要素

条件とアクション。

  • 業務ルール エディタで業務ルールを作成・編集する。
  • 編集の際は、非アクティブ化して「下書き」の状態に戻す。

条件

業務ルール エディタでフィールドの値と評価条件を定義する。

  • フィールド

    • トリガとなるフィールド
    • 同じフィールド、別のフィールドを使用可能
  • 条件

    • 全ての条件が True になる AND のみ。
      いずれかの条件が True になる OR は複数の業務ルールを作成する。

    • フィールド × 演算子 × 種類(フィールド or 値 or 計算式)

/ 種類 説明
1 フィールド 他のフィールドとの演算
2 固定の値と演算
3 計算式 他のフィールド or 値との演算結果と演算

補足(現在は OR も条件分岐も書ける): 「AND のみ、OR は別ルールに分ける」
という制約は 2013 当時のもので、
現在の業務ルール エディタでは
AND / OR の切り替えと、条件ごとの分岐(Else 側の分岐)を
1 つのルール内で表現できる。
したがって「逆ルールを作る」という後述の運用も、
現在は Else 分岐で代替できる場合が多い。

アクション

業務ルール エディタで条件に合致した場合の動作を定義する。

オプション

  • エラー メッセージの表示

    • フィールド内のデータが有効ではない場合、フィールドについてもエラー メッセージを設定する。
    • エラー メッセージのテキストはフィールド近くにエラー アイコン(×)とともに表示される。
    • エラー メッセージは、暫く経つと表示されなくなるが、エラー アイコン(×)をポイントすると再表示される。
    • エラー メッセージは再評価で消える(このため、逆ルールを作成する必要はない)。
  • フィールド値の設定
    フィールド値を設定する。

    / 種類 説明
    1 フィールド 他のフィールドと同じ値を設定
    2 固定値を設定
    3 計算式 他のフィールド or 値との演算結果を設定
  • 必須項目の設定(逆ルールが必要)
    フォームでフィールドを必須項目にするかどうかを変更するために使用。

    • [必須項目]
    • [省略可能項目]
  • 表示方法の変更(逆ルールが必要)
    フォームにフィールドを表示するかどうかを変更するために使用。

    • [フィールドの表示]
    • [フィールドの非表示]
  • フィールドのロック・ロック解除(逆ルールが必要)
    フォームでフィールドを有効(編集可能)にするかどうかを変更するために使用。

    • [ロック]
    • [ロック解除]

適用先のフィールド

アクションを適用する対象のフィールドを指定する。

移行メモ(正誤): 元ページの「するかどうを変更する」(3 箇所)は
「するかどうかを変更する」の脱字と判断し、補った。

補足(「逆ルールが必要」の意味): 「必須項目にする」「非表示にする」
といったアクションは、条件が False に戻ったときに自動では元に戻らない
このため、当時は逆の条件で逆のアクションを行うルールを
もう 1 本作る必要があった。
一方「エラー メッセージの表示」は再評価のたびに消えるため、
逆ルールが不要——というのが本文の対比である。

実行

対象フォーム

すべての対象フォームで動作する(移植可能なビジネスロジック)。

  • メイン フォーム

    • ブラウザ
    • Outlook
    • タブレット PC 用 DCRM クライアント(レイアウトなどが異なる)
  • モバイル フォーム

    • 電話用 DCRM クライアント(スマホ ネイティブ)
    • その他サポート対象外のブラウザ(通常の URL の末尾に /m が付加)

補足: 「Outlook」は Outlook 用 Microsoft Dynamics CRM
(Outlook クライアント)を指す。
このクライアントは既に提供終了しており、
現在は Outlook 用の
Dynamics 365 App for Outlook(Web ベースのアドイン)に置き換わっている。

実行タイミング

  • 初回 or 条件に合致した場合、アクションが実行される。
  • 保存時にはアクションは実行されない。

スコープ

業務ルールはエンティティやフォームに関連付けできる。

エンティティ

エンティティ全体をスコープとする場合、
業務ルールはフォームだけでなくサーバー側でも評価される。

補足: 元ページではこの項が「・・・」のみで未執筆だったため、
上記 1 文を補った。
エンティティ スコープの業務ルールは、
Web API やインポートなどフォームを経由しない更新にも適用される点が
フォーム スコープとの決定的な違いである(ただし、
「フィールドの表示/非表示」のような UI に依存するアクションは
適用されない)。

フォーム

  • 業務ルールを 1 つのフォーム or すべてのフォームに適用可能。

  • フォームには、0、1、複数の業務ルールを適用できる。

  • 業務ルールを複数のフォームに適用する場合は、
    フォーム毎にルールのコピーを作成(名前をつけて保存)。

  • 設定
    業務ルール エディタの右上隅のスコープ コントロールから設定する。

    • 業務ルールを使用する対象となるフォームを一覧から 1 つ選択する。
    • 追加のオプション[すべてのフォーム]に設定する(メイン or 簡易作成)。

作成

  • 業務ルールの作成直後は、「下書き」の状態。

  • 業務ルールを有効にするには、業務ルールをアクティブ化する。

  • 条件・アクション変更、スコープ変更や、削除の前には
    非アクティブ化して「下書き」の状態に戻す。

画面

  • 業務ルール エクスプローラ
  • 業務ルールのメニューバー
  • 業務ルール エディタ

移行メモ: 元ページではこの 3 項目に「?」が付されており、
名称が確定していない旨のメモと解される。
後続の説明と照合すると、
「業務ルール エクスプローラー」(フォーム デザイナ右側のウィンドウ)と
「業務ルール エディタ」(ルールの編集画面)はいずれも実在する名称のため、
「?」を外して記載した。

エンティティ

  • [設定]→[ソリューション]→[エンティティ]
  • エンティティを展開し、[業務ルール]をクリックする。
  • そのエンティティの全ての業務ルールを表示する。

フィールド

  • エンティティのフィールドの一覧からフィールドをダブルクリックして開く。
  • 左のナビゲーション ウィンドウで[業務ルール]をクリックする。
  • このフィールドを使用している業務ルールを表示する。

フォーム エディタ

フォーム エディタで

  • フィールドをダブルクリックし、
    [フィールドのプロパティ]ダイアログ ボックスを表示。

    • [業務ルール]タブをクリックして以下の業務ルールを表示する。
      • このフォームがスコープに入っている。
      • このフィールドが使用されている。
  • リボンで[業務ルール]をクリック

    • フォーム デザイナ右側の[業務ルール エクスプローラー]ウィンドウを表示
    • このフォームがスコープに入っている業務ルールを表示する。

コピー

  • 業務ルールを複数のフォームに適用する場合は、
    フォーム毎にルールのコピーを作成(名前をつけて保存)。
  • 既存のルール(必須項目)の逆ルール(リセット)を作成する場合に利用する。

テスト

フォーム エディタで業務ルールのスコープのフォームを開きプレビュー。

コメント

  • 説明の追加は任意。

  • 必要に応じて、非イベント依存関係を設定して、
    システム カスタマイザーに依存関係の理解を促す。

参考


Tags: Dynamics CRM

⚠️ **GitHub.com Fallback** ⚠️