using Elsa.Dsl.Contracts; using Elsa.Dsl.Models; using Elsa.Workflows.Management.Options; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; namespace Elsa.Workflows.Management.HostedServices; /// /// Registers function activity descriptors with the DSL. /// public class MapActivityDslFunctionsHostedService : IHostedService { private readonly IFunctionActivityRegistry _functionActivityRegistry; private readonly IDictionary _descriptors; /// /// Initializes a new instance of the class. /// public MapActivityDslFunctionsHostedService(IOptions options, IFunctionActivityRegistry functionActivityRegistry) { _functionActivityRegistry = functionActivityRegistry; _descriptors = options.Value.FunctionActivityDescriptors; } /// public Task StartAsync(CancellationToken cancellationToken) { foreach (var descriptor in _descriptors.Values) _functionActivityRegistry.RegisterFunction(descriptor); return Task.CompletedTask; } /// public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; }