using Elsa.MassTransit.Messages;
using Elsa.Workflows.Management.Activities.WorkflowDefinitionActivity;
using Elsa.Workflows.Management.Contracts;
using JetBrains.Annotations;
using MassTransit;
namespace Elsa.MassTransit.Consumers;
///
/// Consumes messages related to workflow definition changes.
///
[PublicAPI]
public class WorkflowDefinitionEventsConsumer(IActivityRegistryPopulator activityRegistryPopulator) :
IConsumer,
IConsumer,
IConsumer,
IConsumer,
IConsumer,
IConsumer,
IConsumer
{
///
public Task Consume(ConsumeContext context)
{
return UpdateDefinition(context.Message.Id, context.Message.UsableAsActivity);
}
///
public Task Consume(ConsumeContext context)
{
activityRegistryPopulator.RemoveDefinitionFromRegistry(typeof(WorkflowDefinitionActivityProvider), context.Message.Id);
return Task.CompletedTask;
}
///
public Task Consume(ConsumeContext context)
{
return UpdateDefinition(context.Message.Id, context.Message.UsableAsActivity);
}
///
public Task Consume(ConsumeContext context)
{
activityRegistryPopulator.RemoveDefinitionVersionFromRegistry(typeof(WorkflowDefinitionActivityProvider), context.Message.Id);
return Task.CompletedTask;
}
///
public Task Consume(ConsumeContext context)
{
foreach (var id in context.Message.Ids)
{
activityRegistryPopulator.RemoveDefinitionFromRegistry(typeof(WorkflowDefinitionActivityProvider), id);
}
return Task.CompletedTask;
}
///
public Task Consume(ConsumeContext context)
{
activityRegistryPopulator.RemoveDefinitionVersionFromRegistry(typeof(WorkflowDefinitionActivityProvider), context.Message.Id);
return Task.CompletedTask;
}
///
public Task Consume(ConsumeContext context)
{
foreach (var id in context.Message.Ids)
{
activityRegistryPopulator.RemoveDefinitionVersionFromRegistry(typeof(WorkflowDefinitionActivityProvider), id);
}
return Task.CompletedTask;
}
private Task UpdateDefinition(string id, bool usableAsActivity)
{
if (usableAsActivity)
return activityRegistryPopulator.AddToRegistry(typeof(WorkflowDefinitionActivityProvider), id);
activityRegistryPopulator.RemoveDefinitionVersionFromRegistry(typeof(WorkflowDefinitionActivityProvider), id);
return Task.CompletedTask;
}
}