Commerce Engineミニオン

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

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

Sitecore XC Commerce Engineは、ミニオンを基本的な作業単位として活用して、プロセス内の特定のタスクを実行します。 定義済みのCommerce Engineミニオンは、次の領域で主要なプロセスを実行します。

  • コマース トランザクション プロセス (注文や販売活動など)

  • コマース エンティティのインデックス作成 (注文、顧客、カタログ アイテムのインデックス作成など)

  • 管理業務 (dev-ops業務など)

ミニオンは、リストに対して基本的なアクションを実行します。ミニオンが実行する一般的なタスクには、次のようなものがあります。

  • リストをウォッチする

  • リストに項目を追加する

  • リストからのアイテムの削除

  • あるリストから別のリストにアイテムを移動する

ミニオンは1つのタスクを実行して停止できます。または、ミニオンはリストを反復処理し、パイプラインを呼び出して、そのリスト内のアイテムに対してビジネス機能を実行できます。

ミニオンポリシー

ミニオン ポリシーは、各ミニオンを定義します。ミニオン ポリシーは、Plugin.Minion.PolicySet-1.0.0.jsonファイル、または環境に固有のポリシーを含む .jsonファイルで定義されます。ミニオン ポリシー (MinionPolicy) は、ミニオンの名前、ミニオンが監視する必要があるリスト (ListToWatch)、およびミニオンの完全修飾アセンブリ名(FullyQualifiedName) を指定する構成です。他の構成と同様に、ミニオン ポリシー設定はブートストラップ プロセス中にCommerce Engineに登録されます。

Sitecore XC 9.2以降では、MinionPolicyには、ミニオンが処理するエンティティ タイプを指定するEntitiesパラメーターが含まれています。

ミニオンが実行される前に、ミニオンは、処理するのと同じエンティティ タイプを処理するように構成された他のミニオンが実行されているかどうかを確認します。別のミニオンが実行されている場合、ミニオンは最初のミニオンの実行が終了するまで待ってから、自身のプロセスを開始します。これにより、2つのミニオンが同じエンティティを同時に更新しようとした場合に発生する同時実行エラーが防止されます。

たとえば、FullIndexMinionが実行される前に、インデックス内のデータの破損を避けるために、DeleteIndexDocumentsMinionIncrementalIndexMinion (どちらも同じエンティティ型で動作) が同時に実行されていないことを確認します。

次に、ミニオン ポリシーの例を示します。

   {
     "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core",
     "WakeupInterval": "00:05:00",
     "ListToWatch": "CatalogItemsIndex",
     "FullyQualifiedName": "Sitecore.Commerce.Plugin.Search.IncrementalIndexMinion, Sitecore.Commerce.Plugin.Search",
     "ItemsPerBatch": 10,
     "SleepBetweenBatches": 500,
     "Entities": {
       "$type": "System.Collections.Generic.List`1[[System.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:00:00",
     "ListToWatch": "Carts",
     "FullyQualifiedName": "Sitecore.Commerce.Plugin.Carts.PurgeCartsMinion, Sitecore.Commerce.Plugin.Carts",
     "ItemsPerBatch": 10,
     "SleepBetweenBatches": 500
   },

ミニオンのスケーリング

Commerce Engineは、childrenミニオンに作業を委任して実行する親ミニオンとして機能するboss minionを使用します。各子ミニオンは、動作対象のリストを定義します。これにより、ミニオンは、複数のミニオンが1つのリストから読み取る競合なしにスケーリングできます。

保留中の注文プロセスは、スケーリングするボスミニオンの実装の良い例を提供します。 PendingOrdersMinionBossは、PendingOrdersリストを監視するように構成された親ミニオンとして定義されます。ボスミニオンの主なタスクは、保留中の注文をchildrenミニオンに分配して処理することです。 PendingOrdersMinionBossには2つのchildrenミニオンが定義されています。各子は、独立して処理する保留中の注文の独自のリスト(それぞれPendingOrder.1PendingOrder.2)を監視します。

次に示すのは、2つの子ミニオン定義を含む親ボス ミニオンを示すスケーリング ミニオン構成の例です。

{
 "$type": "Sitecore.Commerce.Core.MinionBossPolicy, Sitecore.Commerce.Core",
 "Children": {
   "$type": "System.Collections.Generic.List`1[[Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core]], mscorlib",
   "$values": [
     {
       "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core",
       "WakeupInterval": "00:05:00",
       "ListToWatch": "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:05:00",
       "ListToWatch": "PendingOrders.2",
       "FullyQualifiedName": "Sitecore.Commerce.Plugin.Orders.PendingOrdersMinion, Sitecore.Commerce.Plugin.Orders",
       "ItemsPerBatch": 10,
       "SleepBetweenBatches": 500
      }
     ]
    },
    "WakeupInterval": "00:05:00",
    "ListToWatch": "PendingOrders",
    "FullyQualifiedName": "Sitecore.Commerce.Plugin.Orders.PendingOrdersMinionBoss, Sitecore.Commerce.Plugin.Orders",
    "ItemsPerBatch": 10,
    "SleepBetweenBatches": 500
この記事を改善するための提案がある場合は、 お知らせください!