using Elsa.MassTransit.Messages; using Elsa.Workflows.Runtime.Contracts; using Elsa.Workflows.Runtime.Requests; 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.Send(new DispatchWorkflowDefinition( request.DefinitionId, request.VersionOptions, request.Input, request.CorrelationId, request.InstanceId, request.TriggerActivityId ), cancellationToken); return new(); } /// public async Task DispatchAsync(DispatchWorkflowInstanceRequest request, CancellationToken cancellationToken = default) { await _bus.Send(new DispatchWorkflowInstance( request.InstanceId, request.BookmarkId, request.ActivityId, request.ActivityNodeId, request.ActivityInstanceId, request.ActivityHash, request.Input, request.CorrelationId ), cancellationToken); return new(); } /// public async Task DispatchAsync(DispatchTriggerWorkflowsRequest request, CancellationToken cancellationToken = default) { await _bus.Send(new DispatchTriggerWorkflows( request.ActivityTypeName, request.BookmarkPayload, request.CorrelationId, request.WorkflowInstanceId, request.ActivityInstanceId, request.Input ), cancellationToken); return new(); } /// public async Task DispatchAsync(DispatchResumeWorkflowsRequest request, CancellationToken cancellationToken = default) { await _bus.Send(new DispatchResumeWorkflows( request.ActivityTypeName, request.BookmarkPayload, request.CorrelationId, request.WorkflowInstanceId, request.ActivityInstanceId, request.Input ), cancellationToken); return new(); } }