using Elsa.MassTransit.Messages; using Elsa.Workflows.Runtime.Models; using Elsa.Workflows.Runtime.Services; using MassTransit; namespace Elsa.MassTransit.Implementations; /// /// Implements by leveraging MassTransit. /// public class MassTransitWorkflowDispatcher : IWorkflowDispatcher { private readonly IBus _bus; /// /// Constructor. /// public MassTransitWorkflowDispatcher(IBus bus) { _bus = bus; } /// public async Task DispatchAsync(DispatchWorkflowDefinitionRequest request, CancellationToken cancellationToken = default) { await _bus.Publish(new { request.DefinitionId, request.Input, request.CorrelationId, request.VersionOptions }, cancellationToken); return new(); } /// public async Task DispatchAsync(DispatchWorkflowInstanceRequest request, CancellationToken cancellationToken = default) { await _bus.Publish(new { request.Input, request.ActivityId, request.BookmarkId, request.CorrelationId, request.InstanceId }, cancellationToken); return new(); } /// public async Task DispatchAsync(DispatchTriggerWorkflowsRequest request, CancellationToken cancellationToken = default) { await _bus.Publish(new { request.Input, request.BookmarkPayload, request.CorrelationId, request.ActivityTypeName }, cancellationToken); return new(); } /// public async Task DispatchAsync(DispatchResumeWorkflowsRequest request, CancellationToken cancellationToken = default) { await _bus.Publish(new { request.Input, request.BookmarkPayload, request.CorrelationId, request.ActivityTypeName }, cancellationToken); return new(); } }