[Dynamics 365] プラグインの概要
2017/4/28 Kyo1.Inoue
これまでDynamicsCRM2016 オンプレミスをベースにブログを記載してきました。
Dynamics365は、2016年11月からオンラインでサービス提供されていますが、
Dynamics365のハイブリッド版、オンプレミス版が2017年夏にリリースされるという事で、
視野に入れつつ、Dynamics365ベースのブログを記載していこうかと思っています。
とは言っても、バージョンアップによる弊害が出るような内容、
例えばSQLServerのテーブル構造や新機能まで込み入った内容の記載はまだしていないので、
影響はあまり無いと思います。
プラグインについて全然記載していなかったので、
今日はプラグインについて、まずは概要を簡単に記載したいと思います。
1. プラグイン(Pulugin)とは
Dynamicsのプラグインとは、エンティティ毎のDBトリガーのように動く、プログラムです。
SQLServerでストアドとかトリガー処理を組めば良いじゃん!と思うかもしれませんが、
Dynamicsは、
パッケージで自動生成されたデータベースを直接変更したり、
直接SQLで操作する事が推奨されていないため、
DynamicsのAPI(dll)を介してデータを操作しなければなりません。
直接変更してしまった場合は、MSのサポート対象外になるようなので、気を付けてください。
プラグインは、C#で記述するのが一般的です。というかC#以外で私は作ったことがありません。
昔JAVAでプラグインを記載するMSDNページを見た記憶がありますが、パットは見当たりませんでした。
なので当ブログではC#で記載します。
JavaScriptで画面操作等の即時処理、
C#プラグインで入力チェックやデータの相関設定の登録時処理をおこなうという切り分けです。
画面のJavaScript処理は、画面操作のみ実行されますが、
プラグインは、画面、Excelインポート、ワークフロー等、エンティティのデータ登録時は必ず実行されます。
プラグインでは、パイプライン ステージと呼ばれる、3つのイベント(タイミング)で操作を記載できます。
これらのイベントはエンティティを登録しようとするタイミングで発生します。
※正確には4つのステージがありますが、30 MainOperationはカスタマイズできないため3つとしています。
★【パイプライン ステージ No. 10 PreValidation】
PreValidationは、実際にエンティティにデータが登録される前の一番最初にイベント発生します。
PreValidationに必須チェック等の入力チェック処理を記載します。
入力チェックエラーは、Exceptionをreturnする事により、画面ならポップアップメッセージが表示されます。
実際のイメージは、次回以降に記載します。
★【パイプライン ステージ No. 20 PreOperation】
PreOperationは、実際にエンティティにデータが登録される前のPreValidation処理後にイベント発生します。
PreOperationに相関項目のデータ自動設定処理等の前処理を記載します。
このタイミングで相関チェック等をおこなう事も可能です。
PreValidationと同様にExceptionをreturnする事により、メッセージが表示されます。
★【パイプライン ステージ No. 40 PostOperation】
PostOperationは、実際にエンティティにデータが登録された後にイベント発生します。
PostOperationに別エンティティのデータ自動設定処理等の後処理を記載します。
このタイミングでエラーを返却する場合、対象エンティティの登録はキャンセル(コールバック)されますが、
別エンティティを操作した場合、その処理はコールバックされないので注意してください。
次回以降、実際の記載イメージを若手に記載してもらおうと思います。