業務ルールの作成および編集

 

公開日: 2016年11月

対象: Dynamics CRM 2015

Microsoft Dynamics 365では、JavaScript コードを記述せずに、またはプラグインを開発せずに、フォーム ロジックを適用できます。 業務ルールは、Web アプリケーションと タブレット PC 用 Microsoft Dynamics CRM で、メイン フォームと簡易作成フォームに適用される、急速に変化し、よく使用される業務ルールを実装および保守するための単純な宣言型インターフェイスを提供します。 これは、オンライン モードとオフライン モードの Outlook クライアントで、メイン フォームと簡易入力フォームに適用されます。

このトピックの内容

なぜ業務ルールか

業務ルールは何を実行できますか

業務ルールを構成する方法

サーバー側業務ルールと IF-Else および AND/OR ロジックのサポート

業務ルールの制約

業務ルールで使用されるエラー メッセージのローカライズ

なぜ業務ルールか

業務ルールは、クライアントまたはサーバー上のビジネス ロジックを一貫して評価する、コードの記述を必要としない宣言による簡単な方法を提供します。 クライアント側のロジックの評価は、サーバー側がサーバー上で一貫性のあるロジックの評価を提供している間に、レコード フォームを開いて更新するときに実行されるので、より即時に実行されます。

  • 業務ルールは、ルールのスコープがフォーム レベル (すべてフォームまたは特定のフォーム) に設定されている場合は、クライアント上でのみ実行されます。 このルールは、レコード フォームが読み込まれて更新されたときに実行されます。

  • 業務ルールは、そのルールのスコープがエンティティ レベルに設定されている場合は、サーバー上とクライアント上の両方で実行されます。 サーバー側のルールは、レコードの作成時や保存時に実行されます。

業務ルールは何を実行できますか

業務ルールは、フォーム スクリプトによって提供される機能のサブセットを可能にします。 条件を定義して、次のアクションを適用できます。

  • フィールド値を設定する

  • フィールド値のクリア

  • フィールドの入力要求レベルを設定する

  • フィールドを表示または非表示にする

  • フィールドを有効化または無効化する

  • データを検証し、エラー メッセージを表示する

ユーザーが選択するすべての、メイン エンティティ フォームまたは簡易作成エンティティ フォームまたは特定のメイン フォームに適用するために、業務ルールを設定できます。 また、エンティティに適用するルールを設定することもできます。

業務ルールをソリューションに含めることによって、業務ルールを組織から組織に転送することが可能であり、業務ルールを含むソリューションをインストールできます。

フィールド値の設定またはクリアの方法の例

いくつかの例を考えてみます。 最初ルールによって、即時の購入については、5% 値引きを適用します。 2 番目のルールによって、購入の時期が不明の場合は、すべての値引きを解除します。

次のルール定義は、即時の購入については 5% の値引きにフィールド値を設定する方法を示しています。

Dynamics CRM の営業案件の設定フィールド

次のルール定義は、フィールド値をクリアする方法を示しています。購入時期が不明の購入についてはすべての値引きを解除します。

Dynamics CRM のフィールドのクリア操作

Dynamics CRM のフィールドのクリア

業務ルールを構成する方法

最初に、[設定] > [カスタマイズ] に移動するために必要な特権を持つ必要があります。 通常、これには、システム管理者 または システム カスタマイザー のセキュリティ ロールが必要です。 業務ルールをアクティブ化するには、[ビジネス ルールをアクティブ化] の特権を持つ必要があります。

注意

業務ルールは、更新されたエンティティ またはユーザー定義エンティティに対してのみ機能します。

業務ルールを表示、作成、または編集する方法は 4 つあります。

  • ソリューション > エンティティ
    既定のソリューションなどのソリューションから、すべてのエンティティの [業務ルール] ノードを検索します。

    CRM のアカウント エンティティでの業務ルール

  • ソリューション > エンティティ > フィールド
    エンティティ フィールドを表示するときは、この属性が含まれる業務ルールだけを表示する [業務ルール] ノードを検索します。

    Dynamics CRM のフィールドでの業務ルール

  • フォーム エディター
    フォーム エディターから、リボンの [業務ルール] ボタンを使用して、右側に [業務ルール エクスプローラー] を表示できます。 これは、このフォームだけに適用されるすべての業務ルールを表示します。

    フォーム エディターからルールを作成する場合、既定のスコープはそのフォームに対応しています。詳細:範囲の設定

    Dynamics CRM フォームの業務ルール

  • フォーム エディター > フィールド
    フォームで使用されるフィールドのプロパティを表示するとき、この属性が含まれる業務ルールを表示する [業務ルール] タブが表示されます。

    Dynamics CRM のフォーム フィールドでの業務ルール

既存のルールが作成するルールに似ている場合は、そのルールを開き、[名前を付けて保存] ボタンを使用して、既存のルールを新しいルールの開始点としてコピーできます。

範囲の設定

フォームの右上にある [スコープ] フィールドを使用して、ルールのスコープを設定します。

スコープ

実行する場所

エンティティ

すべてのフォームとサーバー

すべてのフォーム

すべてのフォーム

特定のフォーム

このフォームのみ

複数の特定のフォームを選択することはできません。[すべてのフォーム] を選択した場合、ルールによって参照されるすべてのフィールドがフォームに含まれているかぎり、ルールはすべてのメイン フォームと簡易作成フォームに適用されます。 フォーム エディターを使用して業務ルールを新規に作成する場合、既定のスコープはそのフォームだけです。

サーバー側業務ルールと IF-Else および AND/OR ロジックのサポート

以前は、個々のクライアントの業務ルールを評価する機能がありました。 サーバーの業務ルール ロジックを評価し、すべてのクライアントに適用するには、開発と維持に費用がかかるプラグインが必要でした。 業務ルールのスコープをエンティティ レベルで設定すると、サーバー上で一度業務ルールを評価し、コードを記述せずにすべてのクライアントに適用する機能が提供されます。 よく使用されるシナリオのロジックをプラグインからエンティティ レベルの業務ルールに移行できます。 また、業務ルールの既定値をサポートしました。 たとえば、"Contoso" がアメリカ国内のみで取引する場合、新しい潜在顧客の作成時に国/地域を自動的に ”米国” に設定するという、単純な業務ルールを実装できます。

注意

スコープが 1 つのエンティティに設定され、フォームを使用するレコードを作成または編集する場合、そのルールはクライアント側で実行されますが、後で再び、サーバーで実行されます。 これにより、スコープを 1 つのエンティティに設定した場合、フィールドに対して循環参照を作成できなくなります。 たとえば、利用限度額 = 利用限度額 + 1000を設定することはできません。その理由は、クライアント側の値を一度増加してから、サーバー側で再度実行を試みることになるからです。

複雑なビジネス シナリオでは、AND 論理演算子を使用して評価される複数の業務ルールを使用する必要がありました。 すべての条件は、アクションが適用される前は true である必要がありました。If-Else または AND/OR はサポートされていませんでした。 現在はこの機能が追加されたことにより、少ない労力で複雑な業務ルールが作成できるようになりました。 次の例は、If-Else ロジックを使用した業務ルールです。

Dynamics CRM の If-Else ロジックでの業務ルール

注意が必要ないくつかの制約を以下に示します。

  • 入れ子になった If-Else 文はサポートされません。

  • 条件内の式のグループ化はサポートされません。

  • AND または OR のどちらかを使用して式を組み合わせることはできますが、それらの両方を使用することはできません。

条件の構成

アクティブ化した業務ルールを変更する場合は、その編集を行う前に、非アクティブ化する必要があります。

条件を追加するには、[+] アイコンをクリックし、新しい条件行に設定される既定値が表示されます。[フィールド] を設定するフィールド名を入力し、次に適切な [演算子] を選択します。 演算子オプションは、フィールドのデータの種類に応じて変更されます。

条件内で参照されるフィールドが変更されると、条件が常に確認されます。

次の 3 つの異なる種類の条件を選択できます。

  • フィールド
    フォーム フィールドの値の間で比較を行うには、この種類を使用します。


  • フォーム フィールドの値と入力する値を比較するには、この種類を使用します。

  • 計算式
    このオプションは、種類が数値データまた日付データの場合にのみ表示されます。 これは、テキストを含むフィールドの場合は表示されません。 別のフォームのフィールドの値かまたは入力した値のいずれかを使用できる単純計算の結果を比較するには、この種類を使用します。

ルールの入力または編集を終了するとき、ルールを保存するには [チェック マーク] アイコンを、変更を破棄するには [(x)] アイコンを選択します。 以前保存した条件を削除するには、カーソルを条件の上に置き、[削除] ボタン [削除] ボタンを選択します。

アクションの構成

アクションを追加するには、[追加] ボタン [+] を選択し、以下のオプションを使用します。

  • エラー メッセージの表示
    フィールド内のデータが有効でない場合、そのフィールドに対してエラー メッセージを設定するには、このアクションを使用します。 メッセージに指定するテキストは、そのフィールドの近くに、エラー アイコンといっしょに表示されます。

    Dynamics CRM フォームのフィールドに対するエラー メッセージ

    このメッセージが表示されているかぎり、レコードは保存できません。 フィールドのデータがルールの条件セットに従って修正されると、メッセージは消え、レコードは保存できます。

  • フィールド値の設定
    [フィールド][種類] の順に選択します。 次の 3 つの種類があります。

    • フィールド
      別のフィールドの値でフォーム フィールドの値を設定するには、この種類を使用します。


    • 入力する値でフォーム フィールドの値を設定するには、この種類を使用します。

    • 計算式
      このオプションは、種類が数値データまた日付データの場合にのみ表示されます。 これは、テキストを含むフィールドの場合は表示されません。 別のフォームのフィールドの値かまたは入力した値のいずれかを使用する可能性のある単純計算の結果に値を設定するには、この種類を使用します。

  • 必須項目の設定
    フィールドの入力要求レベルを変更するには、この種類を使用します。 オプションは、[省略可能項目][必須項目] です。 これを推奨項目に設定するオプションはありません。

  • 表示方法の設定
    フィールドをフォームに表示するかどうかを変更するには、この種類を使用します。 オプションは、[フィールドを表示][フィールドを表示しない] です。

  • フィールドのロックまたはロック解除
    フォームのフィールドを有効にするかどうかを変更するには、この種類を使用します。 オプションは [ロック][ロック解除] です。 フィールドがロックされると、ユーザーはフィールドの値は編集できません。

アクションを定義した後に、カーソルをアクションの上に置いたときに利用できるオプションを使用して、その順序を変更したり、アクションを削除できます。

説明の設定

説明の設定はオプションです。 説明は、業務ルール エディター内の場所以外には表示されません。 しかし、ルールが実行することになっている内容の説明と、ルールが追加された理由の説明を含めることはいい考えだと思われます。

業務ルールのテストとライセンス認証を行う

作成した業務ルールを使用できるようにするには、その前に、業務ルールをアクティブ化する必要があります。 業務ルールは、アクティブ化する前にテストする必要があります。 フォーム エディターの [プレビュー] ボタンを使用して、業務ルールをテストできます。

業務ルールの制約

業務ルールは、一般的なアクションに対応することを目的としています。 開発者がフォーム スクリプトを使用して実行できる内容に比較すると、業務ルールには制約があります。 ただし、業務ルールがフォーム スクリプトに取って代わる意図はありません。

業務ルールの使用には次のいくつかの制約があります。

  • 業務ルールは、フォームが読み込まれるときと、フィールドの値が変更されたときだけ実行されます。 ルールのスコープがエンティティ レベルで設定されていない場合、レコードの保存時に業務ルールは実行されません。

  • 業務ルールはフィールドに対してのみ機能します。 フォーム内のタブやセクションなどの他の可視要素とのやり取りが必要な場合は、フォーム スクリプトを使用する必要があります。

  • 業務ルールを使用してフィールド値を設定すると、そのフィールドの OnChange イベント ハンドラーは実行されません。 これは、無限ループの原因となる循環参照の可能性を減らすためです。

  • 業務ルールは、フォーム上にないフィールドを参照する場合は実行されません。 エラー メッセージはありません。

  • タイム ゾーン用、期間用、または言語用の書式を使用する数値フィールドの全体が、条件またはアクションに対するルール エディターに表示されないので、業務ルールでは使用できません。

  • 業務ルールには 10 を超える if-else 条件を追加できません。

  • タブレット PC 用 Microsoft Dynamics CRM では、タブレット PC 用 CRM が開くときに業務ルールがダウンロードされてキャッシュされます。 業務ルールの変更は、タブレット PC 用 CRM がクローズして再オープンされるまで適用されません。

  • 検索フィールドの値を設定するとき、フォームで設定される主フィールドの値のテキストは、ルール定義内に表示されるテキストと常に一致します。 そのテキストが検索変更内で設定したレコードの主フィールドの値を示す場合、ルールによって設定された値は、ルールで定義された主フィールドの値のテキストの一部を引き続き使用します。 これを修正するには、現在のプライマリ名フィールドの値を使用するようにルール定義を更新します。

    検索に設定する値に以下の 3 つの部分があることを理解しておくと便利です。

    • Name: フォームに表示される主フィールド値のテキスト。

    • Id: レコードの一意の識別子。 これは保存されたデータです。 これはフォームに表示されません。

    • LogicalName: contactaccount、または opportunity などのエンティティ名。

    ルールはこの値の 3 つの部分すべてを設定します。 特定のレコードの Id 値は変化しませんが、Name の値は変化することがあります。

    たとえば、"古い名前" の [氏名] を持つ取引先担当者の検索を設定するルールを定義する場合、誰かが取引先担当者の [氏名] を "新しい名前" に変更しても、このテキストは業務ルールで設定されたときに検索内に表示される Name です。 検索の Id の値は目的のレコードに正しくセットされますが、Name (これは保存されません) は現在の [氏名] ではなくルール定義の値を反映します。

ルールからアクションを除去

エラー メッセージの表示の場合を除き、適用した可能性のあるアクションを除去する別の業務ルールを組み込む必要があります。 たとえば、次のような取引先企業エンティティ ルールを使用しているとします。

[優先する連絡方法] が [電話] の場合、
[勤務先電話番号] を [必須項目] として設定する

これは、[優先する連絡方法] フィールドが [電話] に設定されているときはいつでも動作します。 しかし、[優先する連絡方法] フィールドが後で他の値に変更された場合、[電話] フィールドは [必須項目] のままです。 このアクションを取り除くには、次のロジックを適用する別のルールを含める必要があります。

[優先する連絡方法] が [電話] でない場合、
[勤務先電話番号] を [省略可能項目] として設定する

[エラー メッセージの表示] アクションは、エラー メッセージの設定に使用される条件を自動的に評価して、条件が true でなくなった場合はエラー メッセージを除去すると言う理由で、他のアクションとは異なっています。

業務ルールで使用されるエラー メッセージのローカライズ

組織で使用する複数の言語が存在する場合は、設定したエラー メッセージのローカライズが必要になると思われます。 メッセージを設定するたびに、ラベルがシステムによって生成されます。 組織で翻訳をエクスポートする場合、メッセージのローカライズされたバージョンを追加し、それらのラベルを Microsoft Dynamics 365にインポートできます。これにより、基本言語以外の言語を使用するユーザーは翻訳されたメッセージを表示することができます。

関連項目

ビデオ: Microsoft Dynamics CRM カスタマイズの新機能 - 業務ルール
プロセスの作成および編集
フォームの作成および設計
ビューの作成および編集
SDK: 業務ルールの開始方法の作成および編集

© 2016 Microsoft Corporation. All rights reserved. 著作権