1. 行政

カスタム・カタログ・インポート操作の最適化

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Commerceカタログ データをインポートするためにすぐに使用できるPostmanサンプル は、HTTPヘッダーのキーを使用して、Commerce Engine内の特定のパイプライン ブロックを無視することでインポート プロセスの効率を高めます。これらのパイプライン ブロックは、インクリメンタル インデックス作成操作などのタスクや、カタログのインポート操作のパフォーマンスに影響を与える可能性のあるその他の機能を実行します。

このトピックでは、カタログ・データをプログラムでインポートするための独自のカスタム・カタログ・インポート・ルーチンを作成することを選択した場合に、これらのヘッダー・キーによって得られる効率性の利点について説明します。

Commerceカタログのインポート ルーチンを最適化するためにスキップするブロック

以下は、Commerceカタログのインポート操作を高速化するためにカタログのインポートルーチンがスキップする必要があるブロックのリストです。

  • IndexDeletedSitecoreItemBlock - このブロックは、インデックスから削除するエンティティをリストに追加します。

  • IndexUpdatedSitecoreItemBlock - このブロックは、エンティティをリストに追加して、Sitecore検索インデックスに増分更新できるようにします。

  • AddEntityToIndexListBlock - このブロックは、エンティティをリストに追加して、Commerce Engineの検索インデックスに段階的に更新できるようにします。

  • LocalizeEntityBlock - このブロックは、ローカライズされたエンティティを作成します (カタログ データにはローカライズされたデータが含まれていることが想定されます)。

これらのブロックは、特定のフラグ(またはkeys)がSitecore.Commerce.Core.CommerceContextヘッダーに含まれている場合は実行されない条件付きブロック(Sitecore.Commerce.Core.PolicyTriggerConditionalPipelineBlock)から派生します。

ポリシーキーをプログラムで渡す方法

CommerceContextヘッダーPolicyKeysプロパティにフラグを追加して、Commerceカタログ データのインポートを完了するのにかかる全体的な時間に影響を与えるインデックス作成ルーチンやその他の機能を無効にすることができます。

次のポリシーキーを使用できます。

  • IgnoreAddEntityToIndexList

  • IgnoreIndexDeletedSitecoreItem

  • IgnoreIndexUpdatedSitecoreItem

  • IgnoreLocalizeEntity

CommerceContextPolicyKeysプロパティは現在のポリシーを取得しますが、キーを操作するには、次の例に示すように、ヘッダーを直接変更する必要があります。

新しいポリシーキーを設定するには:

  1. ヘッダー文字列から現在のキーを直接取得します。

    policyKeysHeader =
    context.CommerceContext.Headers[CoreConstants.Headers.PolicyKeys];
  2. 新しいポリシーキーを追加します。

    policyKeysHeader
    += "|IgnoreAddEntityToIndexList";
  3. 更新されたポリシーキーをヘッダーに設定します。

    context.CommerceContext.Headers[CoreConstants.Headers.PolicyKeys]
    = policyKeysHeader;

    例えば:

    // for catalog
    import, disable recommended blocks
    if
    (context.CommerceContext.Headers.ContainsKey(CoreConstants.Headers.PolicyKeys))
    {
    var keys =
    context.CommerceContext.Headers[CoreConstants.Headers.PolicyKeys];
    
    keys +=
    "|IgnoreIndexDeletedSitecoreItem|IgnoreIndexUpdatedSitecoreItem|IgnoreAddEntityToIndexList|IgnoreLocalizeEntity";
    
    context.CommerceContext.Headers[CoreConstants.Headers.PolicyKeys] =
    keys;
    }
    else
    {
    context.CommerceContext.Headers.Add(new KeyValuePair<string,
    StringValues> (CoreConstants.Headers.PolicyKeys,
    "IgnoreIndexDeletedSitecoreItem|IgnoreIndexUpdatedSitecoreItem|IgnoreAddEntityToIndexList|IgnoreLocalizeEntity"));
    
    }
この記事を改善するための提案がある場合は、 お知らせください!