Add "UsableAsActivity" field to workflow events in MassTransit module

Updated event handling to only update activity registry for workflows marked as usable as activity
This commit is contained in:
Raymond den Haan 2024-05-13 16:04:25 +02:00 committed by raymonddenhaan
parent 2ee823ba30
commit 3272938c8e
4 changed files with 15 additions and 8 deletions

View file

@ -20,8 +20,10 @@ public class WorkflowDefinitionEventsConsumer(IActivityRegistryPopulator activit
{
/// <inheritdoc />
public Task Consume(ConsumeContext<WorkflowDefinitionCreated> context)
{
return activityRegistryPopulator.AddToRegistry(typeof(WorkflowDefinitionActivityProvider), context.Message.Id);
{
return context.Message.UsableAsActivity
? activityRegistryPopulator.AddToRegistry(typeof(WorkflowDefinitionActivityProvider), context.Message.Id)
: Task.CompletedTask;
}
/// <inheritdoc />
@ -34,7 +36,9 @@ public class WorkflowDefinitionEventsConsumer(IActivityRegistryPopulator activit
/// <inheritdoc />
public Task Consume(ConsumeContext<WorkflowDefinitionPublished> context)
{
return activityRegistryPopulator.AddToRegistry(typeof(WorkflowDefinitionActivityProvider), context.Message.Id);
return context.Message.UsableAsActivity
? activityRegistryPopulator.AddToRegistry(typeof(WorkflowDefinitionActivityProvider), context.Message.Id)
: Task.CompletedTask;
}
/// <inheritdoc />

View file

@ -16,8 +16,8 @@ namespace Elsa.MassTransit.Handlers
{
/// <inheritdoc />
public async Task HandleAsync(WorkflowDefinitionPublished notification, CancellationToken cancellationToken) =>
await distributedEventsDispatcher.DispatchAsync(new Distributed.WorkflowDefinitionPublished(notification.WorkflowDefinition.Id), cancellationToken);
await distributedEventsDispatcher.DispatchAsync(new Distributed.WorkflowDefinitionPublished(notification.WorkflowDefinition.Id,
notification.WorkflowDefinition.Options.UsableAsActivity.GetValueOrDefault()), cancellationToken);
/// <inheritdoc />
public async Task HandleAsync(WorkflowDefinitionDeleted notification, CancellationToken cancellationToken) =>
@ -29,7 +29,8 @@ namespace Elsa.MassTransit.Handlers
/// <inheritdoc />
public async Task HandleAsync(WorkflowDefinitionCreated notification, CancellationToken cancellationToken) =>
await distributedEventsDispatcher.DispatchAsync(new Distributed.WorkflowDefinitionCreated(notification.WorkflowDefinition.Id), cancellationToken);
await distributedEventsDispatcher.DispatchAsync(new Distributed.WorkflowDefinitionCreated(notification.WorkflowDefinition.Id,
notification.WorkflowDefinition.Options.UsableAsActivity.GetValueOrDefault()), cancellationToken);
/// <inheritdoc />
public async Task HandleAsync(WorkflowDefinitionVersionDeleted notification, CancellationToken cancellationToken) =>

View file

@ -3,7 +3,8 @@ namespace Elsa.MassTransit.Messages;
/// <summary>
/// Represents a distributed message that a workflow definition has been created.
/// </summary>
public class WorkflowDefinitionCreated(string id)
public class WorkflowDefinitionCreated(string id, bool usableAsActivity)
{
public string Id { get; set; } = id;
public bool UsableAsActivity { get; set; } = usableAsActivity;
}

View file

@ -1,6 +1,7 @@
namespace Elsa.MassTransit.Messages;
public class WorkflowDefinitionPublished(string id)
public class WorkflowDefinitionPublished(string id, bool usableAsActivity)
{
public string Id { get; set; } = id;
public bool UsableAsActivity { get; set; } = usableAsActivity;
}