using Elsa.Scheduling.Contracts;
using Elsa.Scheduling.Models;
using Elsa.Workflows.Runtime.Contracts;
using Elsa.Workflows.Runtime.Requests;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Scheduling.Tasks;
///
/// A task that resumes a workflow.
///
public class ResumeWorkflowTask : ITask
{
private readonly DispatchWorkflowInstanceRequest _dispatchWorkflowInstanceRequest;
///
/// Initializes a new instance of the class.
///
/// The dispatch workflow instance request.
public ResumeWorkflowTask(DispatchWorkflowInstanceRequest dispatchWorkflowInstanceRequest)
{
_dispatchWorkflowInstanceRequest = dispatchWorkflowInstanceRequest;
}
///
public async ValueTask ExecuteAsync(TaskExecutionContext context)
{
var workflowDispatcher = context.ServiceProvider.GetRequiredService();
await workflowDispatcher.DispatchAsync(_dispatchWorkflowInstanceRequest, cancellationToken: context.CancellationToken);
}
}