Commerce Rumtime (CRT) の拡張機能とトリガー
この記事では、Dynamics 365 commerce runtime (CRT) のトリガー サポートについて説明します。 CRT は、すべての要求に対してプレ トリガーおよびポスト トリガーをサポートしています。
CRT トリガーの概要
Commerce Runtime (CRT) トリガーによって CRT のワークフローを拡張でき、全ての CRT リクエストが実行される前後に、ビジネス ロジックに追加できるようにします。 次の 2 つの方法が使用されます。
- OnExecuting – このメソッドは、要求が対応する IRequestHandler 実装によって処理される前に呼び出されます。
- OnExecuted – このメソッドは、要求が対応する IRequestHandler 実装によって処理された後に呼び出されます。
ノート
大量の API (たとえば、Carts/AddCartLines や Products/GetByIds) で使用される CRT リクエストを拡張し、その拡張機能がチャネルデータベースから読み取る必要がある場合、Microsoft ではデータベース読み取り用のキャッシュを有効にすることを推奨しています。 これをしない場合、拡張機能が Retail Server とチャネル データベースのリソースを過剰に消費し、ビジネスに影響を及ぼすCommerce Scale Unit (CSU) 全体のパフォーマンスの問題が発生する可能性があります。
CRT トリガーの拡張
トリガーを実装するには、次のコード例に示すように、これらのタスクを完了する必要があります。
- IRequestTriggerAsync を実装します。
- SupportedRequestTypes を指定して、トリガーを実行する必要のある要求のタイプを定義します。
- 要求の解決前にビジネス ロジックを実行する必要がある場合、トリガーの実装を OnExecuting メソッドに記述します。
- 要求の解決後にビジネス ロジックを実行する必要がある場合、トリガーの実装を OnExecuted メソッドに記述します。
顧客データ要求の取得のトリガー実装例。
using Microsoft.Dynamics.Commerce.Runtime;
using Microsoft.Dynamics.Commerce.Runtime.DataServices.Messages;
using Microsoft.Dynamics.Commerce.Runtime.Messages;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
public class GetCustomerTriggers : IRequestTriggerAsync
{
/// <summary>
/// Gets the supported requests for this trigger.
/// </summary>
public IEnumerable<Type> SupportedRequestTypes
{
get
{
return new[] { typeof(GetCustomerDataRequest) };
}
}
/// <summary>
/// Post trigger code.
/// </summary>
/// <param name="request">The request.</param>
/// <param name="response">The response.</param>
public async Task OnExecuted(Request request, Response response)
{
//Custom logic
// The only stub to handle async signature
await Task.CompletedTask;
}
/// <summary>
/// Pre trigger code
/// </summary>
/// <param name="request">The request.</param>
public async Task OnExecuting(Request request)
{
// custom logic
await Task.CompletedTask;
}
}
拡張機能の登録
拡張ライブラリを ...\RetailServer\webroot\bin\ext フォルダーにコピーして貼り付け、構成セクションのカスタム拡張ライブラリ情報を含む commerceRuntime.ext.config ファイルを更新します。 この例では、Contoso.Commerce.Runtime.Services はカスタムの拡張機能名です。
<add source="assembly" value="Contoso.Commerce.Runtime.Services" />
CRT 拡張機能がオフライン モードで動作するためには、構成セクションの下にある拡張ライブラリ情報で、...\Microsoft Dynamics 365\70\Retail Modern POS\ClientBroker\ext\CommerceRuntime.MPOSOffline.ext.config を更新してください。 次に、拡張ライブラリを ...\Microsoft Dynamics 365\70\Retail Modern POS\ClientBroker\ext にコピーし貼り付けます。
CRT のデバッグ
POS から CRT をデバッグするには、POS が Retail Server に接続されているときに、CRT 拡張プロジェクトを、w3wp.exe (Retail Server の IIS プロセス) に関連付けます。 オフライン モードの場合は、dllhost.exe プロセスに CRT 拡張プロジェクトを関連付けます。