---
title: "InventoryProductエンティティを拡張する"
slug: "extend-the-inventoryproduct-entity"
abstract: ""
---
# InventoryProductエンティティを拡張する

InventoryProductエンティティは外部商取引システム(ECS)で製品/在庫情報を一意に識別するために使われます。デフォルトのInventoryProductエンティティだけでは在庫情報を識別できない場合は、このエンティティおよび在庫システム内のいくつかのプロバイダークラスを拡張する必要があります。

InventoryProductの事業体を拡張するために:

1.  事業体から派生した、ECS内の株式情報を特定するために必要な情報を含む、InventoryProductの法人から派生したEcsInventoryProductクラスを作成してください。
    
2.  CommerceContextBaseクラスから派生したEcsCommerceContextクラスを作成し、ECS内の在庫情報を特定するために必要な追加情報を表すプロパティを公開します。クライアントサイトやアプリケーションがクライアントステートに基づいてこれらのプロパティを設定する責任があります。
    
3.  InventoryProductBuilderから派生するEcsInventoryProductBuilderクラスを作成し、基底クラスのすべてのメソッドを上書きしてEcsInventoryProductを適切に扱うようにします。特に、CreateInventoryProduct()内の新しいEcsCommerceContextを使って、EcsInventoryProductの追加プロパティを埋める必要があります。例えば:
    
    var ecsProductInfo = ((EcsCommerceContext)this.CommerceContext).EcsProductInfo;
    
4.  InventoryAutomationProviderから派生するEcsInventoryAutomationProviderクラスを作成し、GetProductNotifications、GetExpiredNotifications、GetProductsBackInStockメソッドをオーバーライドします。これらのメソッドはStockNotificationRequest.ProductプロパティのEcsInventoryProductを返す必要があります。インベントリシステムのオートメーション状態データはJSONシリアライズされた文字列として保存されるため、通常はカスタムのデシリアライゼーションコードが必要です。
    
5.  EcsInventoryProduct法人をsitecore/commerce.Entities/InventoryProductで登録してください。
    
6.  sitecore/commerceContextでEcsCommmerceContext登録してください。
    
7.  sitecore/inventoryProductBuilderでEcsInventoryProductBuilder登録してください。
    
8.  sitecore/inventoryAutomationProviderでEcsInventoryAutomationProvider登録してください。