次の方法で共有


Azure 統合

Microsoft Dataverse は、Azureとの統合に対応しています。 開発者は Dataverse にプラグインを登録し、実行コンテキストと呼ばれるランタイム メッセージデータを、クラウド内の 1 つ以上の Azure ソリューションに渡すことができます。 この機能は、Azure が、実行時コンテキストを外部基幹業務 (LOB) アプリケーションに通信するための、サポートされている数少ないソリューションの 1 つであるため、特に重要です。

Azure Service Bus は Dataverse ランタイムデータと外部クラウドベースの基幹業務 (LOB) アプリケーションの間で、安全かつ信頼性の高い通信チャネルを提供します。 この機能が特に役立つのは、異種 Dataverse システムまたは他の Dataverse サーバーと、ビジネス データ変更との同期を保つ場合です。

接続の主な要素

Dataverse とAzure Service Bus 間の接続を実装する主な要素については後述します。 次のセクションの図には、操作中のこれらの要素が表示されます。

データのコンテキスト

データ コンテキストには、現在の Dataverse 操作の一部として処理されるビジネス データが含まれます。 この処理は、ユーザー、ワークフロー、またはアプリケーションから特定の Dataverse 操作の実行要求があったときに開始されます。 データのコンテキストは、現在処理中の特定の要求およびテーブルの組合せで実行される、イベント パイプラインに登録されたプラグインまたはカスタム ワークフロー活動に渡されます。 データコンテキストのタイプは、イベント実行パイプラインに渡される場合は IPluginExecutionContext 、サービス バスにポストされる場合は RemoteExecutionContext です。

Azure Service Bus に投稿されるメッセージ内に含まれるデータ コンテキストは、既定の .NET バイナリ形式に加え、 XML または JSON 形式である場合があります。 このようなデータ形式をサポートすることで、Azure がホストする .NET 以外のクライアントがサービスバスから Dataverse データを読み取ることができる、クロス プラットフォームの相互運用性が実現します。

重要

HTTP ペイロード全体のサイズが 192Kb を超えると、次のプロパティが削除されます:

ParentContextInputParametersPreEntityImagesPostEntityImages

一部の操作では、次のプロパティは含まれません。

  • 追加データが削除された後にペイロードのサイズが 192kb を超える場合、追加の MessageMaxSizeExceeded プロパティは、システムが送信した BrokeredMessage に追加されます。 これはデータの一部が切捨てられたことを示します。
  • 追加データが削除された後にペイロードのサイズが 192 Kb を超える場合、エラーが発生し、メッセージは送信されません。

前述のテクノロジーの詳細については、次を参照してください。

プラグイン

プラグインは、Azure Service Bus へのデータ コンテキストを含むメッセージの投稿を開始するのに使用される 2 つのメソッドのうちの 1 つです。他のメソッドはユーザー定義のワークフロー活動です。 Dataverse-Azure の接続機能が対応しているプラグインは 2 種類あります: アウトオブボックス (OOB) と カスタム です。 いずれの場合も、システムのベスト パフォーマンスのため、非同期で実行するようプラグインを登録することをお勧めします。

Azure対応の既定 (OOB) のプラグインが用意されており、プラグイン登録ツールを使用してサービス エンドポイントを登録することで、Dataverse に登録できます。 イベント実行パイプラインにプラグインの「ステップ」を登録し、プラグインが実行して投稿通知を行うトリガーとなるメッセージとテーブルの組み合わせを特定する必要があります。 実行するとき、プラグインは非同期サービスを通知し、サービス エンドポイント通知サービス (IServiceEndpointNotificationService) を介し、現在の要求データ コンテキストを Azure Service Bus に投稿します。

また、“Azure 対応“ の独自のカスタム プラグインを作成することもできます。 カスタムプラグインはサンドボックスで実行されます。 カスタム プラグインは、サービス エンドポイントの通知を介し、サービス バスに対するデータ コンテキストの投稿を開始することができます。 このサービスを呼び出すコードを追加すると、プラグインは “Azure 対応“になります。

プラブイン全般の詳細については、 プラグインの記述を参照してください。 Azure 対応プラグインの詳細については、Azure 対応のカスタム プラグインの記述 を参照してください。

ユーザー定義のワークフロー活動

プラグインと同様に、ユーザー定義のワークフロー活動を記述して、サービス エンドポイント通知サービスを使用し、Azure Service Bus に対する現在の要求メッセージ データの投稿を開始することができます。 詳細: ワークフロー拡張

非同期サービス

サービス エンドポイント通知サービスにより通知されると、非同期サービスは、イベント実行パイプラインが現在処理している要求メッセージのデータ コンテキストの、Azure Service Bus に対する投稿を処理します。 各ポストは非同期サービスのシステム ジョブによって実行されます。 ユーザーは、 Power Apps Web アプリケーションのシステム ジョブビューを使用して、各システム ジョブのステータスを表示することができます。 Web アプリケーションで、 詳細設定 を選択して従来の Dynamics 365 インターフェイスを表示します。 続いて設定>システム ジョブを選択します。

非同期サービスの詳細については、非同期サービスを参照してください。

Microsoft Azure サービス バス

サービスバスは Dataverse とAzure サービス バス ソリューション リスナー アプリケーションの間で要求されたメッセージのデータ コンテキストを中継します。 また、サービス バスは、承認されたアプリケーションのみが投稿された Dataverse データにアクセスすることができるよう、データ セキュリティを提供します。 Dataverse がデータのコンテキストをサービス バスに投稿し、リスナー アプリケーションがデータ コンテキストを読み取るための権限は、Azure Shared Access Signatures (SAS) が管理しています。

サービス バスの詳細については、サービス バス を参照してください。 サービス バス認証の詳細については、 サービス バスの認証および承認 を参照してください。

Microsoft Azure ソリューション

Dataverse と Azure の接続が機能するためには、Azure Service Bus ソリューションのアカウントに少なくともひとつのソリューションが含まれている必要があり、そのソリューションには 1 つ以上のサービスエンドポイントが含まれてる必要があります。 リレー エンドポイント契約の場合、“Dataverse-aware”を持つリスナー アプリケーションが、サービスバス上の Dataverse リクエストをエンドポイント上でアクティブにリッスンする必要があります。 キュー エンドポイント契約では、リスナーはアクティブにリスニングする必要はありません。 リスナーは、RemoteExecutionContext 型が定義されるように Microsoft.Xrm.Sdk アセンブリにリンクすることで、Dataverse に対応したものになります。 詳細については次を参照ください: Microsoft Azure ソリューションに向けたリスナーを記述する

Dataverse は Azure イベント ハブ ソリューションへのエベントデータの送信に対応しています。 イベント ハブの詳細については、Azure Event Hubs ソリューションのイベント データとの連携 を参照してください。

Dataverse をサービス バス シナリオへ

ここでは、これまでに説明した接続コンポーネントを実装するシナリオについて説明します。 前提条件として、SAS はサポートされている発行者として Dataverse を認識するように構成されており、Azure Service Bus ソリューションは、Dataverse がリスナーのいるエンドポイントに投稿できるようにルールで構成されています。

次の図は、シナリオを構成する物理要素を示しています。

Dynamics 365 からサービス バスへのシナリオ。

この図に示すイベントの順序は次のとおりです。

  1. リスナーアプリケーションは、Azure Service Bus ソリューションのエンドポイントに登録され、サービス バス上の Dataverse リモート実行コンテキストのリスニング処理を開始します。

  2. ユーザーは、登録済みの OOB プラグインまたはカスタム Azure 対応プラグインの実行をトリガーとする Dataverse での操作を実行します。 プラグインが、非同期サービス システム ジョブを介して、現在の要求データ コンテキストのサービス バスへのポストを開始します。

  3. Dataverse によってポストされたクレームが認証されます。 続いてサービス バスは、リモート実行コンテキストをリスナーに渡します。 リスナーはコンテキスト情報を処理し、その情報に対してビジネス関連タスクを実行します。 サービス バスから非同期サービスにポストの成功が通知され、関連するシステム ジョブが完了ステータスに設定されます。

Dataverse と Azure ソリューションの契約の確立

ソリューションのエンドポイントごとに、サービス バス上でのリモート実行コンテキストの「メッセージ」の処理と、そのエンドポイントで使用する必要があるセキュリティを定義する契約を構成します。 サービス バスのメッセージは、ここでサポートされているコントラクトのひとつを使ってエンドポイントで受信されます。

キュー

キュー契約は、クラウドでメッセージ キューを提供します。 キュー契約では、リスナーはエンドポイントでメッセージをアクティブにリスニングする必要はありません。 キューに対しては破壊読み取りと非破壊読み取りがあります。 破壊読み取りでは、キューにあるメッセージが読み取られ、メッセージが削除されます。 非破壊読み取りでは、メッセージがキューから削除されません。

Dataverse がサポートするキューのタイプは、永続キューと呼ばれます。 永久キューでは、コードで指定することができる、有効期間が長く有限のメッセージがあります。

一方向

一方向契約ではアクティブなリスナーが必要です。 エンドポイントにアクティブなリスナーがない場合、サービス バスへのポストが失敗します。 要求を投稿する非同期システム ジョブが最終的に中止され、そのステータスが "失敗" にセットされるまで、Dataverse は指数関数的に長い期間、投稿を再試行します。

二方向

双方向契約は、リスナーからポストを開始した Dataverse プラグインやカスタム ワークフローのアクティビティに文字列の値を返すことができる点を除き、一方向契約と共通しています。

停止

REST 契約は REST エンドポイントでの二方向契約に似ています。

トピック

一つ以上のリスナーがトピックをサブスクライブしてトピックからメッセージを受信することができること以外は、キューに似ています。

Event Hubs

この契約の種類は Azure Event Hubs ソリューションに適用されます。

契約の構成では、契約で使用されるセキュリティの種類を指定します。 契約は、Transport Layer Security (TLS) または Secure Sockets Layer (SSL) (https) を使用するトランスポート セキュリティを使用できます。

クレームの認証は、サービス バスに対するセキュリティで保護されたアクセスに使用されます。 サービス バスへの認証で使用されるクレームは、 Dataverse 内で生成され、 Dataverse 構成データベースに指定されている AppFabricIssuer 証明書が署名します。

ランタイム エラーの管理

サービス バスへのポストが試行された後でエラーが発生した場合は、Web アプリケーションの関連するシステム ジョブのステータスを調べて、エラーの詳細を確認します。 サービス バスが停止しているか、リスナーまたはエンドポイントが使用できない場合、 Dataverse で処理されている現在のメッセージはバスにポストされません。 非同期サービスはメッセージのポスト試行を継続しますが、最初は頻繁に試行されるものの、その後は試行間隔が急激に長くなります。 内部の Dataverse エラーの場合、メッセージのポストは試行されません。 外部のサービス バスまたはネットワークのエラーの場合、関連するシステム ジョブは「待機」状態になります。