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

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

プラグインとユーザー定義ワークフロー活動は、Microsoft Dynamics 365 の既存の機能を拡張するために作成するカスタム コードです。 プラグインまたはユーザー定義のワークフロー活動を使用できるようにするには、その前に、サーバーに登録する必要があります。 特定の SDK クラスを使用して登録コードを記述することで、Microsoft Dynamics 365 (オンラインおよび設置型) にプラグインまたはユーザー定義のワークフロー活動をプログラムで登録できます。 ただし、カスタム コードの習得を容易にし、その開発と展開を短時間で行えるように、SDK の Bin フォルダにプラグインとユーザー定義のワークフロー活動の登録ツールが含まれています。Microsoft Dynamics CRM SDK パッケージをダウンロードします。

このトピックでは主にプラグインを扱いますが、ほとんどの内容はユーザー定義のワークフロー活動にも当てはまります。 これら 2 つの違いの 1 つが、ユーザー定義ワークフロー活動アセンブリでは、アセンブリのみを登録することです。 プラグインの場合は、プラグイン アセンブリと、プラグインあたり 1 つ以上のステップを登録します。 ユーザー定義のワークフロー活動の詳細については、「ユーザー定義ワークフロー活動 (ワークフロー アセンブリ)」を参照してください。

System_CAPS_security セキュリティ メモ

信頼できるソースから取得したプラグインまたはユーザー定義ワークフロー活動以外は登録しないでください。

ソリューション コンポーネントとしてプラグインをパッケージ化する方法の詳細については、ソリューションを使用した拡張機能のパッケージ化および配布 を参照してください。

このトピックの内容

プラグイン登録ツール

プラグインの保存

展開

アセンブリのバージョン管理とソリューション

セキュリティ制限

プログラムを使用したプラグインの登録

カスタム コード実行の有効化または無効化

プラグイン登録ツール

Plug-in Registration ツールは、グラフィカル ユーザー インターフェイスを提供します。このツールを使用して、プラグインとユーザー定義のワークフロー活動を Microsoft Dynamics 365 に登録できます。 ただし、プラグインとユーザー定義ワークフロー活動は、Microsoft Dynamics 365 (オンライン) のサンドボックス (分離モード) でのみ登録できます。

このツールを使用してプラグインを登録および展開する方法の詳細については、「チュートリアル: プラグイン登録ツールを使用したプラグインの登録」を参照してください。 ツールを Visual Studio の [ツール] メニューに外部ツールとして追加し、開発プロセスのスピードを向上させることができます。

プラグインの保存

設置型展開の場合サンドボックス内に登録されていないプラグインは、Microsoft Dynamics 365 Server のデータベース、またはディスク上のファイル システムに保存できます。 運用の準備ができているプラグインは、ディスク上ではなく Microsoft Dynamics 365 データベースに保存することを強くお勧めします。 データベースに保存されたプラグインは、データ センター クラスター内の複数の Microsoft Dynamics 365 Server に自動的に配布されます。 ディスク上へのプラグインの保存は、Microsoft Visual Studio を使用してプラグインをデバッグするときに便利です。 ただし、データベースに格納されているプラグインをデバッグできます。 詳細については、「プラグインのデバッグ」を参照してください。

サンドボックスに登録されたプラグインは、Microsoft Dynamics 365 の展開 (設置型、IFD、またはオンライン) に関係なく、データベースに格納する必要があります。

展開

設置型またはインターネット接続型 (IFD) の Microsoft Dynamics 365 のインストールの場合は、プラグインを別のコンピューターから Microsoft Dynamics 365 のサーバーのディスクに展開するときに (ディスク上展開)、プラグイン アセンブリをサーバーに手動でコピーしてから、プラグインを登録する必要があります。 アセンブリは、プラグインを実行する各サーバーの <installdir>\Program Files\Microsoft CRM\server\bin\assembly フォルダーに展開する必要があります。

システム ユーザーが Microsoft Dynamics 365 でイベントを発生させたときに、登録プラグイン アセンブリがサーバー上に存在していないという状況を防ぐため、アセンブリをサーバーの …\bin\assembly フォルダーにコピーしてからプラグインを登録します。 サーバー データベースに展開する場合、プラグイン アセンブリはプラグイン登録中に自動的にコピーされるので、このような問題が発生することはありません。

プラグインの設計によっては、プラグインのために他の参照アセンブリを実行することが必要になる場合があります。 プラグインをデータベースとディスクのどちらに展開するかに関係なく、プラグインで他のアセンブリを実行する必要がある場合は、そのアセンブリのコピーをプラグインが実行される、各サーバーのグローバル アセンブリ キャッシュに置く必要があります。Microsoft Dynamics 365 (オンライン) サーバーの場合は、そのサーバーのグローバル アセンブリ キャッシュにアクセスできないため、コピーする必要はありません。

プラグインを開発環境からステージング サーバーまたは運用サーバーに移動するには

  1. 開発用コンピューターで、プラグイン コードをビルドします。 デバッグ情報は含めません。 プラグインのパフォーマンスを最適化します。

  2. プラグインを Microsoft Dynamics 365 サーバー データベースに登録します。

  3. Microsoft Dynamics 365 Web アプリケーションを使用して、ソリューションを作成するか、既存のものを使用し、プラグインをそのソリューションに追加します。

  4. 他の必要なコンポーネントをソリューションに追加した後で、ソリューションをエクスポートします。

  5. ソリューションをステージング サーバーまたは運用サーバーにインポートします。

アセンブリのバージョン管理とソリューション

Microsoft Visual Studio プロジェクトの Assembly.info ファイルで定義されている "major.minor.build.revision" の番号形式を使用して、プラグイン アセンブリのバージョンを管理できます。 新しいソリューションでアセンブリ バージョン番号のどの部分が変更されるかにより、インポートによって既存のソリューションが更新されるときに、次の動作が適用されます。

  • ビルドまたはリビジョンのアセンブリ バージョン番号が変更されます。

    これは一括アップグレードと見なされます。 更新されたアセンブリを含むソリューションがインポートされると、アセンブリの古いバージョンは削除されます。 古いソリューションの既存の手順は、新しいバージョンのアセンブリを参照するように自動的に変更されます。

  • メジャーまたはマイナーのアセンブリ バージョン番号が変更されます。ビルドまたはリビジョン番号は変更されません。

    改訂されたアセンブリを含む更新されたソリューションがインポートされるとき、そのアセンブリは、既存ソリューションに含まれるそのアセンブリの旧バージョンとはまったく異なるアセンブリと見なされます。 既存ソリューション内のプラグイン登録手順では、引き続き古いバージョンのアセンブリが参照されます。 古いアセンブリの既存のプラグイン登録手順で改訂後のアセンブリが参照されるようにするには、プラグイン登録ツールを使用して、改訂後のアセンブリの種類を参照するように手順構成を手動で変更する必要があります。 この作業は、後でインポートするために更新後のアセンブリをソリューションにエクスポートする前に行う必要があります。

ソリューションの詳細については、「ソリューションの概要」を参照してください。

セキュリティ制限

セキュリティ制限を設定して、権限のあるユーザーだけがプラグインを登録できるようにすることができます。 分離して登録されていないプラグインの場合は、プラグインの登録を行うシステム ユーザー アカウントが、展開マネージャーの展開管理者グループに含まれている必要があります。 システム管理者ユーザー アカウントまたは展開管理者グループに含まれているユーザー アカウントだけが展開マネージャーを実行できます。

重要

分離されていないプラグインの場合、登録を行うユーザー アカウントが展開管理者グループに含まれていないと、プラグイン登録中に例外がスローされます。 例外には "SDK エンティティで作成操作を実行するための権限がありません" と示されます。

プラグインの登録を行うシステム ユーザー アカウントには、以下に示すような組織規模のセキュリティ特権が必要です。

  • prvCreatePluginAssembly

  • prvCreatePluginType

  • prvCreateSdkMessageProcessingStep

  • prvCreateSdkMessageProcessingStepImage

  • prvCreateSdkMessageProcessingStepSecureConfig

詳細については、「Security role and privilege reference」および「Microsoft Dynamics 365 のセキュリティ モデル」を参照してください。

サンドボックス (分離モード) で登録されているプラグインの場合は、プラグインの登録を行うシステム ユーザー アカウントにシステム管理者ロールが必要です。展開管理者グループのメンバーシップは必要ありません。

プログラムを使用したプラグインの登録

プラグインとイメージの登録に使用される重要なエンティティの種類は、PluginAssemblyPluginTypeSdkMessageProcessingStep、および SdkMessageProcessingStepImage です。 ユーザー定義ワークフロー活動の登録に使用される重要なエンティティの種類は、PluginAssembly および PluginType です。 作成、更新、取得、削除の各操作では、これらのエンティティを使用します。

イメージの詳細については、プラグインに渡されるデータ コンテキストについて を参照してください。

カスタム コード実行の有効化または無効化

ここで説明するように、Windows PowerShell を使用して、プラグインやユーザー定義ワークフロー活動などのカスタム コードをサーバー上で有効または無効にすることができます。 または、展開 Web サービスを使用できます。 詳細については、CustomCodeSettings.AllowExternalCode プロパティを設定するための「展開エンティティ設定および展開構成設定」を参照してください。

カスタム コード実行を有効にするには

  1. Windows PowerShell コマンド ウィンドウを開きます。

  2. Microsoft Dynamics 365 PowerShell スナップインを追加します。

    Add-PSSnapin Microsoft.Crm.PowerShell
    
  3. 現在の設定を取得します。

    $setting = get-crmsetting customcodesettings
    
  4. 現在の設定を変更します。

    $setting.AllowExternalCode="True"
    
    set-crmsetting $setting
    
  5. 設定を確認します。

    get-crmsetting customcodesettings
    

カスタム コード実行を無効にするには

  1. Windows PowerShell コマンド ウィンドウを開きます。

  2. Microsoft Dynamics 365 PowerShell スナップインを追加します。

    Add-PSSnapin Microsoft.Crm.PowerShell
    
  3. 現在の設定を取得します。

    $setting = get-crmsetting customcodesettings
    
  4. 現在の設定を変更します。

    $setting.AllowExternalCode=0
    
    set-crmsetting $setting
    
  5. 設定を確認します。

    get-crmsetting customcodesettings
    

関連項目

プラグインの開発
プラグインのデバッグ
プラグイン分離、信頼、および統計
ソリューションを使用した拡張機能のパッケージ化および配布
エンティティ別の特権

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権