LoginSignup
7
7

ローコード プラグインで Dataverse を強化する - Dataverse Accelerator の使い方

Last updated at Posted at 2023-12-04

警告
本機能は現在プレビュー機能になります。
プレビュー機能は運用環境(本番環境)での使用を想定しておらず、機能が制限されている可能性があります。
本記事は試用環境を用いて動作を確認しています。

本記事の要約 (GPT)

Dataverse Accelerator は、Dataverse でローコード プラグインを作成・使用できる新しい機能です。ローコード プラグインは、Power Fx という言語でサーバー側のカスタム ビジネス ロジックを定義できます。ローコード プラグインには、手動で実行するインスタント プラグインと、Dataverse テーブル イベントに応じて自動で実行する自動プラグインの 2 種類があります。ローコード プラグインは、データの操作や検証にかかる時間を短縮し、Dataverse の機能を拡張する強力なツールです。この記事では、ローコード プラグインの作成方法や動作確認方法について説明しています。

Dataverse Accelerator とは

Dataverse Accelerator は、Dataverse 環境でローコード プラグインを作成、使用できるようにするものです。
ローコードプラグインの 2 種類があり、それぞれ異なるトリガーとパラメーターを持ちます。

種類 トリガー パラメータのサポート スコープ
インスタント 手動で実行する はい グローバルとテーブル
自動 Dataverse テーブル イベント いいえ テーブル

Dataverse Accelerator は、Dataverse 上のデータ操作のパフォーマンスを向上させたり、カスタムのビジネスロジックを実現したりするための強力なツールです。

プラグインとは

ローコードプラグインということは、Dataverse にはローコードじゃないプラグインがあるということです。

プラグインは、Microsoft Dataverse データ操作の処理中に発生した特定のイベントに応答して実行されるカスタム イベント ハンドラーです
https://learn.microsoft.com/ja-jp/power-apps/developer/data-platform/plug-ins

そもそもの Dataverse プラグインとは、.NET Framework で実装され、Dataverse イベント フレームワーク内の特定のイベント (ステップ) に登録し、Create、Retrieve、RetrieveMultiple、Update、Delete、Associate、Disassociate 発生すると、登録されたプラグインのコードが実行されます。

イベントフレームワーク

つまりプラグインとは、データ処理動作を拡張または変更する手段ということになります。

ビジネス ルールとプラグイン

ビジネス ルールによっては実装ができなかったり、複雑であったりすることから、プラグインでロジックを記述することを選択する場合があります。 1 つのシナリオとして、複雑な条件をプラグインで実装したり、ビジネスルール内ではアクセスが難しいデータにアクセスする場合に利用したりします。

プラグイン以外の選択肢

実際プラグインを使わずとも、 Power Automate やワークフロー、計算フィールドなど、他にもデータ処理動作を拡張する手段はあります。

  • ワークフローでは、複数のワークフローで使用できるコードで再使用可能な条件およびアクションを作成できる、カスタム ワークフロー拡張 (ワークフロー活動) を使用できます。
  • 計算フィールドおよびロールアップ フィールドは、以前はワークフローを使用しなければ実行できなかった機能を提供します。
  • ユーザー定義アクションは、ワークフローに似た種類のプロセスで、他のワークフローまたは Web サービス エンドポイントから呼び出せる再利用可能なメッセージを作成できます。
  • Azure Service Bus 統合と Webhooks を使用して、多くのさまざまなリソースを使用してロジックを適用できる外部システムにデータを格納できます。
  • Power Automate は、以前はプラグインを使用して実行されていた多くの機能を提供します。

プラグインを利用する利点と考慮する点

  • プラグインは、サーバー側で実行されるので、データの操作や検証にかかる時間を短縮できる
  • プラグインは、C# で作成できるので、開発者は自分のスキルや知識に合わせてロジックを定義できる
  • プラグインは、Dataverse の機能を拡張し、既存のビジネス ソリューションにないニーズに対応できる

ただし、高機能で高性能なため、高い開発スキルが求められます。不適切に作成されたプラグインはデータ処理の遅延のみでなく、環境全体のパフォーマンスに影響を与える可能性があります。
また、 Dataverse を利用する Power Apps などのローコードアプリケーションは、急速に変化するビジネスに対応することができるため、それに合わせたプラグインの修正も必要になる可能性が高いです。

ローコードプラグインとは

そんな中、Power Fx でプラグインを開発することで、簡単にこれらの利点を利用することが可能になったものが、ローコードプラグインになります。
C#を必要とせず、Power Apps でもおなじみの Power Fx を利用することで、開発者以外もプラグインを開発することが可能になりました。

利用するための前提条件

ローコード プラグインを作成するための前提条件

2023 年 10 月 1 日 以降に作成した環境に関しては既に Dataverse Accelerator が存在すると思います。それ以前に作成した環境に関しては管理画面からインストールし追加する必要があります。

image.png

起動すると以下のような画面になります。(既定で2つ作られています)

image.png

自動実行プラグインを作成 (Automated plug-in)

Create automated plug-in を選択します。

image.png

image.png

パラメータ
DisplayName プラグインの表示名 日本語NG
Table 対象のテーブル
Run this plug-in When the row is どのタイミングでプラグインを実行するのか(作成時、更新時、削除時)
Expression ローコードプラグインで実行したい式を記載する

詳細オプション(Advanced options)を開くとさらに設定が可能です。

image.png

パラメータ
When should this run レコードが実際に追加/編集/削除される前に処理を実行するかどうか
Solution ローコードプラグインを配置するソリューション

試しに適用日が現在の日付より3日以降先の日付でない場合登録できないようなプラグインを作成します。(2023/12/6 であれば、2023/12/10 以降しか登録できないようにする)

テーブルは「LowCodePlug-inTable」というテーブルを用意し、適用日という日付のみの列を用意しています。
image.png

image.png

選択したソリューションに追加されていることが確認できます。
image.png

こちらにも表示されています(Automated を選択していないと表示されません)
image.png

動作確認

Dataverse のテーブル

Dataverse のテーブルからデータを登録してみましょう。

正しくエラーになっていることが確認できます。
image.png

先の日付は登録できることが確認できます。
image.png

モデル駆動型アプリ

モデル駆動型アプリで動作を確認します。

image.png

エラーメッセージも表示され、データも正しく登録できています。

image.png

キャンバスアプリ

キャンバスアプリでも確認してみましょう。

image.png

エラーにはなりますが、メッセージは表示されません。
監視上ではエラーメッセージは確認できます。

image.png

手動実行のプラグイン (Instant plug-in)

今度は手動で実行するプラグインを作成してみましょう。

image.png

image.png

パラメータ
DisplayName プラグインの表示名 日本語NG
Parameters 引数と戻り値の定義
Expression ローコードプラグインで実行したい式を記載する

詳細オプション(Advanced options)を開くとさらに設定が可能です。

image.png

パラメータ
Solutioin プラグインを配置するソリューション
Name プラグインの論理名 環境全体で一意である必要がある
Description プラグインの使用方法や機能に関する説明
Scope テーブルの行に関連付けする必要がるかどうか 必要が無ければグローバルを選択

関連付けを行うと、引数に行のデータを渡す必要がありますが、その行のデータを ThisRecord で取得することが可能になります。
エンティティを選択すると、テーブルを選択する必要があります。
image.png

つまり汎用的なプラグインの場合は、グローバル、エンティティに関連付けをする必要がある場合はエンティティをスコープとして選択する形になります。

汎用的なグローバルプラグイン

試しに数値を3桁でカンマ区切りにするプラグインを作成します。

image.png

Test を選択して、入力してみると正しく動作していることが確認できます。

image.png

Value に直接数値を入力すると入力されていない扱いになるようで、入力後にスピンボタンで上下を選択してから、Run を選択してください

保存後ソリューションに正しく保存されていることが確認できます。

image.png

動作確認

キャンバスアプリ or カスタムページ

キャンバスアプリやカスタムページの場合、Environment というテーブルを追加する必要があります。

image.png

image.png

このような形で呼び出すことができます。

image.png

利用する場合は変数に入れているのでこのような形になります。
image.png

正しく動作していることが確認できます。
image.png

コードスニペットを利用することで、より簡単に使うことができます。

image.png

// コピーした式
Environment.new_split({NumValue:Value})

PowerAutomate

今回はグローバルの手動実行プラグインなので、「バインドしてないアクションを実行しする」を選択します。

image.png

image.png

正しく動作していることが確認できます。

image.png

まとめ

Dataverse のローコードプラグインは、今までできなかったことややりにくかったことを簡単に実装する手段になります。もちろんローコードプラグインを使う必要が無かったり、使わなくても実装ができることもたくさんありますが、それらを含めて機能を実装する上での選択肢にしてみてはいかがでしょうか?

リンク

自己紹介

普段は YouTube Channel で Power Apps や Power Automate に関しての1分程度でまとめた動画を投稿しています。 600本以上の動画がありますので、ぜひキャンバスアプリを作成する際の参考にしてみてください。
Power Platform Work

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7