1. 行政

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

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

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

Postmanのカタログデータインポート用に標準提供されるサンプルは、HTTPヘッダー内のキーを使用しており、Commerce Engine内の特定のパイプラインブロックを無視することでインポートプロセス中の効率向上に役立ちます。これらのパイプラインブロックは、インクリメンタルインデックス操作などのタスクや、カタログインポート操作のパフォーマンスに影響を与える他の機能を実行します。

このトピックでは、カタログデータをプログラム的にインポートするためのカスタムカタログインポートルーチンを作成する際に、これらのヘッダーキーが効率化する利点をどのように活用できるかを概説します。

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

以下は、Commerce Catalogインポート操作を高速化するためにカタログインポートルーチンでスキップすべきブロックの一覧です:

  • IndexDeletedSitecoreItemBlock - このブロックはインデックスから削除されるエンティティをリストに段階的に追加します。
  • IndexUpdatedSitecoreItemBlock - このブロックはエンティティをリストに追加し、Sitecore検索インデックスに段階的に更新できるようにします。
  • AddEntityToIndexListBlock - このブロックはエンティティをリストに追加し、Commerce Engineの検索インデックスに段階的に更新できるようにします。
  • LocalizeEntityBlock - このブロックはローカライズされたエンティティを作成します(カタログデータにはローカライズされたデータが含まれていることが期待されます)。

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

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

CommerceContextヘッダーPolicyKeysプロパティにフラグを追加すれば、インデックス作成ルーチンやCommerce Catalogのデータインポート完了にかかる時間に影響を与える機能を無効にできます。

以下のポリシーキーが利用可能です:

  • IgnoreAddEntityToIndexList
  • IgnoreIndexDeletedSitecoreItem
  • IgnoreIndexUpdatedSitecoreItem
  • IgnoreLocalizeEntity

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

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

  1. 現在のキーはヘッダー文字列から直接取得できます:

    policyKeysHeader = context.CommerceContext.HeadersCoreConstants.Headers.PolicyKeys;

  2. 新しい保険契約のキーを添記してください:

    policyKeysHeader += "|IgnoreAddEntityToIndexList";

  3. ヘッダーに更新されたポリシーキーを設定します:

    context.CommerceContext.HeadersCoreConstants.Headers.PolicyKeys = policyKeysHeader;

    例えば:

    // for catalog import, disable recommended blocks if (context.CommerceContext.Headers.ContainsKey(CoreConstants.Headers.PolicyKeys)) { var keys = context.CommerceContext.HeadersCoreConstants.Headers.PolicyKeys;

    keys += "|IgnoreIndexDeletedSitecoreItem|IgnoreIndexUpdatedSitecoreItem|IgnoreAddEntityToIndexList|IgnoreLocalizeEntity";

    context.CommerceContext.HeadersCoreConstants.Headers.PolicyKeys = keys; } else { context.CommerceContext.Headers.Add(new KeyValuePair<string, StringValues> (CoreConstants.Headers.PolicyKeys, "IgnoreIndexDeletedSitecoreItem|IgnoreIndexUpdatedSitecoreItem|IgnoreAddEntityToIndexList|IgnoreLocalizeEntity"));

    }

この記事を改善するための提案がある場合は、 お知らせください!