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