ノート
Dynamics 365 Commerce のリテール・インタレスト・グループは、Yammer から Viva Engage に移転しました。 新しい Viva Engage コミュニティにアクセスできない場合は、このフォーム (https://aka.ms/JoinD365commerceVivaEngageCommunity) に入力して追加し、最新のディスカッションに参加してください。
この記事では、Dynamics 365 commerce runtime (CRT) のトリガー サポートについて説明します。 CRT は、すべての要求に対してプレ トリガーおよびポスト トリガーをサポートしています。
CRT トリガーの概要
コマース ランタイム (CRT) トリガーを使用すると、CRT ワークフローを拡張できます。 すべての CRT 要求の前後にビジネス ロジックを追加できます。 次の 2 つの方法を使用します。
- OnExecuting – 対応する IRequestHandler 実装によって要求が処理される前に、このメソッドを呼び出します。
- OnExecuted – 対応する IRequestHandler 実装によって要求が処理された後、このメソッドを呼び出します。
ノート
大量の API (Carts/AddCartLines、Products/GetByIds など) によって使用される CRT 要求を拡張し、拡張機能がチャネル データベースから読み取る必要がある場合は、データベース読み取りのキャッシュを有効にします。 そうしないと、拡張機能で消費される Retail Server およびチャネル データベース リソースが多すぎるため、コマース スケール ユニット (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 拡張プロジェクトを関連付けます。