データ アクション
この記事では、Microsoft Dynamics 365 Commerce のデータ アクションについて説明します。
データ アクションは、Dynamics 365 Commerce アーキテクチャで使用される JavaScript 機能で、アプリケーション間でモジュールが必要とするデータの取り込みおよびマップを行うのに役立ちます。
データ アクションにより、次の機能を通してパフォーマンスが向上します。
- 統合されたアプリケーション レベルおよび要求レベルのキャッシュにより、状態を共有するシナリオが有効になります。
- 組み込みユーティリティにより、アプリケーションに必要な外部要求の数を最小限にするバッチ処理がサポートされます。
- 自動重複排除は、複数のデータ アクション呼び出しが重複していないことを保証するのに役立ちます。
Dynamics 365 Commerce プラットフォームには、一般的なデータ取得を行うモジュールから呼び出す一連のコア データ アクションが含まれています。 たとえば、コア データ アクションは製品の詳細を返します。 カスタム データ アクションを作成して、モジュールが必要とするデータの取り込みおよび処理を行うこともできます。
データ アクションの構造
新しいデータ アクションのために作成されるテンプレートの TypeScript ファイルの例を次に示します。
import * as Msdyn365 from '@msdyn365-commerce/core';
/**
* GetProductReviews Input Action
*/
export class GetProductReviewsInput extends Msdyn365.CommerceEntityInput implements Msdyn365.IActionInput {
// TODO: Determine if the results of this get action should cache the results and if so provide
// a cache object type and an appropriate cache key
constructor() {
super({shouldCacheOutput: true, cacheObjectType: 'TODO', cacheKey: 'TODO'});
}
public getCacheKey = () => `TODO`;
public getCacheObjectType = () => 'TODO';
public dataCacheType = (): Msdyn365.CacheType => 'application';
}
// TODO: Create a data model here or import one to capture the response of the action
export interface IGetProductReviewsData {
text: string;
}
/**
* TODO: Use this function to create the input required to make the action call
*/
const createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {
return new GetProductReviewsInput();
};
/**
* TODO: Use this function to call your action and process the results as needed
*/
async function action(input:GetProductReviewsInput, ctx: Msdyn365.IActionContext):Promise<IGetProductReviewsData> {
// const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;
// TODO: Uncomment the below line to get the value from a service
// const response = await Msdyn365.sendRequest<IGetProductReviewsData[]>('/get/example/id/1', 'get');
return {text: 'Static data from action'};
}
export const IGetProductReviewsAction = Msdyn365.createObservableDataAction({
action: <Msdyn365.IAction<IGetProductReviewsData>>action,
input: createInput
});
データ アクションの重要な部分
アクション機能 – アクションが呼び出されたときに実行されるロジックを含む主な機能。 この機能には、アプリケーション プログラミング インターフェイス (API) の呼び出しの作成、Cookie の読み取り、また渡されたデータの変換が含まれることがあります。
async function action(input:GetProductReviewsInput, ctx: Msdyn365.IActionContext):Promise<IGetProductReviewsData> { // const apiSettings = Msdyn365.msdyn365Commerce.apiSettings; // TODO: Uncomment the below line to get the value from a service // const response = await Msdyn365.sendRequest<IGetProductReviewsData[]>('/get/example/id/1', 'get'); return {text: 'Static data from action'}; } // TODO: Create a data model here or import one to capture the response of the action export interface IGetProductReviewsData { text: string; }
アクション入力クラス – アクション機能にデータを渡すために使用されるクラス。 "cacheObjectType" および "cacheKey" 値は、キャッシュ内でクラスがアクションの結果を入力する場所を示しています。
export class GetProductReviewsInput extends Msdyn365.CommerceEntityInput implements Msdyn365.IActionInput { // TODO: Determine if the results of this get action should cache the results and if so provide // a cache object type and an appropriate cache key constructor() { super({shouldCacheOutput: true, cacheObjectType: 'TODO', cacheKey: 'TODO'}); } public getCacheKey = () => `TODO`; public getCacheObjectType = () => 'TODO'; public dataCacheType = (): Msdyn365.CacheType => 'application'; }
createInput メソッド – このオプション メソッドを使用して、ページが最初に入力されるときにデータを読み込むのに使用するアクション入力クラスのインスタンスをビルドすることができます。
const createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => { return new GetProductReviewsInput(); };
新しいカスタム データ アクションを作成する
新しいカスタム データ アクションを作成するには、次の手順に従います。
コマンド プロンプトでソフトウェア開発キット (SDK) のルート フォルダーに移動し、次の例に示すように、yarn msdyn365 add-data-action DATA_ACTION_NAME コマンド ライン インターフェイス (CLI) コマンドを実行して、データ アクションを作成します。
c:\repos\Msdyn365.Commerce.Online>yarn msdyn365 add-data-action get-product-reviews
新しいカスタム データ アクションの TypeScript ファイルは、\src\actions\ ディレクトリの下に作成されます。 各ファイルの名前は、データ アクションの名前を使用します。 前の例では、、新しいカスタム データ アクションのファイルのパスと名前は、\src\actions\getProductReviews.ts です。