次の方法で共有


Microsoft Dataverse ビジネス イベント

イベントは、ビジネス ロジックの自動化と他のシステムとの統合を促進します。 ビジネス アプリケーションで何か面白いことが起こると、イベントが発生し、そのイベントを説明するデータがサブスクライバーに提供され、応答できるようになります。 Microsoft Dataverse には、次のアプリケーションとテクノロジを使用してサブスクライバーにイベント データを中継する機能が用意されています。

  • Power Automate フロー
  • Azure Service Bus
  • Azure イベント ハブ
  • ウェブフックス
  • Dataverse プラグイン

Dataverse は Dataverse の内部のシステム イベントを把握する強固なイベント フレームワークを備えています。 Dataverse Event Framework を使用して、システム内のイベントに応答できます。 このフレームワークは変更されていません。 詳細については、「 イベント フレームワーク」を参照してください。

Dataverseビジネスイベントは、イベントを公開し、たとえば Power Automate Dataverse の アクションが実行された際 トリガーのように、これらに非同期で応答するビジネスロジックを構築する新しい方法を提供します。

次に例をいくつか示します。

  • ユーザーが所有するレコードに対して共有操作が行われた際に適用するロジックがあります。 レコードが共有されたときに発生する、この GrantAccess のメッセージに対してロジックを開始する唯一の方法は、Dataverse のイベント フレームワークを介して、通常はプラグインを介して行われます。 ビジネス イベントを使用すると、 メッセージを公開するテーブルをGrantAccess化できます。

  • プラグイン開発者は、特定の条件セットに応答する同期プラグイン コードのロジックを持っている場合があります。 開発者は、これらの条件を別の非同期プラグインの共有変数に渡して、いくつかの自動化を開始します。 ビジネス イベントを使用すると、イベント パイプライン共有変数を介してそれらの詳細を渡す代わりに、パラメーター内のイベントの詳細を含むカスタム アクションを呼び出すことができます。 その後、非同期プラグインはカスタム アクションに応答できます。代わりに Power Automate を使用することもできます。 そのイベントに応答する他のロジックを追加できます。 このパターンにより、柔軟性が高まり、プラグインコードのロジックを簡素化することができます。

カタログとカスタム イベント

Dataverse ビジネス イベントは、 Dynamics Finance and Operations Business イベント の概念と Dataverse Event Framework を組み合わせたイベントです。 この組み合わせにより、イベントを検出し、これらのイベントが発生したときに自動化を作成する新しい方法が提供されます。

  • イベント カタログ: システムで使用できるイベントが非常に多いため、適切なイベントを見つけるのが難しい場合があります。 イベント カタログは、イベントをソリューションに関連付け、イベントをカテゴリに整理することにより、適切なイベントを見つけやすくします。

    カタログには、ソリューションに関連する、選択された価値の高いイベントのみが含まれます。 イベントを公開するには、カタログにイベントを追加します。

  • カスタム イベント: カスタム アクションは、Dataverse がイベント フレームワークを使用して処理するため、カスタム イベントとして作成できます。

    これらのイベントは、Dataverse 内のデータ変更を表す場合もあれば、変更されない場合もあります。 目的のイベントが発生したことをリスナーに通知するためにのみ存在する同期ロジック を使用せずに 、カスタム API を使用できます。 カスタム アクションを呼び出すことにより、イベントを発行します。

イベント カタログ

ビジネス イベントを公開するには、ビジネス イベントをカタログ化する必要があります。 詳細については、「 Catalog テーブルと CatalogAssignment テーブル」を参照してください。

カタログは、含まれるソリューションとそのソリューションに定義されているカテゴリによってビジネス イベントをグループ化します。 ソリューション発行者は、ソリューションに最も関連性の高いイベントを選択します。

カタログは、最上位レベルがソリューションを表す階層構造です。 次のレベルは カテゴリです。 関連するテーブルとイベントをカテゴリに割り当てます。

たとえば、次の構造は 、Contoso Customer Management というソリューションのカタログを表します。

  • Contoso の顧客管理
    • テーブル
      • アカウント
      • お問い合わせ
      • メンバーシップ
    • 顧客イベント
      • 入店
      • Web サイトの訪問
      • 製品の購入
      • 製品の返品

この例では 、カテゴリとしてテーブル顧客イベント を使用しますが、ソリューションに適したカテゴリ グループを使用できます。

ソリューションが複数の依存ソリューションで構成されている場合は、基本ソリューションでルート カタログを定義し、さらにカテゴリを追加し、依存ソリューションにイベントを割り当てることができます。

テーブル イベント

テーブルをカテゴリに割り当てると、テーブルにバインドされている特定の操作が含まれます。 各操作を個別に選択することはできません。 テーブルで作成、更新、および削除の各操作がサポートされている場合は、これらのイベントが含まれます。

また、他の操作に関連する追加のイベントも含めます。 たとえば、テーブルがユーザー所有の場合、テーブルはセキュリティ イベントに参加します。 テーブル内の任意のレコードの所有者は、共有、共有機能の変更、またはレコードの共有の停止を行うことができます。 共有に関連する操作は、GrantAccessModifyAccessRevokeAccess イベントとして公開されます。 テーブルによっては、追加のイベントも含まれる場合があります。 テーブルが仮想テーブルであり、仮想テーブル イベントをサポートするように構成すると、 OnExternalCreatedOnExternalUpdated、および OnExternalDeleted イベントが含まれます。 詳細については、「 仮想テーブルを有効にして Dataverse イベントをサポートする」を参照してください。

サブスクライバーに関心のあるビジネス データを含むテーブルのみを追加します。 すべてのテーブルを含めようとしないでください。

複数のカタログに同じテーブルを含めることができます。 たとえば、ソリューションが Dataverse Account テーブルまたは Contact テーブルの顧客データに依存している場合は、それらを含めます。 その他のカタログには、ソリューションのテーブルが含まれる場合があります。

カスタム イベント

Dataverse カスタム API を使用して、カスタム イベントを作成します。 各カスタム API は、新しい Dataverse メッセージを作成し、カスタム API を呼び出す Web サービス エンドポイントを提供します。 詳細については、「 カスタム API の作成と使用」を参照してください。

カスタム ビジネス イベントは、イベントが完了したときにのみ通知を送信できます。 Dataverse イベント フレームワークには、操作を取り消したり出力を変更したりしてシステムの動作を拡張できる同期ロジックを含める機能が用意されています。 ビジネス イベントが公開するのと同じメッセージの多くは、Dataverse イベント フレームワークの同期ロジックを使用して拡張できますが、ビジネス イベント通知は、これらの操作が正常に完了した場合にのみ発生します。

たとえば、ビジネス プロセスを表す一連の操作をカプセル化するカスタム API があるとします。たとえば、 再割り当てなど、特定の条件に基づいて 1 つのレコードの所有権を別のレコードに変更します。 または、レコードの優先度の状態を上げ、追加の関連タスクを作成する エスカレート。 この方法でカスタム API を使用する場合は、サブスクライバーが関心を持つ可能性がある新しいイベントを定義します。 これらの操作が正常に完了した場合、非同期ロジックをトリガーできます。

また、カスタム アクションを作成して、サブスクライバーがそれに反応できるようにすることもできます。 外部イベント は、イベントが Dataverse の外部で発生する特定のケースを説明しますが、同じ設定を使用して、Dataverse 内で使用するイベントとしてカスタム API を作成することもできます。 カスタム アクションがサブスクライバーのみに対応するものである場合は、カスタム アクションの名前を On で始めることをお勧めします (OnCustomerPurchaseOnVendorPaymentPosted など)。

カスタム API は様々な目的で使用することができますが、そのすべてがビジネス ロジックの興味深いイベントを表す操作に関連しているわけではありません。 この理由により、ビジネスイベントをカタログ化する必要があるのです。 カスタム API を含むソリューションの所有者は、価値の高いイベントを表すカスタム API のみをカタログ化する必要があります。 ソリューションに含めるすべてのカスタム アクションをカタログ化しないでください。

設計原則

ソリューションでビジネス イベントとしてカタログ化するカスタム API を検討する場合は、次の設計原則を使用します。

  • 明確な意図: ビジネス イベントの作成の背後にある意図を明確に理解します。 つまり、ビジネス イベントを作成する理由と、サブスクライバーがビジネス イベントを使用する方法を知っている必要があります。

  • 特定: サブスクライバーが応答する必要があるかどうかをフィルター処理する必要がないように、イベントを特定します。 サブスクライバーが常に応答するとは限らない一般的なビジネス イベントを作成しないでください。

  • 軽量: イベントを記述するために必要なデータのみを含めます。 サブスクライバーが追加のデータを必要とする場合、イベント内の情報は、必要に応じて取得できるようにコンテキストを提供する必要があります。

  • データを転送しない: 受信者にデータを転送することを目的としており、実質的にデータ エクスポート シナリオを実現する場合は、ビジネス イベントを使用しないでください。 データ転送シナリオにビジネス イベントを使用することは、ビジネス イベントの誤用です。

カスタム プロセス アクション

カスタム アクションの概念には、カスタム APIカスタム プロセス アクションの両方が含まれます。 どちらの種類のカスタム アクションも新しい API を作成しますが、その作成方法は異なります。 カスタム ビジネス イベントの場合は、カスタム API を使用します。

カスタム プロセス アクションをビジネス イベントとしてカタログ化することもできます。 この方法では、ソリューションで既にカスタム プロセス アクションを使用してビジネス イベントを表すビジネス ロジックをカプセル化している場合、下位互換性が提供されます。 カスタム API を使用するために、このカスタム アクションを移行する必要はありません。

ただし、カスタム プロセス アクションには次の制限があります:

  • 他のワークフローと同様に、UI で無効にすることができます。 カスタム プロセス アクションが突然動作を停止するまで、ユーザーがカスタム プロセス アクションを無効にしたタイミングがわからない場合があります。
  • 最近まで、同期プラグインの手順がカスタム プロセス アクションに登録されないようにする方法はありません。 この制限は、カスタム プロセス アクションの動作を変更したり、キャンセルしたりする同期ステップを誰でも登録できることを意味します。 IsCustomProcessingStepAllowedForOtherPublishers マネージド プロパティが用意され、カスタム プロセス アクションでこのステップをブロックできるようになりました。 このプロパティを設定するようにカスタム プロセス アクションを更新する場合は、代わりにカスタム API を使用するように変換することを検討してください。

相違点の詳細については、「 カスタム プロセス アクションとカスタム API の比較」を参照してください。

カスタム プロセス アクションにワークフロー デザイナー内にロジックが含まれていない場合、操作を実行するためにプラグインのみに依存している場合は、カスタム プロセス アクションをカスタム API に移行して、これらの問題を軽減できます。

Power Platform コミュニティでは、これに役立つツールが既に作成されています。 詳細については、XrmToolBox プラグイン カスタム アクションからカスタム API へのコンバーターを参照してください。

注意

Microsoft では、コミュニティによって作成されたツールはサポートされていません。 コミュニティ ツールに関する質問や問題がある場合は、ツールの発行元にお問い合わせください。

外部イベント

カスタム イベントは、外部システムで発生するイベントを表すことができます。 外部システムで発生するイベントはすでに完了しています。

外部イベント用に作成されたカスタム API は、次の原則に準拠する必要があります。

  • メイン操作にプラグインの種類を指定しないでください。
  • 同期ステップの登録は許可しないでください。
    • Custom API Allowed Custom Processing Step Type プロパティを Async Only に設定します。 この設定により、この API に同期ステップが適用されなくなります。
  • 応答プロパティは含めず、要求パラメーターのみを含めます。
    • 同期ロジックがないと、応答プロパティを設定する方法はありません。

注意

これらの設定は、Dataverse の外部で発生するイベント専用ではありません。 これらの設定でカスタム API を使用して、Dataverse 内で 発生するイベントも表すことができます。

2 つの外部イベントの例を比較してみましょう。

シナリオ A: OnCustomerPurchase

POS アプリケーションがあり、顧客の購入が重要なイベントであることを把握したいと考えています。 購入に感謝するメールを顧客に送信し、顧客が Dataverse で費やした合計金額に関する情報を格納したい場合があります。 Dataverse 内で OnCustomerPurchase カスタム API を定義することができます。 POS アプリケーションは、このイベントの情報を Dataverse に送信することができます。 Dataverse で、合計値でレコードを更新する例を考えてみましょう。 そして、Power Automate を使って、購入者にお礼のメールを送りたいと考えています。

カスタム API のメイン操作で合計を計算してレコードを更新するロジックを実装すると、最も効率的に見える場合があります。 しかし、このように同期型のロジックを導入すると、ロジックが失敗して、呼び出した POS アプリケーションにエラーを返す可能性があります。 イベントは既に発生しているため、Dataverse 呼び出しが失敗する可能性がある同期ロジックを実行する必要はありません。 その代わりに、すべてのロジックを含む Power Automate に依存するか、OnCustomerPurchase のイベントに別の非同期プラグインのステップを含めて、Dataverse のレコードを更新します。

シナリオ B: OnVendorPaymentPosted

OnVendorPaymentPostedイベントを含む ERP アプリケーションがあり、自動化ロジックを一元化する方法を簡素化したいだけです。 この外部イベントを表すカスタム API を作成し、ERP アプリケーションがこの Dataverse API を呼び出すように設定できます。 このカスタム API をイベントとしてカタログ化する場合は、Dataverse Power Automate コネクタを使用して、このイベントをトリガーとして使用できます。

この例では、イベントに対して非同期ロジックを登録できるようにする以外は、Dataverse では何も行われません。

外部アプリケーションからのカスタム API の呼び出し

カスタム API を使用してビジネス イベントを送信するにあたっての主な要件は、アプリケーションが Dataverse に対して許可された HTTP リクエストを行う機能を持っていることです。 承認のために、他のアプリケーションから送信された要求では、通常、Dataverse 環境で作成した特別なアプリケーション ユーザー アカウントが使用されます。 ライセンスを取得し、認証された Dataverse ユーザーは、アプリケーションを使用してこれらのリクエストを送信することもできます。

カスタム API からすべての同期ロジックを取り除くことで、エラーが原因で操作が失敗する可能性は極めて低くなりますが、完全に可能性をなくすことはできません。 呼び出し元のアプリケーションは、Dataverse サービスが応答しない場合、ネットワーク接続の問題が発生した場合、またはサービス保護の制限エラーが返された場合に、一時的なエラーに対処する方法を提供する必要があります。

アプリケーションから Dataverse への承認された呼び出しを有効にするには、Dataverse 環境のアプリケーション ユーザーを構成する必要があります。 詳細については、 サーバー間 (S2S) 認証を使用した Web アプリケーションの構築に関するページを参照してください。

ビジネス イベントを使用して自動化をトリガーする

ビジネス イベントが一般的なパターンになると、自動化を可能にする複数の方法が出現します。

ビジネス イベントが公開される最初の体験は、アクションが実行されたとき トリガーを使用して Power Automate Dataverse コネクタで得られます。

アクションが実行されたときのトリガー。

このエクスペリエンスでは、テーブル イベントの作成、更新、および削除イベントは表示されません。 これらのイベントは、 行の追加、変更、または削除 のトリガーを使用して既に使用できます。

関連項目

Catalog と CatalogAssignment テーブル
Dataverse イベントに対応した仮想テーブルを有効化する