using Elsa.MassTransit.Messages; using Elsa.Workflows.Runtime.Services; using MassTransit; namespace Elsa.MassTransit.Consumers; /// /// A consumer of various dispatch message types to asynchronously execute workflows. /// public class DispatchWorkflowRequestConsumer : IConsumer, IConsumer, IConsumer, IConsumer { private readonly IWorkflowRuntime _workflowRuntime; /// /// Constructor. /// public DispatchWorkflowRequestConsumer(IWorkflowRuntime workflowRuntime) { _workflowRuntime = workflowRuntime; } /// public async Task Consume(ConsumeContext context) { var message = context.Message; var options = new StartWorkflowRuntimeOptions(message.CorrelationId, message.Input, message.VersionOptions); await _workflowRuntime.StartWorkflowAsync(message.DefinitionId, options, context.CancellationToken); } /// public async Task Consume(ConsumeContext context) { var message = context.Message; var options = new ResumeWorkflowRuntimeOptions(message.CorrelationId, message.BookmarkId, message.ActivityId, message.Input); await _workflowRuntime.ResumeWorkflowAsync(message.InstanceId, options, context.CancellationToken); } /// public async Task Consume(ConsumeContext context) { var message = context.Message; var options = new TriggerWorkflowsRuntimeOptions(message.CorrelationId, message.Input); await _workflowRuntime.TriggerWorkflowsAsync(message.ActivityTypeName, message.BookmarkPayload, options, context.CancellationToken); } /// public async Task Consume(ConsumeContext context) { var message = context.Message; var options = new ResumeWorkflowRuntimeOptions(CorrelationId: message.CorrelationId, Input: message.Input); await _workflowRuntime.ResumeWorkflowsAsync(message.ActivityTypeName, message.BookmarkPayload, options, context.CancellationToken); } }