トレーニング
認定資格
Microsoft Certified: Power Platform Developer Associate - Certifications
Microsoft Power Platform Developer を使用して、ビジネス タスクとプロセスを簡素化、自動化、変換する方法について説明します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
このサンプルでは、sample_IsSystemAdmin
という名前のカスタム API をサポートするプラグインの作成方法を示します。
このサンプルでは、sample_IsSystemAdmin
カスタム API の主な操作のためのプラグインを作成します。 このカスタム API は、ユーザーがシステム管理者セキュリティ ロールを持っているかどうかを検出します。
ユーザーがシステム管理者のセキュリティロールを持っているかどうかを検出するには、ユーザーにセキュリティ ロールが直接割り当てられているかどうか、または所属するチームにセキュリティ ロールが割り当てられているかどうかに応じて、2 つの個別のクエリが必要になる場合があります。 このカスタム API は、これらのクエリをブール値を返す単一の API 呼び出しにカプセル化します。 これにより、操作を Dataverse サーバーに委任することで使いやすくなります。
このサンプルにあるコードを実行するには、最初に組織でカスタム API を作成する必要があります。 これを行うには 2 つの方法があります。
このフォルダーの IsSystemAdminFunction_1_0_0_0_managed.zip
には、このコードを使用する sample_IsSystemAdmin
カスタム API が含まれます。 このソリューション ファイルをインポートするだけで、組織でカスタム API を作成できます。 手順については、ソリューションのインポートを参照してください。
テストが終了したら、マネージド ソリューションを削除してカスタム API を削除します。
カスタム API を自分で作成し、このコードで作成されたプラグイン アセンブリを設定できます。 カスタム API を作成するにはいくつかの方法があり、カスタム API の作成と使用 で文書化されています
このカスタム API は、次のデータで定義されています。
{
"uniquename": "sample_IsSystemAdmin",
"allowedcustomprocessingsteptype": 0,
"bindingtype": 1,
"boundentitylogicalname": "systemuser",
"description": "Returns whether the user has the System Administrator security role",
"name": "Is System Administrator",
"displayname": "Is System Administrator",
"executeprivilegename": null,
"isfunction": true,
"isprivate": false,
"workflowsdkstepenabled": false,
"iscustomizable": {
"Value": false
},
"CustomAPIResponseProperties": [
{
"uniquename": "HasRole",
"name": "Has Role",
"description": "Whether the user has the System Administrator security role",
"displayname": "Has Role",
"type": 0,
"logicalentityname": null,
"iscustomizable": {
"Value": false
}
}
]
}
このデータを使用して、次の例に従い Insomnia と Web API を使用してカスタム API を作成できます: コードでカスタム API を作成する。
渡される値については、次のトピックを参照してください: CustomAPI テーブル
このカスタム API は、ユーザー (SystemUser) テーブル にバインドされた機能です。 これには単一のブール応答プロパティ HasRole
があり、ユーザーがシステム管理者のセキュリティロールを持っている場合は true
を返します。
上記で定義したカスタム API を作成したら、この .NET クラス ライブラリ プロジェクトをビルドして、IsSystemAdminCustomAPI.dll
という名前のプラグイン アセンブリを生成します。 このアセンブリには、PowerApps.Samples.IsSystemAdmin
という名前の単一のプラグイン タイプがあります。
プラグインの登録で説明するように、プラグイン登録ツールを使用して作成されたプラグイン アセンブリを登録する必要があります。
プラグインを登録すると、カスタム API のプラグイン タイプとして設定できるようになります。
作成する sample_IsSystemAdmin
カスタム API は、環境内のアンマネージド カスタマイズの一部になります。 これを削除するには、カスタム API とプラグイン アセンブリを削除する必要があります。
この sample_IsSystemAdmin
カスタム API は、このコードを使用してシステムをクエリして、ユーザーがシステム管理者セキュリティ ロールを持っているかどうかを検出します。
sample_IsSystemAdmin
カスタム API を使用するには、Web API または Dataverse .NET Framework SDK アセンブリのいずれかを使用できます。
コードを記述する必要がないため、Web API を試すのが最も簡単です。 ブラウザを使用してテストできます。
https://yourorgname.api.crm.dynamics.com/api/data/v9.2
/systemusers?$select=fullname
ブラウザーで JSON データを表示できるようになります。systemuserid
値のいずれかを選択し、別のブラウザー タブを開きます。systemuserid
値を使用して、次の URL を構成します。https://<your org url>/api/data/v9.2/systemusers(<The systemuserid value>)/Microsoft.Dynamics.CRM.sample_IsSystemAdmin
Microsoft.Dynamics.CRM
の名前空間を含める必要があります。 詳細情報: バインドされた関数{
"@odata.context": "https://yourorgname.api.crm.dynamics.com/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.sample_IsSystemAdminResponse",
"HasRole": false
}
HasRole
値は、ユーザーがシステム管理者セキュリティ ロールを持っているかどうかを示します。
.NET 用 SDK のクイック スタートのサンプル手順を使用して、C# で .NET Framework コンソール アプリケーションを作成できます。 クイックスタート: .NET 用 SDK のサンプル (C#)
次の静的メソッドを、プログラム クラスに追加します。 これは、再利用可能なメソッドを作成します。
static bool IsSystemAdmin(IOrganizationService svc, Guid systemuserid)
{
var req = new OrganizationRequest("sample_IsSystemAdmin")
{
["Target"] = new EntityReference("systemuser", systemuserid)
};
var resp = svc.Execute(req);
var hasRole = (bool)resp["HasRole"];
return hasRole;
}
WhoAmIRequest
を呼び出すコードを次に置き換えます。
//Compose a query to retrieve top 10 users
QueryExpression query = new QueryExpression("systemuser");
query.ColumnSet = new ColumnSet("fullname");
query.TopCount = 10;
//Execute the query to retrieve the data
EntityCollection users = svc.RetrieveMultiple(query);
foreach (Entity user in users.Entities)
{
//Test each record returned using the custom API
bool isAdmin = IsSystemAdmin(svc, user.Id);
//Show the results in the console
Console.WriteLine($"{user["fullname"]} is{(isAdmin? string.Empty: " not")} an administrator");
}
このコードは 10 人のユーザーを取得し、各ユーザーをループして、ユーザーがシステム管理者であるかどうかをテストし、結果をコンソールに書き込みます。
トレーニング
認定資格
Microsoft Certified: Power Platform Developer Associate - Certifications
Microsoft Power Platform Developer を使用して、ビジネス タスクとプロセスを簡素化、自動化、変換する方法について説明します。
ドキュメント
プラグイン登録ツールを使用してカスタム API を作成する (Microsoft Dataverse) - Power Apps
プラグイン登録ツールを使用してカスタム API を作成する
サンプル: ExportDataUsingFetchXmlToAnnotation カスタム API プラグイン (Microsoft Dataverse) - Power Apps
ダウンロード可能な CSV ファイルにデータをエクスポートするカスタム API 用のプラグインを作成する方法を学びます。
CustomAPI テーブル (Microsoft Dataverse) - Power Apps
カスタム API を作成するときに使用するテーブルと列の値について説明します。