カタログマッピングコマンドとパイプライン
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
カタログマッピングは、Sitecoreコンテンツエディタ内のSitecoreコンテンツ項目と元の対応するCommerce Engineカタログ項目への関係を表します。
カタログ販売可能なアイテムがコンテンツエディタのコンテンツツリー内の複数の場所に現れることがあります。例えば、販売可能なアイテムが複数のカテゴリに表示されている場合などが挙げられます。Sitecoreプラットフォームは、コンテンツツリー内のすべてのアイテムに固有の識別子(Content EditorのItem IDプロパティで表される)を持つことを期待しているため、同じカタログアイテムの出現ごとに異なるItem ID値が付与されます。同じカタログアイテムの異なるインスタンスを元のカタログエンティティIDにマッピング・解決するために、Commerce Engine Connectはカタログマッピングシステムを使用します。Catalogプラグインは、カタログマッピング情報の取得を可能にするコマンドとパイプラインを定義します。
カタログマッピングコマンドとパイプライン
以下の表はカタログマッピングコマンドとパイプラインについて説明します。
コマンド/パイプライン
概要
GetMappingsFromDbCommand
GetCatalogMappingsPipeline
Sitecore Content Editorで選択したカタログのカタログマッピングテーブルの内容を返します。
GetMappingsForIdFromDbCommand
GetCatalogMappingsForIdPipeline
指定されたSitecoreIDのすべてのカタログマッピングのリスト(一括で)を返します。
パラメータ:
-
SitecoreID
、商業事業体の関係IDと1対1の関係、およびSitecoreのアイテムIDとの1対多関係を表すID(カタログマッピングシステムでは deterministicIDs と呼ばれます)。
Commerce Engine Connectは GetCatalogMappingsForId メソッドを用いてカタログマッピングを20個のバッチで取得します(デフォルトのバッチサイズは20ですが設定 可能です)。また、コンテンツツリー内の単一のカタログ項目のマッピングを更新します(コンテンツエディタのコンテンツツリー内の複数の場所に現れることもあります)。
このメソッドは、 sitecoreId を使って元のCommerce Engineのアイテム(エンティティID)を発見し、Sitecoreアイテム(決定性ID)がマッピングされます。Commerce Engineは元のエンティティIdを使ってSitecore内のアイテムのすべての決定的IDのテーブルを構築し、その内容を呼び出し元に返します。
この方法は、例えばXCビジネスツールで単一のアイテムが更新される場合(例えば新しいカタログエンティティバージョンが追加される場合)に有用です。また、インクリメンタルインデックスプロセスの一部としても使われます。
CommerceエンティティIDをSitecore Item IDにマッピングする
カタログプラグインで定義されたカタログエンティティCommerceEntityIDCatalogItemBaseSitecoreIdSitecoreIdプロパティは、Mappings システム内部で Content Editor のSitecore Item IDSitecoreIdItem Id
以下はSitecoreID値を生成する手法の例を示しています。
SitecoreId = GuidUtility.GetDeterministicGuidString(categoryId)SitecoreId = GuidUtility.GetDeterministicGuidString(sellableItemId),
カスタムメソッドでSitecore IDプロパティを利用する方法
カスタム方法でカタログアイテムエンティティを作成する場合は、必ずCommerceエンティティIdとSitecoreId = GuidUtility.GetDeterministicGuidString(entityId) プロパティの両方を含める必要があります。これは、マッピングシステムがContent Editor内のカタログアイテムを対応するCommerceエンティティに解決するために必要な決定的なID値を生成するために必要です。例えば:
... { sellableItem.Id = entityId; sellableItem.FriendlyId = productId; sellableItem.SitecoreId = GuidUtility.GetDeterministicGuidString(entityId); ... } ...