Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 13
みなさん、こんにちは。
前回に引き続き Dynamics CRM Online 2015 Update 1 で提供される
Web API 開発者プレビューを T4 テンプレートで作成したクライアント
で利用する方法について紹介します。連載記事になるため以下の記事を
事前にご覧ください。
Web API 開発者プレビュー その 1
Web API 開発者プレビュー その 2
Web API 開発者プレビュー その 10
Web API 開発者プレビュー その 11
Web API 開発者プレビュー その 12
今回は T4 テンプレートで作成したクライアントを利用した Action の
実行を紹介します。Action の詳細は以下記事をご覧ください。
Action の利用
普段よく使われる組織メッセージとして WhoAmI 要求を試します。
プログラムの実装
1. 前回作成した Visual Studio ソリューションを開き、Program.cs
ファイルを開きます。新しく以下のメソッドを追加します。
public void RunActions(string accessToken)
{
// クライアントの作成
CrmODataClient client = new CrmODataClient(new Uri(serverUrl + "/api/data/"));
client.SendingRequest2 += (s, e) => { e.RequestMessage.SetHeader("Authorization", "Bearer " + accessToken); };
}
2. 以下の using ステートメントが追加されていることを確認します。
using Microsoft.OData.Client;
3. Main メソッドの以下のコードを書き換えて、新しいメソッドを
呼ぶように変更します。
元)
app.CRUDRun(result.AccessToken);
変更後)
app.RunActions(result.AccessToken);
4. 追加した RunActions メソッドに以下のコードを追加します。
WhoAmI Action を実行します。
// WhoAmI の実行
WhoAmIResponse whoAmIRes = client.WhoAmI().GetValue();
5. 最後に結果を表示します。以下のコードを追加します。上記で
作成したリクエストに対して GetVaue() を実行しています。
// 結果の表示
Console.WriteLine("UserId: {0}", whoAmIRes.UserId);
Console.WriteLine("OrganizationId: {0}", whoAmIRes.OrganizationId);
Console.WriteLine("BusinessUnitId: {0}", whoAmIRes.BusinessUnitId);
動作確認
1. F5 キーを押下してプログラムを実行します。
2. 認証ダイアログが表示されたらログインします。
3. WhoAmI の結果が表示されることを確認します。
Function の利用
次に Function として、上記で取得した UserId をそのまま利用できる
RetrieveUserPrivileges を試します。
プログラムの実装
1. 上記に続いて、以下のコードを RunActions メソッドに追加します。
上記で取得した UserId を使って RetrieveUserPrivilege を実行します。
// ユーザー権限の取得
var rolePrivileges = client.RetrieveUserPrivileges(whoAmIRes.UserId).Execute();
2. 結果を表示するコードを追加します。
// 結果の表示
foreach (var rolePrivilege in rolePrivileges)
{
Console.WriteLine("レベル: {0}, PrivilegeId: {1}", rolePrivilege.Depth, rolePrivilege.PrivilegeId);
}
動作確認
1. F5 キーを押下してプログラムを実行します。
2. 認証ダイアログが表示されたらログインします。
3. RetrieveUserPrivileges の結果が表示されることを確認します。
以下に今回追加したメソッドを示します。
public void RunActions(string accessToken)
{
// クライアントの作成
CrmODataClient client = new CrmODataClient(new Uri(serverUrl + "/api/data/"));
client.SendingRequest2 += (s, e) => { e.RequestMessage.SetHeader("Authorization", "Bearer " + accessToken); };
// WhoAmI の実行
WhoAmIResponse whoAmIRes = client.WhoAmI().GetValue();
// 結果の表示
Console.WriteLine("UserId: {0}", whoAmIRes.UserId);
Console.WriteLine("OrganizationId: {0}", whoAmIRes.OrganizationId);
Console.WriteLine("BusinessUnitId: {0}", whoAmIRes.BusinessUnitId);
// ユーザー権限の取得
var rolePrivileges = client.RetrieveUserPrivileges(whoAmIRes.UserId).Execute();
// 結果の表示
foreach (var rolePrivilege in rolePrivileges)
{
Console.WriteLine("レベル: {0}, PrivilegeId: {1}", rolePrivilege.Depth, rolePrivilege.PrivilegeId);
}
}
まとめ
組織サービスを利用できるのは Web API のメリット
ですが、クライアントを利用することでより容易に
コーディングが行えます。次回はトランザクション処理
を紹介します。お楽しみに!
- 中村 憲一郎