Instiq
第3章 · プラットフォーム拡張:プラグイン·v1.0.0·更新 2026/6/29·読了目安 約14分

変更要約: PL-400 第3章を新規作成(ドメイン: プラットフォーム拡張の前半=プラグイン)。Dataverse プラグイン(実行パイプラインのステージ pre-validation/pre-operation/post-operation・同期/非同期・実行コンテキスト IPluginExecutionContext・Pre/Post Image・Organization service CRUD・sandbox/性能・Plug-in Registration Tool)、カスタム API とビジネスイベント(custom API message bound/unbound・Dataverse business events・プラグイン実装)。

3.1Dataverse プラグイン

この節の要点

実行パイプラインのステージ、同期/非同期、実行コンテキスト、Pre/Post Image、Organization service、性能、Plug-in Registration Tool を理解します。

プラグイン は Dataverse のイベントに サーバーサイドでビジネスロジックを差し込む 拡張です。いつ・どの段階で 実行するかが設計の核心です。

3.1.1実行パイプラインのステージ

プラグインは イベント実行パイプライン の段階に登録します。pre-validation(トランザクション外・最初・入力検証/権限前チェックに)、pre-operation(トランザクション内・DB 書き込み前・値の補正に)、post-operation(トランザクション内・DB 書き込み後・関連更新/通知に)の順です。さらに 同期(即時・ユーザー待ち・例外でロールバック)か 非同期(システムジョブで後追い実行・重い処理向け)かを選びます。

3.1.2実行コンテキストと Image

実行コンテキスト(IPluginExecutionContext) から InputParameters/OutputParameters/Depth(無限ループ防止)などを取得します。更新前後の値が必要なら Pre Image(操作 のレコードの値)と Post Image(操作 の値)を登録して参照します。データ操作は Organization service(IOrganizationService) の CRUD(Create/Retrieve/Update/Delete)で行います。

3.1.3性能と登録

プラグインは sandbox(分離実行) で動き、2 分のタイムアウト等の制約があるため重い処理は 非同期 や Azure へ逃がします。同期プラグインで例外を投げると トランザクションがロールバックします。登録は Plug-in Registration Tool でステップ(メッセージ/テーブル/ステージ/Image)を構成します。

試験ポイント

決め手:「トランザクション外・最初・入力検証」=pre-validation。「DB書込前・値補正」=pre-operation。「DB書込後・関連更新」=post-operation。「即時・例外でロールバック」=同期。「重い処理を後追い」=非同期。「操作前の値」=Pre Image、「操作後の値」=Post Image。「サーバーCRUD」=Organization service。登録=Plug-in Registration Tool。

注意

混同に注意:
①pre-validation(トランザクション外)とpre-operation(内)を取り違えない。
②Pre Image(前)とPost Image(後)を逆にしない。
③同期(待ち/ロールバック)と非同期(後追い)の使い分け。
④重い処理は同期プラグインに置かない(タイムアウト)。
⑤Organization service(サーバー)とClient API(クライアント)は別。

プラグインの実行パイプライン=pre-validation(トランザクション外・最初・入力検証)/pre-operation(内・DB書込前・値補正)/post-operation(内・DB書込後・関連更新)。同期(待ち・例外でロールバック)vs非同期(システムジョブ後追い・重い処理)。Pre Image(操作前の値)/Post Image(操作後の値)、Organization serviceでCRUD、Plug-in Registration Toolで登録する図。
段階を選ぶ

3.1.4この節のまとめ

  • ステージ=pre-validation(外)/pre-operation(前)/post-operation(後)・同期vs非同期
  • Pre Image=操作前/Post Image=操作後・Organization serviceでCRUD・コンテキストでDepth
  • sandbox実行・重い処理は非同期/Azure・登録はPlug-in Registration Tool

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. データベースへの書き込み後に、関連レコードの更新や通知を行うプラグインを登録したい。最適なステージはどれですか?

Q2. トランザクションの外で最初に実行し、入力検証や事前の権限チェックを行いたい。最適なステージはどれですか?

Q3. プラグインで更新操作の「変更前の値」を参照したい。最適なのはどれですか?

Q4. 時間のかかる重い処理をプラグインで実行したい。タイムアウトやユーザー待ちを避ける最適な方法はどれですか?

Q5. プラグインからサーバーサイドで Dataverse のレコードを CRUD 操作したい。最適なのはどれですか?

理解度を確認第3章「プラットフォーム拡張:プラグイン」の問題を解く