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

完了

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

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

  • 列の値を設定する。

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

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

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

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

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

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

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

スコープ

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

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

ヒント

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

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

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

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

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

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

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

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

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

重要

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

これらのアクションは、次のタイミングで実行されます。

  • フォームが開かれたとき。

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

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

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

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

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

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

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

  • レコメンデーションはビジネス ルールでのみ使用できます。

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

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

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