using Elsa.ActivityDefinitions.Entities; using Elsa.ActivityDefinitions.Implementations; using Elsa.ActivityDefinitions.Services; using Elsa.Common.Features; using Elsa.Features.Abstractions; using Elsa.Features.Attributes; using Elsa.Features.Services; using Elsa.Mediator.Extensions; using Elsa.Mediator.Features; using Elsa.Persistence.Common.Extensions; using Elsa.Workflows.Core.Services; using Elsa.Workflows.Management.Services; using Microsoft.Extensions.DependencyInjection; namespace Elsa.ActivityDefinitions.Features; [DependsOn(typeof(MediatorFeature))] [DependsOn(typeof(SystemClockFeature))] public class ActivityDefinitionsFeature : FeatureBase { public ActivityDefinitionsFeature(IModule module) : base(module) { } public Func ActivityDefinitionStore { get; set; } = sp => sp.GetRequiredService(); public ActivityDefinitionsFeature WithActivityDefinitionStore(Func factory) { ActivityDefinitionStore = factory; return this; } public override void Apply() { Services .AddMemoryStore() .AddSingleton(ActivityDefinitionStore) .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() ; Services.AddNotificationHandlersFrom(GetType()); } }