このチュートリアルでは、新しいタイルを作成し、ワークスペースの概要にそれを含め、ワークスペースの新しいリストを構築して、ワークスペースにリストのデータ キャッシュを作成します。
必要条件
このチュートリアルでは、リモート デスクトップを使用して環境にアクセスし、インスタンスの管理者としてプロビジョニングされる必要があります。 詳細については、トピック 開発環境の配置とアクセス を参照してください。
重要な概念
- ワークスペースに関連付けられているフォーム パターンについて学んで使用します。
- 新しいタイルを作成し、それをワークスペースの集計セクションに含めます。
- ワークスペースの新しいリストをビルドします。
- リストのデータ キャッシュをワークスペースに作成します。
段取り
チュートリアル プロジェクトおよびトランザクション データのインポート
Microsoft Visual Studio を使用してチュートリアル プロジェクトをインポートします。 チュートリアル プロジェクトには、このチュートリアルを完了するために使用する成果物が含まれています。 Visual Studio を使用して FMTutorial プロジェクトを開き、チュートリアル用のデータを読み込みます。 フリート管理チュートリアルのデータを読み込むために、FMTDataHelper クラスを使用します。 これが作業する最初のチュートリアルである場合は、開発環境の配置とアクセス をレビューして、ローカル仮想マシン (VM)で作業している場合に、管理者ユーザーをプロビジョニングすることを確認します。
- Microsoft Dynamics Lifecycle Services (LCS) の手法から FMTutorialDataModel.axpp ファイルをダウンロードして、VM の Downloads フォルダーにコピーします。
- デスクトップで、Visual Studio ショートカットをダブルクリックして、開発環境を開きます。
- Dynamics 365 メニューで、プロジェクトのインポートをクリックします。
- プロジェクトのインポート ダイアログ ボックスで、ファイル名フィールドの隣にある、省略記号 (...) ボタンをクリックします。
- インポートするファイルの選択ダイアログ ボックスで、ダウンロード フォルダーを参照して FMTutorialDataModel.axpp をクリックしてから開くをクリックします。
- 要素の上書き チェック ボックスをオンにし、現在のソリューション オプションをオンにします。
- OK をクリックします
- ソリューション エクスプローラーでクラスを展開して、FMTutorial プロジェクトで FMTDataHelper を右クリックしてから、スタートアップ オブジェクトとして設定をクリックします。
- ビルドメニューで、ソリューションの再構築をクリックします。 タイムスタンプに関係なく、プロジェクトのすべてのファイルを確実に作成するには、リビルドを使用します。 出力 ウィンドウでビルドの進行状況を表示できます。
- ビルドが完了した後、Ctrl + F5 を押してプロジェクトを実行します。 ブラウザーが開き、データをインポートするクラスが実行されます。
FMTutorial プロジェクトを開く
Visual Studio を使用して FMTutorial プロジェクトを開きます。 Visual Studio を開き、FMTutorial プロジェクトが既に読み込まれている場合は、次のセクションに続行することができます。
- デスクトップ環境がまだ開かれていない場合は、Visual Studio ショートカットをデスクトップ上でダブルクリックして、開発環境を開きます。
- ファイル メニューを開き、開く>プロジェクト/ソリューションをクリックします。
- プロジェクトを開くダイアログ ボックスで、ドキュメント>Visual Studio 15.0>プロジェクトの順に参照して、FMTutorial ソリューションを選択してから、開くをクリックします。
- FMTutorial プロジェクトがソリューション エクスプローラーに表示されます。
手順 1: 運用ワークスペースのパターンを理解
FmtClerkWorkspace フォームを調整する前に、フォームの現在の状態を確認して既に存在するコンテンツと、その内容が運用ワークスペース パターンにどのように適合するかを理解してください。
- ソリューション エクスプローラーで、FmtClerkWorkspace フォームをダブルクリックしてデザイナーで開きます。
- デザイン ノードをクリックします。
- パターン タブをクリックします。運用ワークスペースにはオプションのアクション ウィンドウとオプションのフィルター グループがあります (これらのノードの左に 0..1 の表記で示されています)。 ただし、このパターンによってパノラマ スタイル タブが必要になります。 パターン タブでは、PanoramaBody コントロールがパターンで必要なタブと一致していることを示しますが、このパターンのレベルでオプションの項目に対応するコントロールはありません。
- PanoramaBody をクリックします。
All すべてのワークスペースに必要な 3 つのセクションがあります。
- 集計セクション – このセクションは、カードまたはグラフに対応するタイルまたはフォーム パーツを含むことを意図しています。
- タブ付きリスト – このセクションでは、ユーザーの作業に関連するデータの 1 つまたは複数のリストで構成されています。 一度に 1 つだけ一覧が表示され、各一覧はローカル フィルターとアクションを含めることもできます。 個別のリストは、フォーム パーツ コントロール内でモデル化されます。
- 関連リンク – このセクションは、この活動またはペルソナの、重要なリンクまたは一般的に使用されるリンクで構成されています。
運用ワークスペースは、最大 2 つのグラフ (セクション グラフのタブ ページ) を含むパノラマ セクションと Power BI セクションを必要に応じて含めることができます。
ワークスペースの表示
- ソリューション エクスプローラーで、FmtClerkWorkspace フォームを右クリックしてから、スタートアップ オブジェクトとして設定をクリックします。
- Ctrl+F5 キーを押して、フォームをビルドおよび実行します。 Web ブラウザーでフォームが開きます。
手順 2: ワークスペースの新しいタイルを作成
ワークスペースのコンテンツ構造がわかったので、ワークスペースにコンテンツを追加する方法を見てみます。 たとえば、このワークスペースに対する 1 つの重要な情報は、現在進行中であるレンタル数である可能性があります。 このセクションでは、FmtClerkWorkspace フォームの概要セクションに新しいタイルを追加してこの情報を表示するために必要なメタデータを追加します。 このタイルを正しく機能させるには、クエリ、メニュー項目、タイル、タイル ボタンの 4 つのメタデータ アーティファクトを追加する必要があります。
現在のレンタルを取得するクエリの追加
すべてのタイルは、正しい情報を取得するバッキング クエリが必要です。
ソリューション エクスプローラーの FMTutorial プロジェクトで、クエリ フォルダーを右クリックし、追加をポイントしてから新しい項目をクリックします。
Dynamics 365 品目>データ型>クエリの順にクリックします。 名前プロパティについては、FMTRental_Current を入力します。
追加をクリックします。
新しい FMTRental_Current クエリがデザイナーで開かれていない場合、ソリューション エクスプローラーでダブルクリックします。
デザイナーで、データ ソースを右クリックしてから新しいデータ ソースをクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 テーブル FMTRental Dynamics フィールド はい 範囲 を右クリックし、新しい範囲 をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 フィールド 行政単位 (区画) 先頭値 InProgress 並べ替え を右クリックし、新しいフィールド をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 方向 降順 データ ソース FMTRental フィールド StartDate Ctrl+S キーを押して保存します。
対応するメニュー項目の追加
ソリューション エクスプローラーの FMTutorial プロジェクトで、メニュー項目フォルダーを右クリックし、追加をポイントしてから新しい項目をクリックします。
Dynamics 365 品目>ユーザー インターフェイス>表示メニュー項目の順にクリックします。 Name プロパティを FMTRental_Current に置き換えます。
追加をクリックします。
新しい FMTRental_Current メニュー項目がデザイナーで開かれていない場合、ソリューション エクスプローラーでダブルクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ Value ラベル @FMT197 この値は “現在のレンタル” に対応します。 オブジェクト FMTRental クエリ FMTRental_Current Ctrl+S キーを押して保存します。
タイルの追加
ソリューション エクスプローラーの FMTutorial プロジェクトで、タイル フォルダーを右クリックし、追加をポイントしてから新しい項目をクリックします。
Dynamics 365 品目>ユーザー インターフェイス>タイルの順にクリックします。 Name プロパティを FMTCurrentRentalsTile に置き換えます。
追加をクリックします。
新しい FMTRental_Current タイルがデザイナーで開かれていない場合、ソリューション エクスプローラーでダブルクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ Value サイズ ShortWide メニュー項目名 FMTRental_Current 型 数 Ctrl+S キーを押して保存します。
タイルには、タイルのカウントが自動的に更新される頻度を制御するリフレッシュ頻度プロパティもあります。 このプロパティに設定されている値は、ボリューム データに対するクエリの実行速度とともに、更新されたカウントの要求に基づいている必要があります。 このプロパティを設定する方法の指針については、ワークスペースのタイルおよびリストのキャッシュ を参照してください。 このラボでは、10 分の既定値で十分です。
ワークスペースのフォームへのタイル ボタンの追加
ソリューション エクスプローラーで、FmtClerkWorkspace フォームをダブルクリックしてデザイナーで開きます。
デザイン>PanoramaBody>TileContainer を右クリックして新規をポイントし、ボタンを並べて表示をクリックします。
Alt+上方向キーを 4 回押して、タイル ボタンを TileContainer の上部に移動します。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 氏名 FMTCurrentRentalsTile タイル FMTCurrentRentalsTile Ctrl+S キーを押して保存します。
ワークスペース上の新規タイルの表示
Visual Studio を使用し、更新した FmtClerkWorkspace フォームをビルドして実行します。
- ソリューション エクスプローラーで、FmtClerkWorkspace フォームを右クリックしてから、スタートアップ オブジェクトとして設定をクリックします。
- Ctrl+F5 キーを押して、フォームをビルドおよび実行します。 Web ブラウザーでフォームが開きます。
- 現在のレンタル タイルをクリックします。 レンタル ページに移動し、それは 3 つの現在のレンタルにフィルター処理する必要があります。
- 戻るボタン、または閉じるボタンをクリックし、ワークスペースに戻ります。
- 現在のレンタル タイルの右上隅にある小さな i ボタンをクリックします。 並べて表示されたデータに関する情報が、どの程度新しいかが確認できます。 また、更新されたデータを表示するためのタイルを手動で更新するために使用できるリンクが指定されます。
実行時のタイル データ キャッシュ値の表示
システム管理者は、実行時にタイル データ キャッシュ コンフィギュレーション ページを使用して、タイル キャッシュ パラメーターを変更できます。
- ナビゲーション バーのナビゲーション検索フィールドをクリックします。
- タイル データ を入力し、検索結果の タイル データ キャッシュ構成 をクリックします。
- FMTCurrentRentalsTile レコードを検索します。
このページから、システム管理者はタイル キャッシュにいくつかのランタイム変更を実行できます。 たとえば、システム管理者は、データ キャッシュの有効化/無効化、更新頻度の変更、およびカウント タイルを手動で更新する機能の有効化/無効化をすることができます。 タイル キャッシュは、タイルのあるフォームが最初に開かれたときに登録されることに注意してください。 したがって、ご使用の環境に表示されているタイルのリストが、上の図のリストと異なる場合があります。
手順 3: ワークスペースに新しいタブ リストを作成
次に、ワークスペースに追加のリストを含める方法を確認します。 このセクションでは、フォームを作成する際の経験を紹介し、フォーム パターンも公開します。 利用可能な車両を選択することによって新しいレンタルを開始できるように、利用可能な車両の一覧を追加します。 このセクションでは、新しいワークスペースに新しいリストを追加するだけで、レンタルを開始するアクションは追加しません。 このリストを追加するには、次のタスクを完了する必要があります。
- ワークスペースに新しいタブ ページを追加します。
- リストの内容を持つ新しいフォームを追加します。
- 新しいフォームを示す新しいメニュー項目を追加します。
- 車両を使用可能な車両に限定する新しいクエリを追加します。
新しいリストのワークスペースへのスペースの追加
ソリューション エクスプローラーで、FmtClerkWorkspace フォームをダブルクリックしてデザイナーで開きます。
デザイン>PanoramaBody>TabbedListSection>TabbedLists を右クリックし、新しいタブ ページをクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ Value Name AvailableVehiclesContainer キャプション @FMT199 この値は、“使用可能な車両” に対応します。 AvailableVehiclesContainer を右クリックし、新規 をポイントして、パーツから をクリックします。 フォーム パートは運用ワークスペースのパターンにより、ここで唯一許可されるコントロール タイプです。 このコントロールは、このセクションのコンテンツを保持するためにビルドするフォームにリンクするために使用されます。
プロパティ ウィンドウで、名前プロパティを AvailableVehiclesPart に設定します。
Ctrl+S キーを押して保存します。
新しいワークスペースの内容を持つ新しいフォームを追加します。
ソリューション エクスプローラーの FMTutorial プロジェクトで、フォーム フォルダーを右クリックし、追加をポイントしてから新しい項目をクリックします。
Dynamics 365 品目>ユーザー インターフェイス>フォームの順にクリックします。 Name プロパティを FMTAvailableVehicles に置き換えます。
追加 をクリックします。
新しい FMTAvailableVehicles フォームがデザイナーで開かれていない場合、ソリューション エクスプローラーでダブルクリックします。
フォームのデータ ソースとして FmtVehicle テーブルを追加します。
データ ソース を右クリックし、新しいデータ ソース をクリックします。
新しいデータ ソース ノードをクリックします。 プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 テーブル FMTVehicle 氏名 FMTVehicle 注記: 最初に Table プロパティの値を指定してください。 このプロパティは、同じ値を使用するように自動的に更新されます。
フォームの 2 番目のデータ ソースとして FmtVehicleModel テーブルを追加します。
データ ソース を右クリックし、新しいデータ ソース をクリックします。
新しいデータ ソース ノードをクリックします。 プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 テーブル FMTVehicleModel 氏名 FMTVehicleModel 注記: 最初に Table プロパティの値を指定してください。 このプロパティは、同じ値を使用するように自動的に更新されます。 ソースの結合 FMTVehicle リンク タイプ 内部結合
パターン: <選択> の表記がフォーム デザインの横にあることを確認します。 これは、このノードに必要なパターンを示します。 デザイン を右クリックして パターンの適用 をポイントし、フォーム パターン セクション リスト をクリックします。 このフォーム パターンは通常、ワークスペースのリストで使用されます。
このパターンの予想されるコンテンツを表示するには、パターン タブをクリックします。 この情報は、フォームのコンテンツを作成する際に役立ちます。
特に、このパターンは次の要素を検索します。
- ワークスペース リストに必要なすべてのフィルターおよびアクションを含むオプションのヘッダー グループです。
- 必要なグリッド。 前の図の赤い枠線が示すように、パターン エンジンは現在この要素を見つけることができません。
- オプションの既定アクションは、グリッド内の個々のレコードのバッキング フォームへのナビゲーションを提供できます。
- オプション ボタンで、このセクションの品目の完全なリストを表示するバッキング フォームへユーザーを移動させます。
デザイン を右クリックして 新規 をクリックし、グリッド をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。 注記: 構築中のグリッドには複数のカードが含まれ、カード 2 枚の幅になります。
プロパティ 先頭値 ExtendedStyle cardList 複数選択 いいえ スタイル リスト データ ソース FMTVehicle 氏名 VehicleList 表示されている列のモード 開始日固定 表示されている列 2 VehicleList グリッドを右クリックして 新規 をクリックし、Group をクリックします。
プロパティ ウィンドウで、名前プロパティを VehicleCard に設定します。
VehicleCard グループを右クリックして パターンの適用 をポイントし、ビジネス カード – 3 つのフィールド をクリックします。
VehicleCard グループを右クリックして 新規 をクリックし、Image をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 データ ソース FMTVehicleModel データ メソッド vehicleImage データ ソース>FMTVehicle>フィールドを展開します。
VehicleId および DisplayRelationType フィールドを VehicleCard グループにドラッグします。
デザイン を右クリックして 新規 をクリックし、グループ をクリックします。 新しいグループの Name プロパティを HeaderGroup に更新します。
新しい HeaderGroup 要素にはサブパターンが必要です。これは、これらのセクションのフィルターとアクションの配置に 2 つのバリアントがあるためです。 HeaderGroup を右クリックして パターンの適用 をポイントし、フィルターとツール バー - インライン をクリックします。
HeaderGroup を右クリックして 新規 をクリックし、グループ をクリックします。 新しいグループの Name プロパティを FilterGroup に更新します。
FilterGroup を右クリックして 新規 をクリックし、QuickFilter をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 金額 氏名 VehicleQuickFilter ターゲット コントロール VehicleList Ctrl+S キーを押して保存します。
データを使用可能な車両に限定する新しいクエリの追加
ソリューション エクスプローラーの FMTutorial プロジェクトで、クエリ フォルダーを右クリックし、追加をポイントしてから新しい項目をクリックします。
Dynamics 365 品目>データ型>クエリの順にクリックします。 Name プロパティを FMTAvailableVehicles に置き換えます。
追加 をクリックします。
新しい FMTAvailableVehicles クエリがデザイナーで開かれていない場合、ソリューション エクスプローラーでダブルクリックします。
デザイナーで、データ ソースを右クリックしてから新しいデータ ソースをクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 金額 テーブル FMTVehicle Dynamics フィールド はい 範囲 を右クリックし、新しい範囲 をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 フィールド ステータス 先頭値 取得可能 Ctrl+S キーを押して保存します。
新しいフォームを参照する新しいメニュー項目の追加
ソリューション エクスプローラーの FMTutorial プロジェクトで、メニュー項目フォルダーを右クリックし、追加をポイントしてから新しい項目をクリックします。
Dynamics 365 品目>ユーザー インターフェイス>表示メニュー項目の順にクリックします。 Name プロパティを FMTAvailableVehicles に置き換えます。
追加 をクリックします。
新しい FMTAvailableVehicles メニュー項目がデザイナーで開かれていない場合、ソリューション エクスプローラーでダブルクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 金額 オブジェクト FMTAvailableVehicles クエリ FMTAvailableVehicles Ctrl+S キーを押して保存します。
新しいリストのワークスペースへのリンク
- ソリューション エクスプローラーで、FmtClerkWorkspace フォームをダブルクリックしてデザイナーで開きます。
- デザイン>PanoramaBody>TabbedListSection>TabbedLists>AvailableVehiclesContainer>AvailableVehiclesPart の順にクリックします。
- プロパティ ウィンドウで、メニュー項目名プロパティを FmtAvailableVehicles に設定します。
メニュー項目を表示する
Visual Studio を使用し、更新した FmtClerkWorkspace フォームをビルドして実行します。
- ソリューション エクスプローラーで、FmtClerkWorkspace フォームを右クリックしてから、スタートアップ オブジェクトとして設定をクリックします。
- Ctrl+F5 キーを押して、フォームをビルドおよび実行します。 Web ブラウザーでフォームが開きます。
- 使用可能な車両タブをクリックし、新しいリストを表示します。
- QuickFilter をクリックして Lit と入力し、Enter を押して利用可能な Litware モデルの車両に絞り込みます。
手順 4: リストのバック データ キャッシュを作成
価値が高いクエリのリスト、同じワークスペースから複数のユーザーが使用し作業する場合があるリストについては、パフォーマンスを向上させるためにリストのキャッシュを考慮してください。 このセクションでは、一覧のデータ キャッシュを作成するために必要なコンポーネントを追加します。 これらのコンポーネントには、フィールドをキャッシュにマップするクエリ、キャッシュを保持するテーブル、クエリとテーブルの間のマッピングを提供するクラスが含まれます。 次に、ワークスペース内のいずれかのタブ付きリストにこのキャッシュを取り込みます。
フィールドをデータ キャッシュにマップするクエリの追加
最初のステップでは、キャッシュ テーブルを作成するために使用されるクエリをビルドします。 このクエリには、キャッシュ データを取得するすべてのテーブルが含まれている必要があります。また、結果をキャッシュするレコード/列に限定する必要があります。
ソリューション エクスプローラーの FMTutorial プロジェクトで、クエリ フォルダーを右クリックし、追加をポイントしてから新しい項目をクリックします。
Dynamics 365 品目>データ型>クエリの順にクリックします。 Name プロパティを FMTPickupAndReturnQuery に置き換えます。
追加 をクリックします。
新しい FMTPickupAndReturnQuery クエリがデザイナーで開かれていない場合、ソリューション エクスプローラーでダブルクリックします。
デザイナーで、データ ソースを右クリックしてから新しいデータ ソースをクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 テーブル FMTRental Dynamics フィールド いいえ FMTRental データ ソースに、次の 5 つのフィールドを追加します。 各フィールドについては、フィールドを右クリックし、新規を指し、次にフィールドをクリックします。 プロパティ ウィンドウで、必要に応じてフィールド プロパティを設定します。
- StartDate
- EndDate
- 車両
- 行政単位 (区画)
- RentalId
範囲 を右クリックし、新しい範囲 をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 フィールド 行政単位 (区画) 先頭値 1..2 注記: この値は受取準備完了または処理中のレンタルをキャッシュします。 FMTRental で データ ソース を右クリックし、新しいデータ ソース をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 テーブル FMTCustomer Dynamics フィールド いいえ FMTCustomer データ ソースに、次の 3 つのフィールドを追加します。 各フィールドについては、フィールドを右クリックし、新規を指し、次にフィールドをクリックします。 プロパティ ウィンドウで、必要に応じてフィールド プロパティを設定します。
- 名
- 姓
- 画像
関係 を右クリックし、 新しい関係 をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 データ ソースの結合 FMTRental フィールド Customer 関連フィールド RecID Ctrl+S キーを押して保存します。
キャッシュ テーブルの追加
2 番目のステップでは、キャッシュ クエリから返されるフィールドを持つテーブルを定義します。 キャッシュ行をベース フレームワーク キャッシュ テーブルにマップするために使用される SysDataCacheContextId フィールドを追加することも必要です。 また、このテーブルと他のテーブルとの間に必要な関係を定義する必要もあり、関係するキャッシュされたフィールドを必要とするデータ メソッドも必要です。
ソリューション エクスプローラーの FMTutorial プロジェクトで、テーブル フォルダーを右クリックし、追加をポイントしてから新しい項目をクリックします。
Dynamics 365 品目>データ モデル>テーブルの順にクリックします。 Name プロパティを FMTPickupAndReturnTableCache に置き換えます。
追加 をクリックします。
新しい FMTPickupAndReturnTableCache テーブルがデザイナーで開かれていない場合、ソリューション エクスプローラーでダブルクリックします。
デザイナーで、フィールドを右クリックしてから、次のフィールドを追加します。 各フィールドについては、次の表は、データ型および拡張データ型 (EDT) または列挙型を表示します。
フィールド タイプ フィールド名 EDT/ 列挙型タイプ 文字列 名 FirstName (EDT) 文字列 姓 LastName (EDT) コンテナー 画像 ビットマップ (EDT) Int64 車両 FMTVehicleRecId (EDT) UTC 日時 StartDate StartDateTime (EDT) UTC 日時 EndDate EndDateTime (EDT) Int64 SysDataCacheContextId SysDataCacheContextId (EDT) 列挙 行政単位 (区画) FMTReservationState (Enum) 文字列 RentalId FMTRentalId (EDT) デザイナーで、リレーションを右クリックし、新規をポイントしてからリレーションをクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 氏名 FMTRental 関連テーブル FMTRental FMTRental 関係を右クリックし、新規 をポイントして 標準 をクリックします。
プロパティ ウィンドウで、次のプロパティを設定します。
プロパティ 先頭値 フィールド RentalId 関連フィールド RentalId デザイナーで、マッピングを右クリックしてから新規をクリックします。
プロパティ ウィンドウで、マップ プロパティを SysDataSetCacheTableMap に設定します。
ID をクリックします。 プロパティ ウィンドウで、フィールドのマップ プロパティを RecId に設定します。
SysDataCacheContextId をクリックします。 プロパティ ウィンドウで、フィールドのマップ プロパティを SysDataCacheContextId に設定します。 注記: フィールドが一覧に表示されない場合は、Ctrl+S キーを押してテーブルを保存しなければならない場合があります。
F7 キーを押して、テーブルのコードを表示します。 または、FMTReturnAndPickupTableCache を右クリックし、その後コードの表示をクリックします。
テーブルに、次の表示メソッドを追加します。 フォームは後でこれらのメソッドを使用します。
public display FMTName fullName() { return this.FirstName + ' ' + this.LastName; } public display container customerImage() { ImageReference imgRef; container imgContainer = this.Image; if(imgContainer == connull()) { imgRef = ImageReference::constructForSymbol("Person"); imgContainer = imgRef.pack(); } return imgContainer; } public display str rentalVehicle() { FMTVehicle vehicle; str value; if(this.Vehicle == 0) { value = "No vehicle assigned"; } else { select vehicle where vehicle.RecId == this.Vehicle; value = vehicle.Description; } return value; }
Ctrl+S キーを押して保存します。
クエリとテーブルをリンクするキャッシュ クラスの追加
3 番目のステップは、キャッシュ クエリとキャッシュ テーブルの間のリレーションシップを定義するクラスを作成することです。
ソリューション エクスプローラーの FMTutorial プロジェクトで、クラス フォルダーを右クリックし、追加をポイントしてから新しい項目をクリックします。
Dynamics 365 品目>コード>クラスの順にクリックします。 Name プロパティを FMTPickupAndReturnClass に置き換えます。
追加 をクリックします。
新しい FMTPickupAndReturnClass クラスがデザイナーで開かれていない場合、ソリューション エクスプローラーでダブルクリックします。
クラスに次のコードを追加します。
[SysDataSetExtension(classStr(FMTPickupAndReturnClass)), // The name of this class SysDataSetCacheTableExtension(tableStr(FMTPickupAndReturnTableCache))] // The name of the cache table class FMTPickupAndReturnClass extends SysDataSetQuery implements SysIDataSet { public SysDataCacheRefreshFrequency parmRefreshFrequency() { return 600; // Cache refresh frequency, in seconds. } public SysQueryableIdentifier parmQueryableIdentifier() { return queryStr(FMTPickupAndReturnQuery); // The name of the query. } public SysDataCacheTypeId parmCacheTypeId() { return tableNum(FMTPickupAndReturnTableCache); // The name of the table. } public static FMTPickupAndReturnClass construct() { return new FMTPickupAndReturnClass(); } }
Ctrl+S キーを押して保存します。
ワークスペースとテーブルの一覧にあるデータ キャッシュを読み込む
データ キャッシュを設定した後、フォーム内でキャッシュの使用を開始することができます。 このセクションでは、データ キャッシュを使用するようワークスペース リストのいずれかを更新します。
ソリューション エクスプローラーで、FMTReturningTodayPart フォームをダブルクリックしてデザイナーで開きます。
データ ソースノードを展開します。
FMTCustomer データソースを削除します。
FMTRental データ ソースをクリックします。 プロパティ ウィンドウで、テーブル プロパティを FMTPickupAndReturnTableCache に設定します。
デザイン>ReturningTodayGrid とクリックします。 プロパティ ウィンドウで、データ ソース プロパティを FMTPickupAndReturnTableCache に設定します。
ReturningTodayGrid 内で、CustomerImage をクリックします。 データ ソースプロパティを FMTPickupAndReturnTableCache に、データ メソッドプロパティを customerImage に更新します。
ReturningTodayGrid 内で、FirstNameCopy1 をクリックします。 データ ソースプロパティを FMTPickupAndReturnTableCache に、データ メソッドプロパティを fullName に更新します。
F7 キーを押して、フォームのコードを表示します。
次のコードに示すように、データ キャッシュに対処できることができるようフォームをインストルメント化します。
[Form] public class FMTReturningTodayPart extends FormRun implements SysIDataSetConsumerForm { public void registerDatasourceOnQueryingEvent() { FMTPickupAndReturnTableCache_DS.OnQueryExecuting += eventhandler(this.parmDataSetFormQueryEventHandler().prepareDataSet); } }
Ctrl+S キーを押して保存します。
キャッシュ テーブルで動作するようにリストにあるアクションを更新する
ワークスペースから実行されるアクションは、ベース テーブルからのレコードが必要とするかもしれません。 したがって、これらのアクションを更新してキャッシュ テーブルと連携させる必要があります。 この例では、FmtCompleteRecord は FMTRental レコードをコンテキストとして期待しています。 したがって、このフォームを更新して、ベース レンタル レコードまたはキャッシュ テーブル レコードのいずれかで正しく動作するようにする必要があります。
ソリューション エクスプローラーで、FmtCompleteRental フォームをダブルクリックしてデザイナーで開きます。
F7 キーを押して、フォームのコードを表示します。
public void init() { //If this form was opened with a Rental as context if(element.args() != null && element.args().record() != null && element.args().record().TableId == tablenum(FMTRental)) { //Get the Rental context rentalDS = FormDataUtil::getFormDataSource(element.args().record()); rental = element.args().record(); if(rental != null) { select firstonly forupdate vehicle where vehicle.RecId == rental.Vehicle; } } super(); }
init() メソッドを次のコードと一致するように更新します。
public void init() { //If this form was opened with a record context if(element.args() != null && element.args().record() != null)) { //Get that context rentalDS = FormDataUtil::getFormDataSource(element.args().record()); if(element.args().record().TableId == tableNum(FMTPickupAndReturnTableCache)) { FMTPickupAndReturnTableCache cacheRecord = element.args().record(); select firstonly forupdate rental where rental.RentalId == cacheRecord.RentalId; } else if(element.args().record().TableId == tableNum(FMTRental)) { rental = element.args().record(); } if(rental != null) { select firstonly forupdate vehicle where vehicle.RecId == rental.Vehicle; } } super(); }
Ctrl+S キーを押して保存します。
キャッシュ テーブルで動作するように Returning today クエリ を更新する
- ソリューション エクスプローラーで、FmtRental_ReturningToday クエリをダブルクリックしてデザイナーで開きます。
- データ ソースノードを展開し、FMTRental をクリックします。
- プロパティ ウィンドウで、テーブル プロパティを FMTPickupAndReturnTableCache に更新します。 注記:名前プロパティは、自動的に同じ値に更新されます。
- Ctrl+S キーを押して保存します。
更新されたクエリの表示
Visual Studio を使用し、更新した FmtClerkWorkspace フォームをビルドして実行します。
- ソリューション エクスプローラーで、FmtClerkWorkspace フォームを右クリックしてから、スタートアップ オブジェクトとして設定をクリックします。
- Ctrl+F5 キーを押して、フォームをビルドおよび実行します。 Web ブラウザーでフォームが開きます。
- 今日を返す垂直タブをクリックします。
- リストの 2 番目のレコードに対する完全レンタルをクリックします。
- 終了マイレージ を 200 に設定し、OK をクリックします。 返却されたレンタルがまだ一覧に表示されていることを確認します。
ワークスペースが応答可能であることを確認します。
一覧からレコードを削除する (例えばユーザーがレンタルを完了させる) アクションをユーザーが行った後は、ご自分の一覧を最新に保つようにしてください。 このセクションでは、ワークスペースが適切に反応することを保証するために、そのアクションをインストルメント化します。
ソリューション エクスプローラーで、FmtCompleteRental フォームをダブルクリックしてデザイナーで開きます。
F7 キーを押して、フォームのコードを表示します。
OKButton の clicked() コードを検索します。 呼び出しフォームでのデータ ソースの調査呼び出しは、このメソッドの最後の方です。 そのコード行の直前に、次の if ステートメントを追加してキャッシュ テーブルから処理済のレンタルを削除します。
. . . if(rentalDS.table() == tableNum(FMTPickupAndReturnTableCache)) { //Delete updated record from backing cache FMTPickupAndReturnTableCache cacheRecord = element.args().record(); cacheRecord.delete(); } rentalDS.research(true); }
Ctrl+S キーを押して保存します。
更新されたフォームの表示
Visual Studio を使用し、更新した FmtClerkWorkspace フォームをビルドして実行します。
- ソリューション エクスプローラーで、FmtClerkWorkspace フォームを右クリックしてから、スタートアップ オブジェクトとして設定をクリックします。
- Ctrl+F5 キーを押して、フォームをビルドおよび実行します。 Web ブラウザーでフォームが開きます。
- 今日を返す垂直タブをクリックします。
- リストの 2 番目のレコードに対する完全レンタルをクリックします。
- 終了マイレージ を 100 に設定し、OK をクリックします。 返却されたレンタルが一覧に表示されなくなったことを確認します。
関連するチュートリアル
- 顧客フォームの作成 – フォーム パターンを公開する場合は、このチュートリアルを参照してください。 このチュートリアルでは、詳細マスター パターンをフォームに適用するプロセスについて説明します。
- ナビゲーションの構築 – メニュー構造にワークスペースを追加する方法については、このチュートリアルを参照してください。