using Elsa.Extensions; using Elsa.Workflows.Runtime.Contracts; using Elsa.Workflows.Runtime.Models.Requests; using Quartz; namespace Elsa.Quartz.Jobs; /// /// A job that resumes a workflow. /// public class ResumeWorkflowJob : IJob { private readonly IWorkflowDispatcher _workflowDispatcher; /// /// The job key. /// public static readonly JobKey JobKey = new(nameof(ResumeWorkflowJob)); /// /// Initializes a new instance of the class. /// public ResumeWorkflowJob(IWorkflowDispatcher workflowDispatcher) { _workflowDispatcher = workflowDispatcher; } /// public async Task Execute(IJobExecutionContext context) { var map = context.MergedJobDataMap; var request = new DispatchWorkflowInstanceRequest { InstanceId = (string)map.Get(nameof(DispatchWorkflowInstanceRequest.InstanceId)), BookmarkId = (string)map.Get(nameof(DispatchWorkflowInstanceRequest.BookmarkId)), ActivityId = (string?)map.Get(nameof(DispatchWorkflowInstanceRequest.ActivityId)), ActivityNodeId = (string?)map.Get(nameof(DispatchWorkflowInstanceRequest.ActivityNodeId)), ActivityInstanceId = (string?)map.Get(nameof(DispatchWorkflowInstanceRequest.ActivityInstanceId)), CorrelationId = (string?)map.Get(nameof(DispatchWorkflowInstanceRequest.CorrelationId)), Input = map.GetDictionary(nameof(DispatchWorkflowInstanceRequest.Input)) }; await _workflowDispatcher.DispatchAsync(request, context.CancellationToken); } }