Commerce Engineミニオン

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

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

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

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

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

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

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

  • 1つまたは複数のリストをウォッチする

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

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

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

ミニオンは1つのタスクを実行して停止できます。または、一部のミニオンは、スケジューラによってリストを反復処理し、パイプラインを呼び出してそのリストでビジネス機能を実行するようにトリガーされます(たとえば、注文処理ミニオンなど)。

ミニオンポリシー

ミニオン ポリシーは、Plugin.Minion.PolicySet-1.0.0.jsonファイル、または環境に固有のCommerce Engineポリシーを含む .jsonファイルで定義されます。他の構成と同様に、ミニオン ポリシー設定はブートストラップ プロセス中にCommerce Engineに登録されます。

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

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

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

次に、インデックス作成ミニオン ポリシーの例を示します。

   {
     "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core",
     "WakeupInterval": "00:05:00",
     "ListsToWatch": [
       "CatalogItemsIndex"
     ],
     "FullyQualifiedName": "Sitecore.Commerce.Plugin.Search.IncrementalIndexMinion, Sitecore.Commerce.Plugin.Search",
     "ItemsPerBatch": 1000,
     "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",
     "ListsToWatch":[
       "Carts"
      ],
     "FullyQualifiedName": "Sitecore.Commerce.Plugin.Carts.PurgeCartsMinion, Sitecore.Commerce.Plugin.Carts",
     "ItemsPerBatch": 1000,
     "SleepBetweenBatches": 500
   },

次の表では、ミニオン構成のプロパティについて説明します。

財産

形容

type

ミニオンの基になるクラス タイプを宣言します。

WakeupInterval

ミニオンの実行間隔を設定します。

ListsToWatch

ミニオンが監視しているリストの名前を指定します。ミニオンは、"promotions""promotionsBooks"など、類似したタイプのエンティティについて、複数のリストを監視できます。

メモ

複数のリストを監視する場合、ミニオンは最初のリストからデータを読み取り、次に2番目のリストを読み取ります。

このプロパティはSitecore XCリリース9.3で導入され、非推奨のListToWatchプロパティを置き換えます。

この宿泊施設は必須です。

FullyQualifiedName

ミニオン クラスの完全修飾名を指定します。

ItemsPerBatch

ミニオンがバッチでドキュメントのインデックスを作成するために処理するドキュメントの数を指定します。

SleepBetweenBatches

各ドキュメント バッチ間で待機する時間を示します。

Entities

ミニオンが処理するエンティティ タイプを指定します。

ミニオンのスケーリング

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",
       "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:05:00",
       "ListsToWatch": [ 
          "PendingOrders.2"
        ]
        "FullyQualifiedName": "Sitecore.Commerce.Plugin.Orders.PendingOrdersMinion, Sitecore.Commerce.Plugin.Orders",
       "ItemsPerBatch": 10, 
       "SleepBetweenBatches": 500
      }
     ]
    },
    "WakeupInterval": "00:05:00",
    "ListsToWatch": [  
       "PendingOrders"
     ],
    "FullyQualifiedName": "Sitecore.Commerce.Plugin.Orders.PendingOrdersMinionBoss, Sitecore.Commerce.Plugin.Orders",
    "ItemsPerBatch": 10,
    "SleepBetweenBatches": 500
    }
  ]
},
この記事を改善するための提案がある場合は、 お知らせください!