コマースエンジンの手下たち
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecore XC Commerce Engineは、ミニオンを基本的な作業単位として活用し、プロセス内の特定のタスクを実行します。 事前定義されたCommerce Engineのミニオンは、以下の重要なプロセスを実行します:
- 商取引プロセス(例)
- 商業エンティティのインデックス化(例、顧客、カタログアイテムのインデックス化)
- 管理操作(例えばdev-ops 操作)
ミニオンはリスト上で基本的な行動を行います。ミニオンが行う一般的なタスクには以下のようなものがあります。
- 一つまたは複数のリストを見る
- リストへのアイテム追加
- リストからアイテムを削除する方法
- リストからリストへのアイテム移動
ミニオンは単一のタスクを実行して停止することができます。あるいは、スケジューラによってリストを反復し、パイプラインを呼び出してそのリストのビジネス機能(例えば注文処理ミニオンなど)を実行するためにトリガーされるミニオンもあります。
また、ミニ オンを手動でトリガー してSitecore.Commerce.Engine.SDKに含まれるPostmanサンプルを使うこともできます。
ミニオン政策
ミニオンポリシーはPlugin.Minion.PolicySet-1.0.0.jsonファイル、または環境特有のCommerce Engineポリシーを含む.jsonファイルで定義されます。他の構成と同様に、ミニオンポリシー設定はブートストラッププロセス中にCommerce Engineに登録されます。
MinionPolicyにはミニオンが処理するエンティティタイプを指定するEntitiesパラメータが含まれています。
ミニオンが実行する前に、同じCommerce Engineインスタンス上で動作している他のミニオンが、処理中に同じエンティティタイプを処理するように設定されているかを確認します。もし別のミニオンが同じエンティティタイプを処理している場合、ミニオンは最初のミニオンの実行が終わるまで自分のプロセスを開始しません。これにより、2つのミニオンプロセスが同じエンティティを同時に同じCommerce Engineのインスタンスで更新しようとした際に発生する並行エラーを防ぐのに役立ちます。
例えば、FullIndexMinionを実行する前に、DeleteIndexDocumentsMinionとIncrementalIndexMinion (どちらも同じエンティティタイプで動作します)が同時に動作していないかをチェックし、インデックス内のデータ破損を防ぎます。
以下はインデックスミニオンポリシーの例を示しています:
{ "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core", "WakeupInterval": "`00
`", "ListsToWatch": "CatalogItemsIndex" , "FullyQualifiedName": "Sitecore.Commerce.Plugin.Search.IncrementalIndexMinion, Sitecore.Commerce.Plugin.Search", "ItemsPerBatch": 1000, "SleepBetweenBatches": 500, "Entities": { "$type": "System.Collections.Generic.List`1System.String, mscorlib, mscorlib", "$values": "Sitecore.Commerce.Plugin.Catalog.Catalogs, Sitecore.Commerce.Plugin.Catalog", "Sitecore.Commerce.Plugin.Catalog.Category, Sitecore.Commerce.Plugin.Catalog", "Sitecore.Commerce.Plugin.Catalog.SellableItem, Sitecore.Commerce.Plugin.Catalog"} },
Entitiesプロパティは任意です。Entitiesプロパティが空のままの場合、ミニオンは同じタイプのミニオンを別のものにチェックするだけで実行します。
例えば、以下のミニオンポリシー設定では、PurgeCartsMinionはすでにそのPurgeCartsMinionのインスタンスが他に実行されていない場合にのみ実行されます。
{ "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core", "WakeupInterval": "`24
`", "ListsToWatch": "Carts" , "FullyQualifiedName": "Sitecore.Commerce.Plugin.Carts.PurgeCartsMinion, Sitecore.Commerce.Plugin.Carts", "ItemsPerBatch": 1000, "SleepBetweenBatches": 500 },以下の表はミニオン構成の性質を示しています:
財産
概要
type
ミニオンの元となるクラスタイプを宣言します。
WakeupInterval
ミニオンが走る間隔を設定します。
ListsToWatch
ミニオンが監視しているリストの名前を指定します。ミニオンは、 "promotions" や "promotionsBooks"のような類似型のエンティティに対して複数のリストを監視できます。
> [!注]
> 複数のリストを監視する際、ミニオンは最初のリストからデータを読み取り、次に2つ目のリストを読み、というように繰り返します。
> このプロパティはリリース9.3 Sitecore XC導入され、廃止された ListToWatch プロパティを置き換えます。
この物件は必須です。
FullyQualifiedName
ミニオンクラスの完全な限定名を指定します。
ItemsPerBatch
バッチで文書をインデックスするためにミニオンが処理する文書の数を指定します。
SleepBetweenBatches
各文書バッチ間の待ち時間を示します。
Entities
ミニオンが処理するエンティティの種類を指定します。
スケーリング・ミニオン
コマースエンジンは ボスミニオンを利用しており、これは親ミニオンとして子供ミニ オンに仕事 を委託します。各子供ミニオンは自分が行動するリストを定義します。これにより、複数のミニオンが1つのリストを読み合うことなくスケールを拡張できます。
保留中の命令プロセスは、スケール可能なボスミニオン実装の良い例を提供します。 PendingOrdersMinionBossは、PendingOrdersリストを監視するように設定された親ミニオンとして定義されます。ボスミニオンの主な役割は、保留中の命令を子ミニオンに分配し、処理させることです。 PendingOrdersMinionBossには2つの子 ミニオンが定義されています。各子は自分の保留中の命令リスト(それぞれPendingOrder.1とPendingOrder.2)を独立して処理します。
以下は、2つの子ミニオン定義を含む親ボスミニオンを示すスケーリングミニオン構成の例です。
{ "$type": "Sitecore.Commerce.Core.MinionBossPolicy, Sitecore.Commerce.Core", "Children": { "$type": "System.Collections.Generic.List`1Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core, mscorlib", "$values": { "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core", "WakeupInterval": "`00
`", "ListsToWatch": "PendingOrders.1""FullyQualifiedName": "Sitecore.Commerce.Plugin.Orders.PendingOrdersMinion, Sitecore.Commerce.Plugin.Orders", "ItemsPerBatch": 10, "SleepBetweenBatches": 500 }, { "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core", "WakeupInterval": "`00
`", "ListsToWatch": "PendingOrders.2""FullyQualifiedName": "Sitecore.Commerce.Plugin.Orders.PendingOrdersMinion, Sitecore.Commerce.Plugin.Orders", "ItemsPerBatch": 10, "SleepBetweenBatches": 500 }
}, "WakeupInterval": "`00
`", "ListsToWatch": "PendingOrders" , "FullyQualifiedName": "Sitecore.Commerce.Plugin.Orders.PendingOrdersMinionBoss, Sitecore.Commerce.Plugin.Orders", "ItemsPerBatch": 10, "SleepBetweenBatches": 500 }},