Dynamics CRM モバイルアプリケーション開発 その 6
みなさん、こんにちは。
前回に引き続き、モバイルアプリケーション開発の紹介をします。
シリーズものですので、是非初回からご覧ください。
今回は新規にタスクを作成し、その後完了させる部分を紹介します。
※これまで同様、コードで動きを確認する目的のため、プログラム
パターンや UI についての考慮は一切していない点ご了承ください。
ボタンとクリックイベントの追加
MainPage.xaml に以下の XAML を追加して、ボタンを追加します
<Page.BottomAppBar>
<CommandBar>
<AppBarButton Icon="Add" Label="タスクの追加" Click="AddTask"/>
</CommandBar>
</Page.BottomAppBar>
また MainPage.xaml.cs ファイルに以下のメソッドを追加します。
private async void AddTask(object sender, RoutedEventArgs e)
{
}
タスク作成ロジックの追加
タスクの作成は REST エンドポイント、SOAP エンドポイントの
いずれでも可能ですが、今回は SOAP エンドポイント経由での
作成を試します。AddTask メソッドに以下コードを追加します。
// 現在のユーザーを確認
WhoAmIResponse response = (WhoAmIResponse)await proxy.Execute(new WhoAmIRequest());
// 新しいタスクの作成
Entity task = new Entity("task");
task["subject"] = "テストタスク";
// 現在コンタクトカードに設定されている取引先担当者を関連として設定
task["regardingobjectid"] = new EntityReference("contact", (spContactCard.DataContext as Contact).Id);
// 所有者を現在のユーザーに設定
task["ownerid"] = new EntityReference("systemuser", response.UserId);
// タスクの作成
Guid taskId = await proxy.Create(task);
タスク完了ロジックの追加
作成したタスクを完了させるためには、SOAP エンドポイントが
必須です。以下のコードを上記に続けて追加します。
// タスク完了リクエストの作成
SetStateRequest setStateRequest = new SetStateRequest()
{
EntityMoniker = new EntityReference("task", taskId),
State = new OptionSetValue(1),
Status = new OptionSetValue(5)
};
// 実行
await proxy.Execute(setStateRequest);
MessageDialog dialog = new MessageDialog("タスクの作成し完了しました!");
await dialog.ShowAsync();
動作確認
では早速動作確認してみます。
1. F5 キーを押下してプログラムを実行します。
3. 画面で右クリックするか、画面したからスワイプしてメニューボタンを
出します。タスクの追加ボタンをクリックします。
5. 検索結果より同じレコードを選択して、完了したタスクが追加されたか
確認します。
まとめ
SOAP エンドポイントを利用しないといけない処理をする場合、ヘルパー
コードを使うと簡単に行えることが段々伝わってきたでしょうか。
次回は事前バインド開発について紹介します。
- 中村 憲一郎