1. 行政

チュートリアル: カタログとインベントリ データのエクスポート

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

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

このトピックでは、Sitecore XC環境からカタログとインベントリ データをエクスポートする方法について説明します。

Sitecore XCは、Commerce環境からカタログ データと在庫セットをエクスポートするために使用するアプリケーション プログラミング インターフェイス (API) を提供します。たとえば、開発環境からCommerceカタログをエクスポートし、テスト環境やステージング環境などの別の環境にインポート できます。

エクスポートされたデータのデータ構造の詳細については、生成されたデータ構造の セクションを参照してください。

カタログとインベントリのデータをエクスポートするには:

インターネット インフォメーション サービス (IIS) 関連の設定を変更する

カタログ データのエクスポートを開始する前に、インターネット インフォメーション サービス (IIS) の設定 (IISマネージャーとweb.configファイル) を変更して、データのエクスポート プロセス中にタイムアウトが発生するリスクを減らす必要があります。これは、非常に大きなカタログ・データ・セットをエクスポートする場合に重要です。

web.configファイル内のIIS構成と関連設定を変更するには、次の操作を行います。

  1. インターネット インフォメーション サービス (IIS) マネージャーを起動し、ナビゲーション ツリーでApplication Poolsをクリックします。

  2. Application Poolsページで、関連するアプリケーションプールの名前(CommerceAuthoring_Scなど)をクリックします。

  3. ActionsペインのEdit Application PoolセクションでAdvanced Settingsをクリックし、Advance Settingsダイアログ ボックスで次のパラメータ値を0(ゼロ) に設定します。

    パラメーター

    価値

    CPU

      Limit Interval (minutes) 

    0

    Process Model

     Idle Time-out (minutes)

    0

    Recycling

    Regular Time Interval (minutes)

    0

  4. OK」をクリックします。

  5. カタログデータのエクスポートに使用するサービスのweb.configファイル(C:\inetpub\wwwroot\CommerceAuthoring_Sc\web.configなど)を開き、次の設定サンプルで太字でマークされている設定を変更します。

    メモ

    次の例に示すようにIIS設定を変更する前に、カタログのエクスポートが完了した後にIISの設定を何に戻すかがわかるように、元の値をメモしておいてください。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <security>
          <requestFiltering>
            <!-- For Microsoft IIS (Internet Information Services), maxAllowedContentLength specifies the maximum length of content in a request, in bytes. -->
            <requestLimits maxAllowedContentLength="2147483648" />
          </requestFiltering>
        </security>
        <handlers>
          <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <modules runAllManagedModulesForAllRequests="false">
          <remove name="WebDAVModule" />
        </modules>
        <aspNetCore processPath=".\Sitecore.Commerce.Engine.exe" arguments="" forwardWindowsAuthToken="false" stdoutLogEnabled="false" requestTimeout="00:00:00"  stdoutLogFile=".\logs\stdout" />
      </system.webServer>
    </configuration>
    手記

    オプションで、カタログのエクスポートプロセスの実行中に情報を収集するためのロギングを有効にできます。 これを行うには、カタログデータのエクスポートに使用するサービスのconfig.jsonファイル(C:\inetpub\wwwroot\CommerceAuthoring_Sc\wwwroot\config.jsonなど)を開き、ログレベル値を"Information"に設定します。

    "Serilog": {
      "Using": [
        "Serilog.Sinks.Literate",
        "Serilog.Sinks.File",
        "Serilog.Sinks.ApplicationInsights"
      ],
      "MinimumLevel": {
        "Default": "Information",
        "Override": {
          "Microsoft": "Information",
          "System": "Information"
       }
    },
  6. インターネット インフォメーション サービスをリセットします。

SQLタイムアウト構成の変更

SQLタイムアウト構成を変更して、SQLデータベースへの接続が開いたままであることを確認し、長いプロセスが完了しないようにします。

SQLタイムアウト設定を変更するには、次のようにします。

  1. カタログデータのインポートに使用するオーサリングサービスのインスタンスで、Plugin.SQL.PolicySet-1.0.0.jsonファイル ( C:\inetpub\wwwroot\CommerceAuthoring_Sc\wwwroot\data\Environments\Plugin.SQL.PolicySet-1.0.0.json

  2. "ConnectTimeout" プロパティと "CommandTimeout" プロパティの値を "0"に設定します。

    手記

    現在のプロパティ値をメモして、カタログのインポートが完了した後に元の値に戻すことができるようにします。

Commerce Engineのブートストラップ

Commerce Engine設定に変更を加えたら、 Commerce Engineをブートストラップします。

Commerceカタログ データ セットのエクスポート

この例は、Sitecore Commerce Engine SDKで提供されるPostmanサンプルに基づいています。

次の手順は、Postmanアプリケーションをインストールして設定し、Sitecore Commerce Engine SDKからサンプル コレクションをインポートし、環境を設定し、Commerce Engine APIにアクセスするためのベアラー トークンを取得していることを前提としています。

手記

この例では、Postmanを使用してカタログのエクスポートAPIリクエストを実行する代わりに、BashスクリプトでcURLコマンドを使用する方法を示します。

Postmanを使用してCommerce XCカタログ データ セットをエクスポートするには:

  1. Postman Collectionsウィンドウで、CatalogAPISamplesコレクションを展開します。

  2. Catalog - APIフォルダーを開き、Export Catalogsリクエスト ( ) を選択します{{ServiceHost}}/{{ShopsApi}}/ExportCatalogs()

  3. Environmentフィールドで、エクスポートする必要があるカタログ データを含むCommerce環境を指定します。 たとえば、HabitatAuthoring 環境です。

  4. Headersタブで、デプロイに必要な次のキー値を指定します。

    ヘッダーキー

    価値

    ShopName

    {{ShopName}}

    ShopperId

    {{ShopperId}}

    Language

    {{Language}}

    Currency

    {{Currency}}

    Environment

    {{Environment}}

    GeoLocation

    {{GeoLocation}}

    CustomerId

    {{CustomerId}}

    Authorization

    {{SitecoreIdToken}}

  5. Bodyタブで、特定の要件に基づいてエクスポート設定を変更します。次に、デフォルト設定を示します。

    {
    "fileName":"ExportCatalogs.zip",
    "mode":"full",
    "maximumItemsPerFile":"200",
    "excludeInventory":false
    }

    excludeInventoryパラメーターをtrueに設定すると、ExportCatalog呼び出しにインベントリ情報は含まれません。

  6. カタログのエクスポート操作を開始するには、Sendをクリックします。

  7. Sitecore Commerceデプロイメントからエクスポートする追加のカタログごとに、この手順を繰り返します。

    手記

    エクスポート操作中に情報を収集するようにロギングを設定した場合は、ロギングレベルを元の値に戻します (たとえば、"Information"から"Warning"に戻します)。

    注意

    すべてのカタログのエクスポートが完了したら (エクスポートする関連するインベントリ データがない場合)、IISマネージャーとweb.configファイルで以前に変更 した設定を元の値に戻す必要があります。

    それ以外の場合は、インベントリ データのエクスポートに進みます。

BashスクリプトでcURLを使用したカタログ データのエクスポートの例

次の例は、Postmanツールを使用してHTTP要求を送信する代わりに、BashスクリプトでcURLコマンドを使用してカタログ・データ・セットをエクスポートする方法を示しています。

手記

スクリプトを実行する前に、次のことを行う必要があります。

  • <YOUR HOSTNAME> を、デプロイメントでAuthoringサービスを実行しているCommerce Engineインスタンスの名前で更新します (デフォルト値はlocalhost:5000です)。

  • Authorization要求ヘッダーの値 <YOUR TOKEN> を有効なトークン値で更新します。

  • Environmentヘッダーキーを、エクスポートする必要があるカタログデータを含むCommerce環境の名前で更新します。デフォルトでは、スクリプトはHabitatAuthoring 環境を指定します。

  • ファイルのアクセス許可を設定するには、chmod +x <your_base_script>.sh.

  • スクリプトを変更して、マシン名とデプロイ環境に固有のその他の情報を指定します。

#!/bin/bash

# Git Bash:
# $ chmod +x WebRequest_ExportCatalogs.sh
# $ ./WebRequest_ExportCatalogs.sh

curl --request POST \
  --url 'https://<YOUR HOSTNAME>/api/ExportCatalogs%28%29' \
  --output ExportCatalogs.zip \
  --insecure \
  --header 'Authorization: Bearer <YOUR TOKEN>' \
  --header 'cache-control: no-cache' \
  --header 'Content-Type: application/json' \
  --header 'Currency: USD' \
  --header 'CustomerId: CustomerId' \
  --header 'Environment: HabitatAuthoring' \
  --header 'GeoLocation: IpAddress=1.0.0.0' \
  --header 'Language: en-US' \
  --header 'ShopName: CommerceEngineDefaultStorefront' \
  --header 'ShopperId: ShopperId' \
  --data '{
    "fileName":"ExportCatalogs.zip",
    "mode":"full",
    "maximumItemsPerFile":"200"
}'

Commerceインベントリ セットのエクスポート

カタログをエクスポートした後、エクスポートするインベントリーデータがない場合は、関連するインベントリーセットをエクスポートできます。

この手順では、Sitecore Commerce Engine SDKで提供されているPostmanサンプル を使用します。

手記

この例では、Postmanを使用してインベントリのエクスポートAPIリクエストを実行する代わりに、BashスクリプトでcURLコマンドを使用する方法を示します。

インベントリ セット データをエクスポートするには:

  1. Sitecore Identityトークンの有効期限が切れている場合は、別のGetTokenリクエストを実行して新しいトークンを取得します。

  2. Collectionsウィンドウで、InventoryAPISamplesコレクションを展開します。

  3. Inventory - APIフォルダーを開き、Export Inventory Sets要求を選択します。

  4. Environmentフィールドで、エクスポートするデータを含む環境 (HabitatAuthoring 環境など) を指定します。

  5. Headersタブで、デプロイに必要な次のキー値を指定します。

    ヘッダーキー

    価値

    ShopName

    {{ShopName}}

    ShopperId

    {{ShopperId}}

    Language

    {{Language}}

    Currency

    {{Currency}}

    Environment

    {{Environment}}

    GeoLocation

    {{ジオロケーション}}

    CustomerId

    {{CustomerId}}

    Authorization

    {{SitecoreIdToken}}

  6. インベントリセットのエクスポートを開始するには、Sendをクリックします。

  7. Sitecore Commerceデプロイメントにエクスポートする追加の商品在庫セットごとに、この手順を繰り返します。

    注意

    すべてのカタログのエクスポートが完了したら、IISマネージャーとweb.configファイルで 以前に変更した設定を元の値に戻す必要があります。

    手記

    エクスポート操作中に情報を収集するようにロギングを設定した場合は、ロギングレベルを元の値に戻します (たとえば、"Information"から"Warning"に戻します)。

BashスクリプトでcURLを使用したインベントリ データのエクスポートの例

次に、Postmanツールを使用してHTTPリクエストを送信する代わりに、BashスクリプトでcURLコマンドを使用してインベントリセットをエクスポートする方法の例を示します。

手記

スクリプトを実行する前に、次のことを行う必要があります。

  • <YOUR HOSTNAME> を、デプロイメントでAuthoringサービスを実行しているCommerce Engineインスタンスの名前で更新します (デフォルト値はlocalhost:5000です)。

  • Authorization要求ヘッダーの値 <YOUR TOKEN> を有効なトークン値で更新します。

  • Environmentヘッダー キーを、エクスポートする必要があるデータを含むCommerce環境の名前で更新します。デフォルトでは、スクリプトはHabitatAuthoring 環境を指定します。

  • ファイルのアクセス許可を設定するには、コマンドchmod +x <your_base_script>.sh.

  • スクリプトを変更して、マシン名と環境、またはデプロイに固有のその他の情報を指定します。

#!/bin/bash

# Git Bash:
# $ chmod +x WebRequest_ExportInventorySets.sh
# $ ./WebRequest_ExportInventorySets.sh

curl --request PUT \
  curl --request POST \
  --url 'https://<YOUR HOSTNAME>/api/ExportCatalogs%28%29' \
  --output ExportCatalogs.zip \
  --insecure \
  --header 'Authorization: Bearer <YOUR TOKEN>' \
  --header 'cache-control: no-cache' \
  --header 'Content-Type: application/json' \
  --header 'Currency: USD' \
  --header 'CustomerId: CustomerId' \
  --header 'Environment: HabitatAuthoring' \
  --header 'GeoLocation: IpAddress=1.0.0.0' \
  --header 'Language: en-US' \
  --header 'ShopName: CommerceEngineDefaultStorefront' \
  --header 'ShopperId: ShopperId' \
  --data '{
    "fileName":"ExportInventorySets.zip",
    "mode":"full",
    "maximumItemsPerFile":"200"
}'

生成されたデータ構造

カタログまたはインベントリーデータをエクスポートすると、特定の形式のデータを含むZIPファイルが生成されます。システムは、データをシステムにインポートし直すときに、これと同じデータ構造を想定しています。

ZIPファイルには、エクスポートされたCommerceエンティティを定義する多数のJSONファイルが含まれており、JSONオブジェクトとして表されます。各ファイル名はエンティティタイプを識別します。たとえば、Category.1.jsonという名前のファイルには、カテゴリエンティティのリストの最初のページがJSONシリアル化された形式で含まれています。

手記

カタログのエクスポート機能は、完全なカタログ データのエクスポートのみをサポートします。カタログ・データは、後でシステムにインポートできる.zip・ファイルにエクスポートされます。ファイル内のすべてのアイテムが並行してインポートされるため、パフォーマンスを向上させるために、各ファイルでバッチ処理されるCommerceエンティティの数が少なくなります。

ZIPファイルには、ルートレベルのJSONファイル内のエンティティ間の関係を定義する一連のJSONファイルを含むRelationshipsフォルダーも含まれています。ファイル名はリレーションシップ タイプとソース エンティティを示し、ファイル自体にはJSONオブジェクトの一覧が含まれています。各JSONオブジェクトは、ソース エンティティ、ターゲット エンティティ、およびそれらの間のリレーションシップの種類を定義します。

たとえば、CatalogToCategory.Habitat_Master.1.jsonという名前のファイルには、Habitat_Masterカタログとカタログ内のカテゴリとの関係に関する情報が含まれています。

[{
    $type : Sitecore.Commerce.Plugin.Catalog.RelationshipArgument, Sitecore.Commerce.Plugin.Catalog
    "SourceName": "Entity-Catalog-Habitat_Master",
    "TargetName": "Entity-Category-Habitat_Master-Assortments",
    "RelationshipType": "CatalogToCategory"
},
{
    $type : Sitecore.Commerce.Plugin.Catalog.RelationshipArgument, Sitecore.Commerce.Plugin.Catalog
    "SourceName": "Entity-Catalog-Habitat_Master",
    "TargetName": "Entity-Category-Habitat_Master-Departments",
    "RelationshipType": "CatalogToCategory"
},
{
    $type : Sitecore.Commerce.Plugin.Catalog.RelationshipArgument, Sitecore.Commerce.Plugin.Catalog
    "SourceName": "Entity-Catalog-Habitat_Master",
    "TargetName": "Entity-Category-Habitat_Master-FeaturedProducts",
    "RelationshipType": "CatalogToCategory"
}]
この記事を改善するための提案がある場合は、 お知らせください!