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