カートラインの延長
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecore XC構成的 拡張 パターンを用いて既存のソリューションを簡単に拡張することをサポートします。合成拡張性はアップグレードを妨げず、同じCommerceエンティティを拡張しようとする複数のプラグイン間の懸念を分離する方法でソリューションを拡張することを可能にします。
シナリオ、順番に取り入れます。
商品を注文の一部にする最も簡単な方法は、AddCartLineパイプライン中にSellableItemからカートラインにコンポーネントをコピーすることです。
カートラインを延長するには:
-
先ほど参照した同じNodeConfigurationファイルを開き、AddCartLineパイプラインを見つけてください:
Sitecore.Commerce.Plugin.Carts IAddCartLinePipeline (Sitecore.Commerce.Plugin.Carts.CartLineArgument => Sitecore.Commerce.Plugin.Carts.Cart)Plugin.Catalog.ValidateSellableItemBlock (Sitecore.Commerce.Plugin.Carts.CartLineArgument => Sitecore.Commerce.Plugin.Carts.CartLineArgument)Plugin.Carts.AddCartLineBlock (Sitecore.Commerce.Plugin.Carts.CartLineArgument => Sitecore.Commerce.Plugin.Carts.Cart)Plugin.Carts.ICalculateCartLinesPipeline (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart)Plugin.Carts.ICalculateCartPipeline (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart)Plugin.GiftCards.AddCartLineGiftCardBlock (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart)Plugin.Carts.PersistCartBlock (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart)Plugin.Carts.WriteCartTotalsToContextBlock (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart) -
Cartをパラメータとして取り、Cartを返し、AddCartLineBlockの後に実行する別のコンポーネントを作成します。
-
Cartsプラグインからエンティティにアクセスするには、参照を追加してください。例えば:
///
/// The execute. /// /// /// The SampleArgument argument. /// /// /// The context. /// ////// The public override Task. /// Run(Cart cart, CommercePipelineExecutionContext context) { Condition.Requires(cart).IsNotNull("The argument can not be null"); //var result = this._pipeline.Run(arg, context).Result; return Task.FromResult(cart); } -
以下の構成を加えます:
.ConfigurePipeline
( configure => { configure.Add ().After (); }) -
前回のシナリオと同様に、ブロックをロジックなしで実行し、必要なオブジェクトがオブジェクトコレクションにあるかどうかを確認するためにブレークポイントを追加します。このパーツをテストするには、カートにSellableItemを追加します。PostmanではCartsAPISamples/Add Cart Line Without Variantに移動して実行します。これによりアイテムがカートに追加されます。
-
オブジェクトコレクションを見るとSellableItemが見え、CartLineArgumentを取得してLineプロパティを使うことで追加された行にたどり着くことができます。 SellableItemからカートラインにコンポーネントをコピーします。例えば:
public override Task
Run(Cart cart, CommercePipelineExecutionContext context) { Condition.Requires(cart).IsNotNull("The argument can not be null"); var sellableItem = context.CommerceContext.GetObjects ().First(); var arg = context.CommerceContext.GetObjects ().First(); var cartLine = arg.Line; cartLine.SetComponent(sellableItem.GetComponent ()); return Task.FromResult(cart); 今後は、商品がカートに追加されるたびに、その商品のロイヤルティポイントがカートに加算されます。これはCommerce Connectコンポーネントを使ってストアフロントにマッピング・表示できます。
解を実行して商品をカートに追加してPostmanで検証できます。商品はカートラインのコンポーネントになったため、注文が行われるとカート内の他のコンポーネントとともに自動的に注文ラインにコピーされます。
-
この例では、Postmanで注文を終えます。
-
物理的なフルフィルメントオプション、フェデレーテッドペイメントオプションを追加し、注文を完成させ、完了した注文結果からOrderIDをコピーします。
-
PostmanでGetOrderに移動し、OrderIDを貼り付けて注文を取り出します。完成した注文でLoyaltyComponentを確認できます。