設置型プラグインの開発

プラグインは、Dynamics 365 Customer Engagement (on-premises) に統合して、プラットフォームの標準動作を変更または拡張することのできるカスタム ビジネス ロジック (コード) です。 また、プラグインは、Dynamics 365 Customer Engagement (on-premises) によって起動されるイベントのハンドラーと考えることもできます。 既知の一連のイベントにプラグインをサブスクライブ (登録) することによって、そのイベントが発生したときにコードが実行されるようになります。

実行時のプラグイン実行の詳細は イベント フレームワーク を参照してください。

Note

次のドキュメントでは、オンプレミス環境でのみ利用可能な追加オプションについて説明します。 オンプレミス展開とオンライン展開の両方で機能するプラグインの作成に関する一般情報については、Dataverse ドキュメントの プラグインを使用してビジネス プロセスを拡張する トピックをお読みください 。

設置型プラグインの開発のベスト プラクティス

本セクションには、設置型プラグインの開発に特化したベスト プラクティスが含まれています

プラグインに渡される変数へのリファレンスに依存しないでください

同じアプリケーションのドメイン内で実行される完全信頼プラグインがあるところの設置型環境に置いては、プラグインに含まれるデータを参照する変数がオブジェクトへの参照を維持するとは期待しないでください。

データがイベント パイプラインに渡される場合、新しいオブジェクトのインスタンスを作成するために、データはシリアル化され、非シリアル化されます。 このオブジェクト インスタンスは同じメモリ アドレスを参照しません。 プラグイン実行パイプライン内でのオブジェクトに対するあらゆる変更は、パイプライン内の動作に送られたオブジェクト インスタンスに反映されます。

たとえば、RetrieveMultipleRequest に含まれている QueryExpression を定義する場合、QueryExpression を変更するコードがプラグイン内にある場合、その変更は RetrieveMultiple 要求で渡された元の QueryExpression インスタンス変数には発生しません。 パイプライン内には、QueryExpression オブジェクトのプロパティには、データの取得のプロセスで更新される場合があります。 たとえば、QueryExpression.PageInfo プロパティは、クエリの実行の一部として更新されます。 RetrieveMultipleRequest で使用された、元の QueryExpression の変数を検査することでこれらの変更を検出することができなくなります。

プラグインおよびカスタム ワークフロー活動の格納場所

オンディスクのプラグインまたはカスタム フロー活動については、アセンブリを <installdir>\Server\bin\assembly フォルダーに格納します。

このセクションの内容

プラグインの偽装

プラグインの登録および展開

プラグインのデバッグ

外部 Web リソースにアクセスする

オフライン プラグインの実行

ビジネス プロセスを拡張するプラグインの記述
Web サービスの認証と偽装
ビジネス プロセスを拡張するための Dataverse でのプラグインの使用