次の方法で共有


コマース ランタイム (CRT) の拡張性とトリガー

ノート

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 トリガーの拡張

トリガーを実装するには、次のコード例に示すように、これらのタスクを完了します。

  1. IRequestTriggerAsync を実装します。
  2. SupportedRequestTypes を指定して、トリガーを実行する必要がある要求の種類を定義します。
  3. 要求の前にビジネス ロジックを実行する必要がある場合 は、OnExecuting メソッドにトリガーの実装を記述します。
  4. 要求の後にビジネス ロジックを実行する必要がある場合 は、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 拡張プロジェクトを関連付けます。