事前定義された Commerce Engine ミニオン

概要

インデックス作成や注文フロー処理などのさまざまなタイプの処理で重要な役割を果たすデフォルト ミニオンを列挙し、それぞれについて説明します。

Commerce Engine プラグインは、インデックス作成や注文フロー処理などのさまざまなタイプの処理で重要な役割を果たすデフォルト ミニオンを提供します。このトピックでは、デフォルトで定義されているミニオンについて説明します。

Catalog プラグインでは、カタログ、カテゴリ、販売可能アイテムなどのカタログ エンティティの完全または増分インデックスを作成するミニオンが定義されています。Sitecore で使用される検索プロバイダー (Solr など) は、Sitecore Web index または Master index の再構築時に Commerce Engine によってインデックス付けされたカタログ エンティティを使用して、最新の検索結果を Sitecore コンテンツ エディターやストアフロント ユーザーに提供できます。

ItemFullIndexMinion

ItemFullIndexMinion ミニオンは、Commerce Engine 内のすべてのカタログ エンティティのインデックスを再作成して Sitecore Master index および Web index に格納します。このミニオンは、ユーザーが Sitecore コントロール パネルまたは Postman サンプル要求を使用して Sitecore Master index または Web index の完全な再構築を要求したときに手動で呼び出されます。

ItemIncrementalIndexMinion

ItemIncrementalIndexMinion ミニオンは (デフォルトのインデックス更新戦略で定義されているように) 10 分ごとに実行され、Sitecore アイテムの検索時に新規、更新、または削除されたカタログ エンティティが返されるように Sitecore Master index および Web index を最新の状態に保ちます。Postman で Run IncrementalIndex Minion - Storefront (Master) 要求を呼び出すことにより、増分インデックスの再構築を手動で開始できます。

Search プラグインは、Commerce エンティティ (注文、顧客、カタログ アイテムなど) のインデックス作成タスクを実行するミニオンを提供しています。Business Tools にサービスを提供する検索プロバイダー (Solr など) は、Commerce インデックスを使用して検索結果を Business Tools ユーザーに返すことができます。

FullIndexMinion

FullIndexMinion ミニオンは、リスト内のすべてのアイテムのインデックスを作成します。このミニオンはオンデマンドで実行され、IPrepareFullIndexMinionPipelineIFullIndexMinionPipeline を呼び出してインデックス作成機能を実行します。

FullIndexMinion ミニオンは、CatalogsCategoriesSellableItems の 3 つのリストを監視します。以下は、PlugIn.Minions.PolicySet-1.0.0.json ファイル内の FullIndexMinion の定義の例を示します。

{
        "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core",
        "ListsToWatch": [
          "Catalogs",
          "Categories",
          "SellableItems"
        ],
        "FullyQualifiedName": "Sitecore.Commerce.Plugin.Search.FullIndexMinion, Sitecore.Commerce.Plugin.Search",
        "ItemsPerBatch": 1000,
        "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"
          ]
     }
},

IncrementalIndexMinion

IncrementalIndexMinion ミニオンは、インデックスの更新が必要な新しいアイテムを監視します。3 分ごとに実行され、IPrepareIncrementalIndexMinionPipelineIncrementalIndexMinionPipeline を呼び出します。 

DeleteIndexMinion 

DeleteIndexDocumentsMinion ミニオンはリストを監視します。3 分ごとに実行され、IPrepareDeleteIndexDocumentsMinionPipelineIDeleteIndexDocumentsMinionPipeline の各パイプラインを呼び出します。 

その他のすぐに使用可能なミニオン (DeletedCustomersIndexDeletedCatalogItemsIndex など) は、検索インデックスから各種エンティティ リストを削除します。

注文処理ミニオンは、注文処理フロー全体で重要な役割を果たします。注文が初期の「処理待ち」ステータスから最後の「完了」ステータスに移行するまでの間、注文をリスト間で移動させます。

PurgeCartsMinion ミニオンは、放棄されたカートまたは空のカートが事前定義されたしきい値に基づいて削除対象になった後、それらのカートをデータベースから削除するメンテナンス プロセスとして実行されます。

PurgeCartsMinion ミニオンはカートのリスト ("ListsToWatch": "Carts") を監視し、24 時間ごと ("WakeupInterval": "01.00:00:00") に実行されます。

PurgeCartsPolicy 設定で、ミニオンが空のカートまたは放棄されたカートをカート リストから削除するしきい値 (経過日数) を指定します。次の例は、サンプルの Plugin.AdventureWorks.CommerceMinions.json ファイル (Sitecore.Commerce.Engine.SDK の一部としてパッケージ化されている) で定義されているポリシー設定を示します。

{
 "$type":"Sitecore.Commerce.Plugin.Carts.PurgeCartsPolicy, Sitecore.Commerce.Plugin.Carts",
 "AbandonedCartsThreshold": 14,
 "EmptyCartsThreshold": 2
},

上記のポリシー定義に基づくと、

  • 放棄されたカートは、14 日間使用されなかった後、削除対象になります。

  • 空のカートは、2 日間使用されなかった後、削除対象になります。

PurgeCartsMinion ミニオンは IPurgeCartsMinionPipeline パイプラインを呼び出します。

PurgeCatalogsMinion ミニオンは、削除されたカタログをデータベースからパージするメンテナンス プロセスとして実行されます。Business Tools のユーザー インターフェイスや Postman のサンプル Delete Catalog 要求などを使用してカタログが削除されると、そのカタログは削除済みカタログのリストに配置されます。カタログ パージ ミニオンはそのリスト ("ListsToWatch": "PurgeCatalogs") を監視し、リストされた削除済みカタログのデータベースを設定された間隔でパージします。デフォルトでは、このミニオンは 5 分ごとに実行されます。

注記

Sitecore XC Business Tools では、削除済みカタログは、カタログ パージ ミニオンによってデータベースから完全に削除されるまで、検索結果に表示され続けます。

削除済みカタログがデータベースからパージされると、

  • 削除済みカタログにのみ関連付けられている販売可能アイテムは、データベースから削除されます。

  • 削除済みカタログに関連付けられているカテゴリもデータベースから削除されます。

次の例は、Plugin.Minions.PolicySet-1.*.*.json ファイルで定義されているデフォルトの PurgeCatalogsMinions ポリシーを示します。

{ 
  "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core",
  "WakeupInterval": "00:05:00",
  "ListsToWatch": [
    "PurgeCatalogs"
  ],
  "FullyQualifiedName": "Sitecore.Commerce.Plugin.Catalog.PurgeCatalogsMinion, Sitecore.Commerce.Plugin.Catalog",
  "ItemsPerBatch": 10,
  "SleepBetweenBatches": 500
},

注記

Postman で Run Purge Catalogs Minion 要求を実行して、削除済みカタログをデータベースから強制的にパージできます。

PurgeCatalogsMinion および PurgeCategoriesMinion ミニオンはトランザクション プロセスとして実行されます。これらは System.Transactions.TransactionScope クラスに基づいており、カタログまたはカテゴリをデータベースから削除する際に Sitecore.Commerce.Core.Commands.CommerceCommand.PerformTransaction() メソッドを使用します。

MachineSettingsSection.MaxTimeout プロパティは、トランザクションがタイムアウトするまでの最大許容時間を設定します。タイムアウトのデフォルト値は 10 分です。大量のエンティティをデータベースからパージする場合、パージ操作が完了する前にトランザクションがタイムアウトする可能性があります。タイムアウト エラーを回避するには、MachineSettingsSection.MaxTimeout プロパティの値を変更することを検討してください。パージ操作を実行する前にカタログからカテゴリを削除しておくことも、タイムアウト エラーの回避に役立ちます。

注記

カタログのインポート要求を replace モードで呼び出すと、PurgeCatalogsMinion ミニオンがバックグラウンドでトリガーされます。これは差し替え対象の既存のカタログを削除するために必要となります。大きなカタログをインポートする際に MachineSettingsSection.MaxTimeout プロパティの値を変更すると、タイムアウト エラーの回避に役立ちます。

PurgeCategoriesMinion ミニオンは、削除されたカタログ カテゴリをデータベースからパージするメンテナンス プロセスとして実行されます。Business Tools のユーザー インターフェイスや Postman のサンプル Delete Category 要求などを使用してカテゴリがカタログから削除されると、そのカテゴリは削除済みカテゴリのリストに配置されます。カテゴリ パージ ミニオンはそのリスト ("ListsToWatch": "PurgeCategories") を監視し、リストされた削除済みカテゴリのデータベースを設定された間隔でパージします。デフォルトでは、このミニオンは 5 分ごとに実行されます。

注記

Sitecore XC Business Tools では、削除済みカテゴリは、カテゴリ パージ ミニオンによってデータベースから完全に削除されるまで、検索結果に表示され続けます。

以下に、Plugin.Minions.PolicySet-1.*.*.json ファイルで定義されているデフォルトの PurgeCategoriesMinion ポリシーの例を示します。

 {
   "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core",
   "WakeupInterval": "00:05:00",
   "ListsToWatch": [
     "PurgeCategories"
   ],
   "FullyQualifiedName": "Sitecore.Commerce.Plugin.Catalog.PurgeCategoriesMinion, Sitecore.Commerce.Plugin.Catalog",
   "ItemsPerBatch": 10,
   "SleepBetweenBatches": 500
 },

注記

Postman で Run Purge Categories Minion 要求を実行して、削除済みカテゴリをデータベースから強制的にパージできます。

ArchiveEntitiesMinion は、適格性 (キャンセルされた注文、完了した注文、古くなった注文ジャーナル エントリなど) に基づいて Commerce エンティティをアーカイブするメンテナンス プロセスとして実行されます。

PlugIn.Minions.PolicySet-1.0.0.json ファイルには 2 つの ArchiveEntitiesMinion ミニオンのインスタンスが定義されており、一方が注文エンティティ、もう一方がジャーナル エントリ エンティティのアーカイブを担当します。

サンプルのミニオン ポリシー セット ファイルのパスは wwwroot/data/Environments/PlugIn.Minions.PolicySet-1.0.0.json です。

注記

エンティティのアーカイブはデフォルトでは無効になっており、エンティティ アーカイブ ポリシーを更新することで環境ごと、エンティティ タイプごとに設定できます。

重要

デフォルト設定では、エンティティ アーカイブ ミニオンは 24 時間ごとに実行されます。このデフォルトの動作を変更する前に、これらの推奨事項とベスト プラクティスを考慮してください。

ジャーナル エントリのエンティティ アーカイブ ミニオン

注文ジャーナル エントリのアーカイブを担当する ArchiveEntitiesMinion ミニオンのインスタンスは、注文ジャーナル エントリのリスト (ListsToWatch":"JournalEntries") を監視します。このミニオンは 24 時間ごと ("WakeupInterval": "01.00:00:00") に実行され、注文ジャーナル エントリを設定可能な日数が経過した後にアーカイブします。

以下に、"Sitecore.Commerce.Plugin.Journaling.JournalEntry, Sitecore.Commerce.Plugin.Journaling" タイプのエンティティをアーカイブするように設定された ArchiveEntitiesMinion ミニオン インスタンスの例を示します。

{
 "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core",
 "WakeupInterval": "01.00:00:00",
 "ListsToWatch": [
    "JournalEntries"
    ],
 "FullyQualifiedName": "Sitecore.Commerce.Plugin.Archive.ArchiveEntitiesMinion, Sitecore.Commerce.Plugin.Archive",
 "ItemsPerBatch": 10, //NOT USED//
 "SleepBetweenBatches": 500,
 "Entities": {
    "$type": "System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib",
    "$values": [
    "Sitecore.Commerce.Plugin.Journaling.JournalEntry, Sitecore.Commerce.Plugin.Journaling"
    ]
  }
},

注記

古くなったジャーナル エントリをアーカイブするエンティティ アーカイブ ミニオンは、"ItemsPerBatch" プロパティの代わりに、ArchiveOrderPolicy ポリシーで定義された "BatchCount" プロパティを使用します。このポリシーはミニオン環境ファイル (PlugIn.Habitat.CommerceMinions-1.*.*.json) で設定できます。

非アクティブな注文のエンティティ アーカイブ ミニオン

非アクティブな注文のアーカイブを担当する ArchiveEntitiesMinion ミニオンのインスタンスは、注文のリスト ("ListsToWatch":"Orders") を監視します。このミニオンは 24 時間ごと ("WakeupInterval": "01.00:00:00") に実行され、完了した注文またはキャンセルされた注文を設定可能な日数が経過した後にアーカイブします。

以下に、 "Sitecore.Commerce.Plugin.Orders.Order, Sitecore.Commerce.Plugin.Orders" タイプのエンティティをアーカイブするように設定された ArchiveEntitiesMinion ミニオン インスタンスの例を示します。

{
 "$type": "Sitecore.Commerce.Core.MinionPolicy, Sitecore.Commerce.Core",
   "WakeupInterval": "01.00:00:00",
   "ListsToWatch": [
      "Orders"
      ],
   "FullyQualifiedName": "Sitecore.Commerce.Plugin.Archive.ArchiveEntitiesMinion, Sitecore.Commerce.Plugin.Archive",
   "ItemsPerBatch": 10, //NOT USED//
   "SleepBetweenBatches": 500,
   "Entities": {
   "$type": "System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib",
     "$values": [
      "Sitecore.Commerce.Plugin.Orders.Order, Sitecore.Commerce.Plugin.Orders" 
     ]
   }
},

注記

非アクティブな注文をアーカイブするエンティティ アーカイブ ミニオンは、"ItemsPerBatch" プロパティの代わりに、ArchiveOrderPolicy ポリシーで定義された "BatchCount" プロパティを使用します。このポリシーは、PlugIn.Habitat.CommerceMinions-1.*.*.json などのミニオン環境ファイルで設定できます。

エンティティのアーカイブの適格性基準を定義するポリシーも、PlugIn.Habitat.CommerceMinions-1.*.*.json などのミニオン環境ファイルで設定できます。

アーカイブ ミニオンの設定に関する推奨事項

エンティティのアーカイブが有効になっている場合、大量のデータをアーカイブ データベースに移動するプロセスは、SQL サービスのパフォーマンスに影響を与える可能性があります。アーカイブするデータの量を最小限に抑えることをお勧めします。

アーカイブするデータの量が多すぎて SQL サービスに負担がかかる事態を避けるため、アーカイブ ミニオンは毎日実行することをお勧めします。デフォルトのミニオン設定では、この推奨事項を反映してミニオンが 24 時間ごとに実行されるようになっています ("WakeupInterval: "01.00:00:00")。