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();
}
}