タスクマネージャー

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

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

タスクマネージャーは、エージェントが取得するタスクをCortex Processing Engine(Processing Engine)に登録する役割を担います。デフォルトでは、ITaskManagerには2つの実装があります。

  • Sitecore.Processing.Tasks.Messaging.TaskManagerは、Content Managementロールなどのクライアントによって、Message Busを介して処理タスクを登録するために使用されます。この実装は、タスク マネージャー プロキシと呼ばれることもあります。

  • Sitecore.Processing.Engine.TaskManagerは、Processing Engine内で、受信処理タスクをProcessing Engineタスク データベースに登録するために使用されます。

メモ

タスクをスケジュールするには、常にタスク マネージャー プロキシを使用する必要があります。メッセージングAPIを直接使用しないでください。

次の例は、Content Managementロールから1つの分散タスクを登録するためのデータ フローを示しています。

  • サービスロケーターを使用して、ITaskManagerのインスタンスを取得します。

    var taskManager = ServiceLocator.ServiceProvider.GetService<ITaskManager>();

TaskManagerをコアロールのコンテキストで使用する

Content Managementなどの主要な役割のコンテキストでは、サービス ロケーターを使用してタスク マネージャーを取得します。

var taskManager = ServiceLocator.ServiceProvider.GetService<ITaskManager>();

処理エンジンのコンテキストでのTaskManagerの使用

処理エンジンのコンテキストでは、コンストラクター インジェクションを使用してタスク マネージャーのインスタンスを取得します。次の例は、ITaskManagerのインスタンスがカスタムメッセージハンドラに挿入されていることを示しています。

using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Sitecore.Framework.Conditions;
using Sitecore.Framework.Messaging;
using Sitecore.Processing.Engine.Abstractions;
using Sitecore.Processing.Engine.Abstractions.Messages;

namespace Sitecore.Documentation.Sample
{
    public abstract class CustomTaskHandler<TRegisterTask> : IMessageHandler<TRegisterTask>
        where TRegisterTask : RegisterTask
    {
        protected CustomTaskHandler(ITaskManager taskManager)
        {
            Condition.Requires(taskManager, nameof(taskManager)).IsNotNull();

            TaskManager = taskManager;
        }
}
この記事を改善するための提案がある場合は、 お知らせください!