diff --git a/src/core/Elsa.Core/Triggers/TriggersForActivityBlueprintAndWorkflowProvider.cs b/src/core/Elsa.Core/Triggers/TriggersForActivityBlueprintAndWorkflowProvider.cs index cab1f8bf9..6769d3136 100644 --- a/src/core/Elsa.Core/Triggers/TriggersForActivityBlueprintAndWorkflowProvider.cs +++ b/src/core/Elsa.Core/Triggers/TriggersForActivityBlueprintAndWorkflowProvider.cs @@ -45,11 +45,11 @@ namespace Elsa.Triggers .ToListAsync(cancellationToken); var tasksOfListsOfTriggers = supportedBookmarkProviders - .Select(async bookmarkProvider => await GetTriggersForBookmarkProvider(bookmarkProvider, - bookmarkProviderContext, - activityBlueprint, - workflowExecutionContext.WorkflowBlueprint, - cancellationToken)); + .Select(bookmarkProvider => GetTriggersForBookmarkProvider(bookmarkProvider, + bookmarkProviderContext, + activityBlueprint, + workflowExecutionContext.WorkflowBlueprint, + cancellationToken)); return (await Task.WhenAll(tasksOfListsOfTriggers)) .SelectMany(x => x) .ToList(); diff --git a/src/core/Elsa.Core/Triggers/TriggersForBlueprintsProvider.cs b/src/core/Elsa.Core/Triggers/TriggersForBlueprintsProvider.cs index 74e1aa5b4..8fe2d642e 100644 --- a/src/core/Elsa.Core/Triggers/TriggersForBlueprintsProvider.cs +++ b/src/core/Elsa.Core/Triggers/TriggersForBlueprintsProvider.cs @@ -37,26 +37,32 @@ namespace Elsa.Triggers public async Task> GetTriggersAsync(IEnumerable workflowBlueprints, CancellationToken cancellationToken = default) { - var allTriggers = new List(); - var activityTypes = (await activityTypeService.GetActivityTypesAsync(cancellationToken)).ToDictionary(x => x.TypeName); + var activityTypes = (await activityTypeService.GetActivityTypesAsync(cancellationToken)) + .ToDictionary(x => x.TypeName); - foreach (var workflowBlueprint in workflowBlueprints) - { - var startingActivityBlueprints = workflowBlueprint.GetStartActivities(); - var workflowExecutionContext = await workflowExecutionContextFactory.CreateWorkflowExecutionContextAsync(workflowBlueprint, - cancellationToken); - var tasksOfCollectionsOfTriggers = startingActivityBlueprints - .Select(async activityBlueprint => await triggerProvider.GetTriggersForActivityBlueprintAsync(activityBlueprint, - workflowExecutionContext, - activityTypes, - cancellationToken)); - var triggers = (await Task.WhenAll(tasksOfCollectionsOfTriggers)) - .SelectMany(x => x) - .ToList(); - allTriggers.AddRange(triggers); - } + var tasksOfListsOfTriggers = workflowBlueprints + .Select(workflowBlueprint => GetWorkflowTriggersForWorkflowBlueprintAsync(workflowBlueprint, activityTypes, cancellationToken)); + + return (await Task.WhenAll(tasksOfListsOfTriggers)) + .SelectMany(x => x) + .ToList(); + } - return allTriggers; + async Task> GetWorkflowTriggersForWorkflowBlueprintAsync(IWorkflowBlueprint workflowBlueprint, + IDictionary activityTypes, + CancellationToken cancellationToken) + { + var startingActivityBlueprints = workflowBlueprint.GetStartActivities(); + var workflowExecutionContext = await workflowExecutionContextFactory.CreateWorkflowExecutionContextAsync(workflowBlueprint, + cancellationToken); + var tasksOfCollectionsOfTriggers = startingActivityBlueprints + .Select(async activityBlueprint => await triggerProvider.GetTriggersForActivityBlueprintAsync(activityBlueprint, + workflowExecutionContext, + activityTypes, + cancellationToken)); + return (await Task.WhenAll(tasksOfCollectionsOfTriggers)) + .SelectMany(x => x) + .ToList(); } } } \ No newline at end of file