Simplified DI registration

This commit is contained in:
Sipke Schoorstra 2019-01-05 14:19:12 +01:00
parent 258dcad9dc
commit e63c46317a
10 changed files with 53 additions and 46 deletions

View file

@ -6,14 +6,15 @@ namespace Elsa.Activities.Console.Extensions
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddConsoleDescriptors(this IServiceCollection services)
public static IServiceCollection AddConsoleWorkflowDescriptors(this IServiceCollection services)
{
return services.AddActivityDescriptors<ActivityDescriptors>();
}
public static IServiceCollection AddConsoleDrivers(this IServiceCollection services)
public static IServiceCollection AddConsoleWorkflowDrivers(this IServiceCollection services)
{
return services
.AddConsoleWorkflowDescriptors()
.AddActivityDriver<ReadLineDriver>()
.AddActivityDriver<WriteLineDriver>();
}

View file

@ -1,3 +1,4 @@
using AspNetCore.AsyncInitialization;
using Elsa.Activities.Http.Drivers;
using Elsa.Activities.Http.Initialization;
using Elsa.Activities.Http.Services;
@ -11,19 +12,19 @@ namespace Elsa.Activities.Http.Extensions
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddHttpDescriptors(this IServiceCollection services)
public static IServiceCollection AddHttpWorkflowDescriptors(this IServiceCollection services)
{
return services.AddActivityDescriptors<ActivityDescriptors>();
}
public static IServiceCollection AddHttpDrivers(this IServiceCollection services)
{
services
.AddSingleton<IHttpWorkflowCache, DefaultHttpWorkflowCache>()
.AddAsyncInitializer<HttpWorkflowCacheInitializer>()
.AddActivityDriver<HttpRequestTriggerDriver>();
public static IServiceCollection AddHttpWorkflowDrivers(this IServiceCollection services)
{
services.TryAddSingleton<IHttpWorkflowCache, DefaultHttpWorkflowCache>();
services.AddAsyncInitialization();
services.TryAddTransient<IAsyncInitializer, HttpWorkflowCacheInitializer>();
services.AddActivityDriver<HttpRequestTriggerDriver>();
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
return services;
}
}

View file

@ -6,14 +6,15 @@ namespace Elsa.Activities.Primitives.Extensions
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddPrimitiveDescriptors(this IServiceCollection services)
public static IServiceCollection AddPrimitiveWorkflowDescriptors(this IServiceCollection services)
{
return services.AddActivityDescriptors<ActivityDescriptors>();
}
public static IServiceCollection AddPrimitiveDrivers(this IServiceCollection services)
public static IServiceCollection AddPrimitiveWorkflowDrivers(this IServiceCollection services)
{
return services
.AddPrimitiveWorkflowDescriptors()
.AddActivityDriver<SetVariableDriver>()
.AddActivityDriver<ForEachDriver>()
.AddActivityDriver<IfElseDriver>();

View file

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace Elsa.Extensions
{
@ -7,13 +8,15 @@ namespace Elsa.Extensions
public static IServiceCollection AddActivityDescriptors<T>(this IServiceCollection services)
where T : class, IActivityDescriptorProvider
{
return services.AddSingleton<IActivityDescriptorProvider, T>();
services.TryAddSingleton<IActivityDescriptorProvider, T>();
return services;
}
public static IServiceCollection AddActivityDriver<T>(this IServiceCollection services)
where T : class, IActivityDriver
{
return services.AddSingleton<IActivityDriver, T>();
services.TryAddSingleton<IActivityDriver, T>();
return services;
}
}
}

View file

@ -4,6 +4,7 @@ using Elsa.Serialization;
using Elsa.Serialization.Formatters;
using Elsa.Serialization.Tokenizers;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace Elsa.Extensions
{
@ -11,31 +12,33 @@ namespace Elsa.Extensions
{
public static IServiceCollection AddWorkflowsCore(this IServiceCollection services)
{
return services
.AddSingleton<IIdGenerator, DefaultIdGenerator>()
.AddScoped<IWorkflowSerializer, WorkflowSerializer>()
.AddScoped<IWorkflowTokenizer, WorkflowTokenizer>()
.AddScoped<IActivityHarvester, TypedActivityHarvester>()
.AddScoped<IActivityLibrary, ActivityLibrary>()
.AddActivityDescriptors<ActivityDescriptors>()
.AddSingleton<ITokenFormatter, JsonTokenFormatter>()
.AddSingleton<ITokenFormatter, YamlTokenFormatter>()
.AddSingleton<ITokenFormatter, XmlTokenFormatter>()
.AddSingleton<ITokenFormatterProvider, TokenFormatterProvider>()
.AddSingleton<ITokenizerInvoker, TokenizerInvoker>()
.AddSingleton<ITokenizer, DefaultTokenizer>()
.AddSingleton<ITokenizer, ActivityTokenizer>();
services.TryAddSingleton<IIdGenerator, DefaultIdGenerator>();
services.TryAddScoped<IWorkflowSerializer, WorkflowSerializer>();
services.TryAddScoped<IWorkflowTokenizer, WorkflowTokenizer>();
services.TryAddScoped<IActivityHarvester, TypedActivityHarvester>();
services.TryAddScoped<IActivityLibrary, ActivityLibrary>();
services.AddActivityDescriptors<ActivityDescriptors>();
services.TryAddSingleton<ITokenFormatter, JsonTokenFormatter>();
services.TryAddSingleton<ITokenFormatter, YamlTokenFormatter>();
services.TryAddSingleton<ITokenFormatter, XmlTokenFormatter>();
services.TryAddSingleton<ITokenFormatterProvider, TokenFormatterProvider>();
services.TryAddSingleton<ITokenizerInvoker, TokenizerInvoker>();
services.TryAddSingleton<ITokenizer, DefaultTokenizer>();
services.TryAddSingleton<ITokenizer, ActivityTokenizer>();
return services;
}
public static IServiceCollection AddWorkflowsInvoker(this IServiceCollection services)
{
return services
.AddSingleton<IWorkflowInvoker, WorkflowInvoker>()
.AddSingleton<IActivityInvoker, ActivityInvoker>()
.AddSingleton<IActivityDriverRegistry, ActivityDriverRegistry>()
.AddSingleton<IExpressionEvaluator, PlainTextEvaluator>()
.AddSingleton<IExpressionEvaluator, JavaScriptEvaluator>()
.AddSingleton<IWorkflowExpressionEvaluator, WorkflowExpressionEvaluator>();
services.TryAddSingleton<IWorkflowInvoker, WorkflowInvoker>();
services.TryAddSingleton<IActivityInvoker, ActivityInvoker>();
services.TryAddSingleton<IActivityDriverRegistry, ActivityDriverRegistry>();
services.TryAddSingleton<IExpressionEvaluator, PlainTextEvaluator>();
services.TryAddSingleton<IExpressionEvaluator, JavaScriptEvaluator>();
services.TryAddSingleton<IWorkflowExpressionEvaluator, WorkflowExpressionEvaluator>();
return services;
}
}
}

View file

@ -1,3 +1,4 @@
using Elsa.Extensions;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Runtime.Extensions
@ -7,6 +8,8 @@ namespace Elsa.Runtime.Extensions
public static IServiceCollection AddWorkflowsHost(this IServiceCollection services)
{
return services
.AddWorkflowsCore()
.AddWorkflowsInvoker()
.AddScoped<IWorkflowHost, WorkflowHost>();
}
}

View file

@ -25,16 +25,11 @@ namespace SampleHost.Web
{
services
.AddLocalization()
.AddWorkflowsCore()
.AddWorkflowsInvoker()
.AddWorkflowsHost()
.AddWorkflowsFileSystemPersistence(Configuration.GetSection("FileStore"))
.AddPrimitiveDrivers()
.AddPrimitiveDescriptors()
.AddConsoleDrivers()
.AddConsoleDescriptors()
.AddHttpDrivers()
.AddHttpDescriptors();
.AddPrimitiveWorkflowDrivers()
.AddConsoleWorkflowDrivers()
.AddHttpWorkflowDrivers();
services
.AddMvc()

View file

@ -11,7 +11,7 @@ namespace Elsa.Web.Activities.Console
public override void ConfigureServices(IServiceCollection services)
{
services
.AddConsoleDescriptors()
.AddConsoleWorkflowDescriptors()
.AddActivityDisplay<ReadLineDisplay>()
.AddActivityDisplay<WriteLineDisplay>();
}

View file

@ -11,7 +11,7 @@ namespace Elsa.Web.Activities.Http
public override void ConfigureServices(IServiceCollection services)
{
services
.AddHttpDescriptors()
.AddHttpWorkflowDescriptors()
.AddActivityDisplay<HttpRequestTriggerDisplay>();
}
}

View file

@ -11,7 +11,7 @@ namespace Elsa.Web.Activities.Primitives
public override void ConfigureServices(IServiceCollection services)
{
services
.AddPrimitiveDescriptors()
.AddPrimitiveWorkflowDescriptors()
.AddActivityDisplay<IfElseDisplay>()
.AddActivityDisplay<ForEachDisplay>()
.AddActivityDisplay<SetVariableDisplay>()