using Elsa.Features.Abstractions; using Elsa.Features.Services; using Elsa.Hosting.Management.Contracts; using Elsa.Hosting.Management.HostedServices; using Elsa.Hosting.Management.Options; using Elsa.Hosting.Management.Services; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Hosting.Management.Features; /// /// Installs and configures instance management features. /// public class InstanceManagementFeature : FeatureBase { /// public InstanceManagementFeature(IModule module) : base(module) { } /// /// A factory that instantiates an . /// public Func InstanceNameProvider { get; set; } = sp => ActivatorUtilities.CreateInstance(sp); /// /// Represents the options for heartbeat feature. /// public Action HeartbeatOptions { get; set; } = _ => { }; /// public override void ConfigureHostedServices() { Module.ConfigureHostedService(); Module.ConfigureHostedService(); } /// public override void Apply() { Services.Configure(HeartbeatOptions) .AddSingleton(InstanceNameProvider); } }