2017/5/16 TTN

今回は「簡単なプラグインサンプル PreOperation」という事で
営業案件で、項目に値を登録した場合に他項目の設定を行う
プラグインの作成手順を記載します。


[Dynamics 365] プラグインの概要
にも記載がありましたが、
PreOperation段階でデプロイされたプラグインは
エンティティにデータが登録される前のPreValidation処理後にイベント発生します。


1 プラグインの作成
 1.1 クラスの追加
  [Dynamics 365]簡単なプラグインサンプル PreValidationで作成した「Myplugin」プロジェクトを
  VisualStudioで開きます。
  ソリューションエクスプローラーのOpportunityフォルダを右クリック、
  「新しい項目の追加」または「クラス」を選択して新規クラスファイルを作成します。
  クラスファイル名はOpportunityPreOperationという名前で作成します。


(↑クリックすると拡大表示されます)


(↑クリックすると拡大表示されます)

  新規プロジェクトから作成する場合は
  [Dynamics 365]簡単なプラグインサンプル PreValidationの「1.1 ソリューションの作成」をご参照ください。


 1.2 プラグインの実装
  追加したクラスファイルを開き、下記のコードを書き込みます。
  今回は、「購入時期が即時なら確率を90%に自動設定する」機能を実装します。

using System;
using Microsoft.Xrm.Sdk;

namespace Myplugin
{
    /// <summary>
    /// 営業案件PreOperation
    /// </summary>
    public class OpportunityPreOperation : IPlugin
    {
        /// <summary>
        /// プラグイン実行時ハンドラー(IPluginの抽象メソッド)
        /// </summary>
        /// <param name="serviceProvider">サービスプロバイダ</param>
        public void Execute(IServiceProvider serviceProvider)
        {
            // IPluginExecutionContext を取得
            // プラグインの実行コンテキスト情報を取得します。
            IPluginExecutionContext context = 
                serviceProvider.GetService(typeof(IPluginExecutionContext)) 
                                             as IPluginExecutionContext;
            
            // 営業案件登録時に購入時期が即時、かつ確率が未入力なら
            // 確率を90%に自動設定する。
            AutoFillAccuracy(context);
        }

        /// <summary>
        /// 確率の自動設定
        /// </summary>
        /// <param name="context">入力パラメタ</param>
        private void AutoFillAccuracy(IPluginExecutionContext context) 
        { 
             // Entityの入力値があれば 
            if (context.InputParameters.Contains("Target") 
               && context.InputParameters["Target"] is Entity) 
            { 
                // Entityを取得 
                Entity entity = context.InputParameters["Target"] as Entity; 
                // 営業案件登録時に購入時期が即時、かつ確率が未入力なら 
                if (entity.Attributes.Contains("purchasetimeframe") 
                && ((OptionSetValue)entity.Attributes["purchasetimeframe"]).Value == 0 
                && !entity.Attributes.Contains("closeprobability")) 
                { 
                     // 確率を90%に設定する。 
                     entity.Attributes.Add("closeprobability", 90); 
                } 
            } 
        } 
    } 
}


 1.3.署名の設定
  署名は1プロジェクトに1つで問題ありませんので、
  PreValidationで作成した署名ファイルが既にあれば再設定は必要はありません。
  プロジェクトにMypluginKey.pfxが無い方は、
  [Dynamics 365]簡単なプラグインサンプル PreValidationの「1.3.署名の設定」をご参照ください。

  ビルド時にキーファイルのエラーとなる場合は、
  ソリューションエクスプローラーのプロジェクト右クリック、「プロパティ」を選択します。
  左の署名タブをクリックし、「パスワードの変更」から
  前回設定したパスワードを設定し直してください。


2.プラグインのデプロイ

 営業案件新規登録時に、プラグインが実行されるように、
 PluginRegistrationToolを使用して、プラグインを登録します。
 [Dynamics 365]プラグインの登録
 参考に登録を進めてください。


3.動作確認

 営業案件の新規ボタンを押下します。
 下図のように購入時期フィールドに「即時」と入力し、上書き保存を押下します。

(↑クリックすると拡大表示されます)

 空白だった確率フィールドが90%に自動設定されることを確認します。

(↑クリックすると拡大表示されます)

 以上がDynamics365向けの簡単なPreOperationプラグインの作成手順になります。

Dynamics CRM