---
title: "カスタムカタログインポート操作の最適化"
slug: "optimizing-custom-catalog-import-operations"
abstract: "パイプラインブロックをスキップするヘッダーキーを使って、カタログインポートルーチンで効率を高める方法。"
---
# カスタムカタログインポート操作の最適化

[Postmanのカタログ](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--importing-catalog-data.html "Walkthrough: Importing catalog data")データインポート用に標準提供されるサンプルは、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"));
    
    }