ビジネス ルールを定義する - 導入

完了済み

ビジネス ルールは、コードを記述せずに Dataverse テーブルに関連付けられる宣言型のロジックと検証です。

ビジネス ルールを使用すると、次のことができます。

  • 列の値を設定する。

  • 列の要件レベルを変更する。

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

  • モデル駆動型アプリのフォームで列のプロパティを変更する。

  • モデル駆動型アプリのフォームでユーザーにレコメンデーションを提示する。

ビジネス ルールによって定義されたロジックは、クライアント側でモデル駆動型アプリのフォーム内で適用することも、Dataverse 行の作成時または更新時にサーバー側で適用することもできます。 クライアント側の場合、ユーザーがフィールドを変更すると、ルールがアプリ内で即座に適用されます。 サーバー側とは、行が保存される際に、データがデータベースに保存される前のトランザクション中にロジックが実行されることを意味します。

ビジネス ルールはサーバー側で機能できるため、ルール内の条件とアクションは、モデル駆動型アプリ、キャンバス アプリ、Power Pages サイト、Power Automate クラウド フロー、または Dataverse API によって変更された Dataverse データに適用されます。

ビジネス ルールがどこで機能するかを決定するために、その適用範囲を指定する必要があります。

Scope

ビジネス ルールのスコープは、ビジネス ルールのロジックがいつ適用されるかを定義します。

Scope 適用対象
エンティティ(テーブル) すべてのモデル駆動型メイン フォームのクライアント側の変更とデータのサーバー側の変更 これは、新しいビジネス ルールを作成するときのデフォルトです。
すべてのフォーム すべてのモデル駆動型メイン フォームと簡易作成フォーム
特定のフォーム 特定のモデル駆動型メイン フォームのみ

ヒント

ビジネス ルールをキャンバス アプリで使用するには、スコープをエンティティに設定する必要があります。

ビジネス ルールとモデル駆動型アプリのフォーム

ビジネス ルールは当初、モデル駆動型アプリのフォームにおける単純な JavaScript に代わるものとして開発されました。 よくある要件として、ユーザーが他の列で入力または選択した値に基づいて、実行時にフォーム上のプロパティと値の列を操作する必要があります。

モデル駆動型アプリのフォームでは、ビジネス ルールによって次のことができます。

  • 列を表示するか、非表示にする

  • 列を編集可能または読み取り専用にする

  • 列の要件レベルを変更する

  • ユーザーにレコメンデーションを提示する

  • 列内の値を設定またはクリアする

重要

ビジネス ルールで実行できるのはフォーム上の列に対するアクションのみであり、セクションやタブのプロパティを変更することはできません。

これらのアクションは、次の場合に実行されます。

  • フォームが開かれています。

  • ルールによって参照される列の値が変更されたとき。

注

ビジネス ルールは、フォームの保存イベントでは適用されません。

ビジネス ルールと JavaScript によるクライアントサイド スクリプトのどちらを使用するか

モデル駆動型アプリのフォームで JavaScript を使用すると、ビジネス ルールによって実行できるアクションの多くを実行できますが、クライアントサイド スクリプトではずっと多くのことを実現できます。

  • JavaScript には、タブ、セクション、サブグリッドなど、あらゆる種類のフォーム コントロールを操作するための完全なアクセス権があります。 ビジネス ルールのアクションはテーブル列のみに制限されます。

  • ビジネス ルールがアクセスできるのはフォーム/テーブルの列のみであり、一対多または多対一のリレーションシップの行にはアクセスできません。 クライアントサイド スクリプトでは、Web API を使用してこれらのリレーションシップの行にアクセスできます。

  • ビジネス ルールの式は、2 つの列の単純な加算、減算、除算、または乗算に制限されています。

  • レコメンデーションはビジネス ルールでのみ利用可能です。

サーバー側のビジネスルール

ビジネス ルールのスコープがエンティティに設定されている場合、ルールの条件は行の保存時に評価されます。 このロジックは、データベース トランザクションの前処理ステージで実行されます。 エラー メッセージを表示するビジネス ルールを使用すると、保存が阻止され、データベース トランザクションがロールバックされます。

注

ルールがサーバー側で実行される場合、モデル駆動型アプリにのみ適用されるアクションは無視されます。