From 76b9ae96fb48d49d5ca2cd8a6d94db50d27c77a0 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 26 May 2022 17:05:36 +0200 Subject: [PATCH] Cleanup --- Elsa.sln | 7 +++ src/bundles/Elsa.AllInOne.Web/Program.cs | 50 +++++++++---------- .../Elsa.WorkflowServer.Web/Program.cs | 21 +++----- .../DependencyInjectionExtensions.cs | 10 ---- .../{ => Attributes}/ApiEndpointAttribute.cs | 2 +- .../Configuration/MvcConfigurator.cs | 18 +++++++ .../ApiEndpointAttributeConvention.cs | 3 +- .../Elsa.AspNetCore/Elsa.AspNetCore.csproj | 8 ++- .../DependencyInjectionExtensions.cs | 13 +++++ .../{ => Extensions}/MvcBuilderExtensions.cs | 3 +- .../Elsa.AspNetCore/{ => Models}/ListModel.cs | 2 +- .../Elsa.AspNetCore/{ => Parts}/TypesPart.cs | 2 +- .../Configuration/ExpressionsConfigurator.cs | 21 ++++++++ .../Elsa.Expressions/Elsa.Expressions.csproj | 4 ++ .../DependencyInjectionExtensions.cs | 10 ++-- .../Elsa.Dsl/Configuration/DslConfigurator.cs | 27 ++++++++++ .../DependencyInjectionExtensions.cs | 14 +++--- .../Configuration/JavaScriptConfigurator.cs | 34 +++++++++++++ .../Elsa.JavaScript/Elsa.JavaScript.csproj | 4 -- .../DependencyInjectionExtensions.cs | 20 ++------ .../EFCoreLabelPersistenceConfigurator.cs | 3 ++ .../Elsa.Labels/Endpoints/Labels/Create.cs | 1 + .../Elsa.Labels/Endpoints/Labels/Delete.cs | 1 + .../Elsa.Labels/Endpoints/Labels/Get.cs | 1 + .../Elsa.Labels/Endpoints/Labels/List.cs | 1 + .../Elsa.Labels/Endpoints/Labels/Update.cs | 1 + .../Endpoints/WorkflowDefinitionLabels/Get.cs | 2 + .../WorkflowDefinitionLabels/Update.cs | 2 + .../Configuration/JavaScriptConfigurator.cs | 41 +++++++++++++++ src/modules/Elsa.Liquid/Elsa.Liquid.csproj | 1 + .../DependencyInjectionExtensions.cs | 26 +++------- .../Configuration/MemoryCacheConfigurator.cs | 17 +++++++ .../Elsa.MemoryCache/Elsa.MemoryCache.csproj | 17 +++++++ .../Endpoints/ActivityDescriptors/List.cs | 2 + .../Endpoints/Events/Trigger.cs | 1 + .../WorkflowDefinitions/BulkDelete.cs | 1 + .../WorkflowDefinitions/BulkPublish.cs | 1 + .../WorkflowDefinitions/BulkRetract.cs | 1 + .../Endpoints/WorkflowDefinitions/Delete.cs | 1 + .../Endpoints/WorkflowDefinitions/Dispatch.cs | 1 + .../Endpoints/WorkflowDefinitions/Execute.cs | 1 + .../Endpoints/WorkflowDefinitions/Export.cs | 1 + .../Endpoints/WorkflowDefinitions/Get.cs | 1 + .../Endpoints/WorkflowDefinitions/Import.cs | 1 + .../Endpoints/WorkflowDefinitions/List.cs | 1 + .../Endpoints/WorkflowDefinitions/Post.cs | 1 + .../Endpoints/WorkflowDefinitions/Publish.cs | 1 + .../Endpoints/WorkflowDefinitions/Retract.cs | 1 + .../Endpoints/WorkflowInstances/BulkCancel.cs | 1 + .../Endpoints/WorkflowInstances/BulkDelete.cs | 1 + .../Endpoints/WorkflowInstances/Delete.cs | 1 + .../Endpoints/WorkflowInstances/Get.cs | 1 + .../Endpoints/WorkflowInstances/List.cs | 1 + .../Models/ProcessStimulusResults.cs | 1 + .../Configuration/WorkflowsConfigurator.cs | 4 +- .../WorkflowManagementConfigurator.cs | 2 +- .../aspnet/Elsa.Samples.Web1/Program.cs | 17 +++---- .../aspnet/Elsa.Samples.Web2/Program.cs | 14 ++---- .../aspnet/Elsa.Samples.Web3/Program.cs | 19 ++----- .../console/Elsa.Samples.Console2/Program.cs | 9 +--- 60 files changed, 321 insertions(+), 153 deletions(-) rename src/common/Elsa.AspNetCore/{ => Attributes}/ApiEndpointAttribute.cs (92%) create mode 100644 src/common/Elsa.AspNetCore/Configuration/MvcConfigurator.cs rename src/common/Elsa.AspNetCore/{ => Conventions}/ApiEndpointAttributeConvention.cs (91%) create mode 100644 src/common/Elsa.AspNetCore/Extensions/DependencyInjectionExtensions.cs rename src/common/Elsa.AspNetCore/{ => Extensions}/MvcBuilderExtensions.cs (94%) rename src/common/Elsa.AspNetCore/{ => Models}/ListModel.cs (87%) rename src/common/Elsa.AspNetCore/{ => Parts}/TypesPart.cs (94%) create mode 100644 src/common/Elsa.Expressions/Configuration/ExpressionsConfigurator.cs create mode 100644 src/modules/Elsa.Dsl/Configuration/DslConfigurator.cs create mode 100644 src/modules/Elsa.JavaScript/Configuration/JavaScriptConfigurator.cs create mode 100644 src/modules/Elsa.Liquid/Configuration/JavaScriptConfigurator.cs create mode 100644 src/modules/Elsa.MemoryCache/Configuration/MemoryCacheConfigurator.cs create mode 100644 src/modules/Elsa.MemoryCache/Elsa.MemoryCache.csproj diff --git a/Elsa.sln b/Elsa.sln index 3915d1295..9ae88f781 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -106,6 +106,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Workflows.Runtime", "s EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.ServiceConfiguration", "src\common\Elsa.ServiceConfiguration\Elsa.ServiceConfiguration.csproj", "{C237BA1A-3A7D-4AB2-BE09-2696F3C082A4}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.MemoryCache", "src\modules\Elsa.MemoryCache\Elsa.MemoryCache.csproj", "{2570418D-1674-4DAE-9A24-9146D522450C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -276,6 +278,10 @@ Global {C237BA1A-3A7D-4AB2-BE09-2696F3C082A4}.Debug|Any CPU.Build.0 = Debug|Any CPU {C237BA1A-3A7D-4AB2-BE09-2696F3C082A4}.Release|Any CPU.ActiveCfg = Release|Any CPU {C237BA1A-3A7D-4AB2-BE09-2696F3C082A4}.Release|Any CPU.Build.0 = Release|Any CPU + {2570418D-1674-4DAE-9A24-9146D522450C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2570418D-1674-4DAE-9A24-9146D522450C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2570418D-1674-4DAE-9A24-9146D522450C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2570418D-1674-4DAE-9A24-9146D522450C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {155227F0-A33B-40AA-A4B4-06F813EB921B} = {61017E64-6D00-49CB-9E81-5002DC8F7D5F} @@ -325,5 +331,6 @@ Global {7B9E8C76-814B-4912-A66E-7E0855B46389} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79} {8A050229-DB79-4E0B-9AFF-7565E87F2954} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79} {C237BA1A-3A7D-4AB2-BE09-2696F3C082A4} = {C6658DE0-2B2F-47F0-BB61-2CA66D435C09} + {2570418D-1674-4DAE-9A24-9146D522450C} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79} EndGlobalSection EndGlobal diff --git a/src/bundles/Elsa.AllInOne.Web/Program.cs b/src/bundles/Elsa.AllInOne.Web/Program.cs index 3072a8fdf..a8f8ed3b7 100644 --- a/src/bundles/Elsa.AllInOne.Web/Program.cs +++ b/src/bundles/Elsa.AllInOne.Web/Program.cs @@ -1,5 +1,7 @@ using Elsa.Workflows.Api.Extensions; using Elsa.AspNetCore; +using Elsa.AspNetCore.Conventions; +using Elsa.AspNetCore.Extensions; using Elsa.Extensions; using Elsa.Jobs.Extensions; using Elsa.Hangfire.Implementations; @@ -24,42 +26,36 @@ var services = builder.Services; // Add Elsa services. services - .ConfigureElsa() - .UseWorkflows() - .UseRuntime() - .UseManagement(management => management - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - ) - .UseHttp() - .Apply(); + .AddElsa(elsa => elsa + .UseWorkflows() + .UseRuntime() + .UseManagement(management => management + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + ) + .UseJavaScript() + .UseLiquid() + .UseHttp() + .UseMvc() + ); services - //.AddProtoActorRuntime() .AddJobServices(new QuartzJobSchedulerProvider(), new HangfireJobQueueProvider()) .AddSchedulingServices(); -// Register scripting languages. -services - .AddJavaScriptExpressions() - .AddLiquidExpressions(); - // Register serialization configurator for configuring what types to allow to be serialized. services.AddSingleton(); services.AddSingleton(); -// Controllers. -services.AddControllers(mvc => mvc.Conventions.Add(new ApiEndpointAttributeConvention())); - // Razor Pages. services.AddRazorPages(); diff --git a/src/bundles/Elsa.WorkflowServer.Web/Program.cs b/src/bundles/Elsa.WorkflowServer.Web/Program.cs index 9045cf862..429ce4a59 100644 --- a/src/bundles/Elsa.WorkflowServer.Web/Program.cs +++ b/src/bundles/Elsa.WorkflowServer.Web/Program.cs @@ -1,4 +1,6 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Conventions; +using Elsa.AspNetCore.Extensions; using Elsa.Extensions; using Elsa.Hangfire.Implementations; using Elsa.Http; @@ -45,8 +47,11 @@ services .AddActivity() ) .UsePersistence(p => p.UseEntityFrameworkCore(ef => ef.UseSqlite())) + .UseJavaScript() + .UseLiquid() .UseLabels(labels => labels.UseEntityFrameworkCore(ef => ef.UseSqlite())) .UseHttp() + .UseMvc() ); services @@ -54,25 +59,11 @@ services .AddSchedulingServices() ; -// Add controller services. The below technique allows full control over what controllers get added from which assemblies. -// It is even possible to add individual controllers this way using a custom TypesPart. -services - // Elsa API endpoints require MVC controllers. - .AddControllers(mvc => mvc.Conventions.Add(new ApiEndpointAttributeConvention())) // This convention is required as well. - .ClearApplicationParts() // Remove all controllers from referenced packages. - .AddApplicationPartsFrom() // Add back any controllers from the current application. - .AddWorkflowManagementApiControllers() // Add workflow management API endpoint controllers. - .AddLabelsApiControllers() // Add label API controllers. - ; +//services.AddControllers(); services.AddHealthChecks(); services.AddCors(cors => cors.AddDefaultPolicy(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin())); -// Register scripting languages. -services - .AddJavaScriptExpressions() - .AddLiquidExpressions(); - // Register serialization configurator for configuring what types to allow to be serialized. services.AddSingleton(); services.AddSingleton(); diff --git a/src/bundles/Elsa/Extensions/DependencyInjectionExtensions.cs b/src/bundles/Elsa/Extensions/DependencyInjectionExtensions.cs index e7e946392..bf2d44eab 100644 --- a/src/bundles/Elsa/Extensions/DependencyInjectionExtensions.cs +++ b/src/bundles/Elsa/Extensions/DependencyInjectionExtensions.cs @@ -16,18 +16,8 @@ public static class DependencyInjectionExtensions return services; } - public static IServiceConfiguration ConfigureElsa(this IServiceCollection services) { - // services.AddMediator(); - // - // var serviceConfiguration = services - // .ConfigureServices() - // .UseWorkflows() - // .UsePersistence() - // .UseRuntime() - // .UseManagement(); - var serviceConfiguration = services.ConfigureServices(); serviceConfiguration.Configure(); diff --git a/src/common/Elsa.AspNetCore/ApiEndpointAttribute.cs b/src/common/Elsa.AspNetCore/Attributes/ApiEndpointAttribute.cs similarity index 92% rename from src/common/Elsa.AspNetCore/ApiEndpointAttribute.cs rename to src/common/Elsa.AspNetCore/Attributes/ApiEndpointAttribute.cs index 84ccce0e8..eb4493e89 100644 --- a/src/common/Elsa.AspNetCore/ApiEndpointAttribute.cs +++ b/src/common/Elsa.AspNetCore/Attributes/ApiEndpointAttribute.cs @@ -1,4 +1,4 @@ -namespace Elsa.AspNetCore; +namespace Elsa.AspNetCore.Attributes; /// /// Apply this to a controller that models an API endpoint, where the controller contains a single action. diff --git a/src/common/Elsa.AspNetCore/Configuration/MvcConfigurator.cs b/src/common/Elsa.AspNetCore/Configuration/MvcConfigurator.cs new file mode 100644 index 000000000..7004a0b48 --- /dev/null +++ b/src/common/Elsa.AspNetCore/Configuration/MvcConfigurator.cs @@ -0,0 +1,18 @@ +using Elsa.AspNetCore.Conventions; +using Elsa.ServiceConfiguration.Abstractions; +using Elsa.ServiceConfiguration.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.AspNetCore.Configuration; + +public class MvcConfigurator : ConfiguratorBase +{ + public MvcConfigurator(IServiceConfiguration serviceConfiguration) : base(serviceConfiguration) + { + } + + public override void Configure() + { + Services.AddMvc(mvc => mvc.Conventions.Add(new ApiEndpointAttributeConvention())); + } +} \ No newline at end of file diff --git a/src/common/Elsa.AspNetCore/ApiEndpointAttributeConvention.cs b/src/common/Elsa.AspNetCore/Conventions/ApiEndpointAttributeConvention.cs similarity index 91% rename from src/common/Elsa.AspNetCore/ApiEndpointAttributeConvention.cs rename to src/common/Elsa.AspNetCore/Conventions/ApiEndpointAttributeConvention.cs index 45d143a0e..3c473351d 100644 --- a/src/common/Elsa.AspNetCore/ApiEndpointAttributeConvention.cs +++ b/src/common/Elsa.AspNetCore/Conventions/ApiEndpointAttributeConvention.cs @@ -1,6 +1,7 @@ +using Elsa.AspNetCore.Attributes; using Microsoft.AspNetCore.Mvc.ApplicationModels; -namespace Elsa.AspNetCore; +namespace Elsa.AspNetCore.Conventions; /// /// A custom controller model convention that applies a controller & action name based on the values provided via . diff --git a/src/common/Elsa.AspNetCore/Elsa.AspNetCore.csproj b/src/common/Elsa.AspNetCore/Elsa.AspNetCore.csproj index 833049eb7..9e7837d75 100644 --- a/src/common/Elsa.AspNetCore/Elsa.AspNetCore.csproj +++ b/src/common/Elsa.AspNetCore/Elsa.AspNetCore.csproj @@ -7,7 +7,13 @@ - + + + + + + + diff --git a/src/common/Elsa.AspNetCore/Extensions/DependencyInjectionExtensions.cs b/src/common/Elsa.AspNetCore/Extensions/DependencyInjectionExtensions.cs new file mode 100644 index 000000000..71909a675 --- /dev/null +++ b/src/common/Elsa.AspNetCore/Extensions/DependencyInjectionExtensions.cs @@ -0,0 +1,13 @@ +using Elsa.AspNetCore.Configuration; +using Elsa.ServiceConfiguration.Services; + +namespace Elsa.AspNetCore.Extensions; + +public static class DependencyInjectionExtensions +{ + public static IServiceConfiguration UseMvc(this IServiceConfiguration configuration, Action? configure = default) + { + configuration.Configure(configure); + return configuration; + } +} \ No newline at end of file diff --git a/src/common/Elsa.AspNetCore/MvcBuilderExtensions.cs b/src/common/Elsa.AspNetCore/Extensions/MvcBuilderExtensions.cs similarity index 94% rename from src/common/Elsa.AspNetCore/MvcBuilderExtensions.cs rename to src/common/Elsa.AspNetCore/Extensions/MvcBuilderExtensions.cs index b57e54be1..da6bd57ca 100644 --- a/src/common/Elsa.AspNetCore/MvcBuilderExtensions.cs +++ b/src/common/Elsa.AspNetCore/Extensions/MvcBuilderExtensions.cs @@ -1,7 +1,8 @@ +using Elsa.AspNetCore.Parts; using Microsoft.AspNetCore.Mvc.ApplicationParts; using Microsoft.Extensions.DependencyInjection; -namespace Elsa.AspNetCore; +namespace Elsa.AspNetCore.Extensions; public static class MvcBuilderExtensions { diff --git a/src/common/Elsa.AspNetCore/ListModel.cs b/src/common/Elsa.AspNetCore/Models/ListModel.cs similarity index 87% rename from src/common/Elsa.AspNetCore/ListModel.cs rename to src/common/Elsa.AspNetCore/Models/ListModel.cs index 3ad153252..c0d35b736 100644 --- a/src/common/Elsa.AspNetCore/ListModel.cs +++ b/src/common/Elsa.AspNetCore/Models/ListModel.cs @@ -1,4 +1,4 @@ -namespace Elsa.AspNetCore; +namespace Elsa.AspNetCore.Models; public record ListModel(ICollection Items); diff --git a/src/common/Elsa.AspNetCore/TypesPart.cs b/src/common/Elsa.AspNetCore/Parts/TypesPart.cs similarity index 94% rename from src/common/Elsa.AspNetCore/TypesPart.cs rename to src/common/Elsa.AspNetCore/Parts/TypesPart.cs index 1f2fc299f..d3c557ea4 100644 --- a/src/common/Elsa.AspNetCore/TypesPart.cs +++ b/src/common/Elsa.AspNetCore/Parts/TypesPart.cs @@ -1,7 +1,7 @@ using System.Reflection; using Microsoft.AspNetCore.Mvc.ApplicationParts; -namespace Elsa.AspNetCore; +namespace Elsa.AspNetCore.Parts; /// /// A custom that controls what types will be provided to the system. diff --git a/src/common/Elsa.Expressions/Configuration/ExpressionsConfigurator.cs b/src/common/Elsa.Expressions/Configuration/ExpressionsConfigurator.cs new file mode 100644 index 000000000..235a84960 --- /dev/null +++ b/src/common/Elsa.Expressions/Configuration/ExpressionsConfigurator.cs @@ -0,0 +1,21 @@ +using Elsa.Expressions.Implementations; +using Elsa.Expressions.Services; +using Elsa.ServiceConfiguration.Abstractions; +using Elsa.ServiceConfiguration.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.Expressions.Configuration; + +public class ExpressionsConfigurator : ConfiguratorBase +{ + public ExpressionsConfigurator(IServiceConfiguration serviceConfiguration) : base(serviceConfiguration) + { + } + + public override void Configure() + { + Services + .AddSingleton() + .AddSingleton(); + } +} \ No newline at end of file diff --git a/src/common/Elsa.Expressions/Elsa.Expressions.csproj b/src/common/Elsa.Expressions/Elsa.Expressions.csproj index 645c549bf..a391643df 100644 --- a/src/common/Elsa.Expressions/Elsa.Expressions.csproj +++ b/src/common/Elsa.Expressions/Elsa.Expressions.csproj @@ -12,4 +12,8 @@ + + + + diff --git a/src/common/Elsa.Expressions/Extensions/DependencyInjectionExtensions.cs b/src/common/Elsa.Expressions/Extensions/DependencyInjectionExtensions.cs index 2021cd7d8..0aa42447f 100644 --- a/src/common/Elsa.Expressions/Extensions/DependencyInjectionExtensions.cs +++ b/src/common/Elsa.Expressions/Extensions/DependencyInjectionExtensions.cs @@ -1,6 +1,7 @@ -using Elsa.Expressions.Implementations; +using Elsa.Expressions.Configuration; using Elsa.Expressions.Options; using Elsa.Expressions.Services; +using Elsa.ServiceConfiguration.Services; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -8,11 +9,10 @@ namespace Elsa.Expressions.Extensions; public static class DependencyInjectionExtensions { - public static IServiceCollection AddExpressions(this IServiceCollection services) + public static IServiceConfiguration UseExpressions(this IServiceConfiguration configuration, Action? configure = default) { - return services - .AddSingleton() - .AddSingleton(); + configuration.Configure(configure); + return configuration; } public static IServiceCollection AddExpressionHandler(this IServiceCollection services) where THandler : class, IExpressionHandler => diff --git a/src/modules/Elsa.Dsl/Configuration/DslConfigurator.cs b/src/modules/Elsa.Dsl/Configuration/DslConfigurator.cs new file mode 100644 index 000000000..a7b9ba975 --- /dev/null +++ b/src/modules/Elsa.Dsl/Configuration/DslConfigurator.cs @@ -0,0 +1,27 @@ +using Elsa.Dsl.Implementations; +using Elsa.Dsl.Services; +using Elsa.Expressions.Configuration; +using Elsa.JavaScript.Configuration; +using Elsa.ServiceConfiguration.Abstractions; +using Elsa.ServiceConfiguration.Attributes; +using Elsa.ServiceConfiguration.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.Dsl.Configuration; + +[Dependency(typeof(JavaScriptConfigurator))] +[Dependency(typeof(ExpressionsConfigurator))] +public class DslConfigurator : ConfiguratorBase +{ + public DslConfigurator(IServiceConfiguration serviceConfiguration) : base(serviceConfiguration) + { + } + + public override void Configure() + { + Services + .AddSingleton() + .AddSingleton() + .AddSingleton(); + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Dsl/Extensions/DependencyInjectionExtensions.cs b/src/modules/Elsa.Dsl/Extensions/DependencyInjectionExtensions.cs index 16a2c6cbe..48e908f8a 100644 --- a/src/modules/Elsa.Dsl/Extensions/DependencyInjectionExtensions.cs +++ b/src/modules/Elsa.Dsl/Extensions/DependencyInjectionExtensions.cs @@ -1,16 +1,14 @@ -using Elsa.Dsl.Implementations; -using Elsa.Dsl.Services; -using Microsoft.Extensions.DependencyInjection; +using System; +using Elsa.Dsl.Configuration; +using Elsa.ServiceConfiguration.Services; namespace Elsa.Dsl.Extensions; public static class DependencyInjectionExtensions { - public static IServiceCollection AddDsl(this IServiceCollection services) + public static IServiceConfiguration UseDsl(this IServiceConfiguration configuration, Action? configure = default) { - return services - .AddSingleton() - .AddSingleton() - .AddSingleton(); + configuration.Configure(configure); + return configuration; } } \ No newline at end of file diff --git a/src/modules/Elsa.JavaScript/Configuration/JavaScriptConfigurator.cs b/src/modules/Elsa.JavaScript/Configuration/JavaScriptConfigurator.cs new file mode 100644 index 000000000..538c9bbf0 --- /dev/null +++ b/src/modules/Elsa.JavaScript/Configuration/JavaScriptConfigurator.cs @@ -0,0 +1,34 @@ +using Elsa.Expressions.Configuration; +using Elsa.Expressions.Extensions; +using Elsa.Expressions.Services; +using Elsa.JavaScript.Expressions; +using Elsa.JavaScript.Handlers; +using Elsa.JavaScript.Implementations; +using Elsa.JavaScript.Providers; +using Elsa.JavaScript.Services; +using Elsa.Mediator.Configuration; +using Elsa.Mediator.Extensions; +using Elsa.ServiceConfiguration.Abstractions; +using Elsa.ServiceConfiguration.Attributes; +using Elsa.ServiceConfiguration.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.JavaScript.Configuration; + +[Dependency(typeof(MediatorConfigurator))] +[Dependency(typeof(ExpressionsConfigurator))] +public class JavaScriptConfigurator : ConfiguratorBase +{ + public JavaScriptConfigurator(IServiceConfiguration serviceConfiguration) : base(serviceConfiguration) + { + } + + public override void Configure() + { + Services + .AddSingleton() + .AddSingleton() + .AddNotificationHandlersFrom() + .AddExpressionHandler(); + } +} \ No newline at end of file diff --git a/src/modules/Elsa.JavaScript/Elsa.JavaScript.csproj b/src/modules/Elsa.JavaScript/Elsa.JavaScript.csproj index 1f186cbe9..826ca967e 100644 --- a/src/modules/Elsa.JavaScript/Elsa.JavaScript.csproj +++ b/src/modules/Elsa.JavaScript/Elsa.JavaScript.csproj @@ -16,8 +16,4 @@ - - - - diff --git a/src/modules/Elsa.JavaScript/Extensions/DependencyInjectionExtensions.cs b/src/modules/Elsa.JavaScript/Extensions/DependencyInjectionExtensions.cs index aa8d224e6..549c8eb8c 100644 --- a/src/modules/Elsa.JavaScript/Extensions/DependencyInjectionExtensions.cs +++ b/src/modules/Elsa.JavaScript/Extensions/DependencyInjectionExtensions.cs @@ -1,23 +1,13 @@ -using Elsa.Expressions.Extensions; -using Elsa.Expressions.Services; -using Elsa.JavaScript.Expressions; -using Elsa.JavaScript.Handlers; -using Elsa.JavaScript.Implementations; -using Elsa.JavaScript.Providers; -using Elsa.JavaScript.Services; -using Elsa.Mediator.Extensions; -using Microsoft.Extensions.DependencyInjection; +using Elsa.JavaScript.Configuration; +using Elsa.ServiceConfiguration.Services; namespace Elsa.JavaScript.Extensions; public static class DependencyInjectionExtensions { - public static IServiceCollection AddJavaScriptExpressions(this IServiceCollection services) + public static IServiceConfiguration UseJavaScript(this IServiceConfiguration serviceConfiguration, Action? configure = default) { - return services - .AddSingleton() - .AddSingleton() - .AddNotificationHandlersFrom() - .AddExpressionHandler(); + serviceConfiguration.Configure(configure); + return serviceConfiguration; } } \ No newline at end of file diff --git a/src/modules/Elsa.Labels.EntityFrameworkCore/Configuration/EFCoreLabelPersistenceConfigurator.cs b/src/modules/Elsa.Labels.EntityFrameworkCore/Configuration/EFCoreLabelPersistenceConfigurator.cs index c21e2d4b7..75837697f 100644 --- a/src/modules/Elsa.Labels.EntityFrameworkCore/Configuration/EFCoreLabelPersistenceConfigurator.cs +++ b/src/modules/Elsa.Labels.EntityFrameworkCore/Configuration/EFCoreLabelPersistenceConfigurator.cs @@ -1,12 +1,15 @@ +using Elsa.Labels.Configuration; using Elsa.Labels.Entities; using Elsa.Labels.EntityFrameworkCore.Implementations; using Elsa.Labels.Extensions; using Elsa.Persistence.EntityFrameworkCore.Common.Abstractions; +using Elsa.ServiceConfiguration.Attributes; using Elsa.ServiceConfiguration.Services; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Labels.EntityFrameworkCore.Configuration; +[Dependency(typeof(LabelsConfigurator))] public class EFCoreLabelPersistenceConfigurator : EFCorePersistenceConfigurator { public EFCoreLabelPersistenceConfigurator(IServiceConfiguration serviceConfiguration) : base(serviceConfiguration) diff --git a/src/modules/Elsa.Labels/Endpoints/Labels/Create.cs b/src/modules/Elsa.Labels/Endpoints/Labels/Create.cs index 2cf7e454e..71d3ee135 100644 --- a/src/modules/Elsa.Labels/Endpoints/Labels/Create.cs +++ b/src/modules/Elsa.Labels/Endpoints/Labels/Create.cs @@ -1,4 +1,5 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Labels.Entities; using Elsa.Labels.Services; using Elsa.Workflows.Core.Serialization; diff --git a/src/modules/Elsa.Labels/Endpoints/Labels/Delete.cs b/src/modules/Elsa.Labels/Endpoints/Labels/Delete.cs index ce0b1e32e..9a71cdbac 100644 --- a/src/modules/Elsa.Labels/Endpoints/Labels/Delete.cs +++ b/src/modules/Elsa.Labels/Endpoints/Labels/Delete.cs @@ -1,4 +1,5 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Labels.Entities; using Elsa.Labels.Services; using Microsoft.AspNetCore.Http; diff --git a/src/modules/Elsa.Labels/Endpoints/Labels/Get.cs b/src/modules/Elsa.Labels/Endpoints/Labels/Get.cs index bcaf846fe..1bd022c71 100644 --- a/src/modules/Elsa.Labels/Endpoints/Labels/Get.cs +++ b/src/modules/Elsa.Labels/Endpoints/Labels/Get.cs @@ -1,4 +1,5 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Labels.Entities; using Elsa.Labels.Services; using Elsa.Workflows.Core.Serialization; diff --git a/src/modules/Elsa.Labels/Endpoints/Labels/List.cs b/src/modules/Elsa.Labels/Endpoints/Labels/List.cs index 3a0179229..04929e3f1 100644 --- a/src/modules/Elsa.Labels/Endpoints/Labels/List.cs +++ b/src/modules/Elsa.Labels/Endpoints/Labels/List.cs @@ -1,4 +1,5 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Labels.Entities; using Elsa.Labels.Services; using Elsa.Persistence.Common.Models; diff --git a/src/modules/Elsa.Labels/Endpoints/Labels/Update.cs b/src/modules/Elsa.Labels/Endpoints/Labels/Update.cs index 3ac265b08..9a52454d3 100644 --- a/src/modules/Elsa.Labels/Endpoints/Labels/Update.cs +++ b/src/modules/Elsa.Labels/Endpoints/Labels/Update.cs @@ -1,4 +1,5 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Labels.Entities; using Elsa.Labels.Services; using Elsa.Workflows.Core.Serialization; diff --git a/src/modules/Elsa.Labels/Endpoints/WorkflowDefinitionLabels/Get.cs b/src/modules/Elsa.Labels/Endpoints/WorkflowDefinitionLabels/Get.cs index 60432f937..0f024832f 100644 --- a/src/modules/Elsa.Labels/Endpoints/WorkflowDefinitionLabels/Get.cs +++ b/src/modules/Elsa.Labels/Endpoints/WorkflowDefinitionLabels/Get.cs @@ -1,4 +1,6 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; +using Elsa.AspNetCore.Models; using Elsa.Labels.Services; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Persistence.Services; diff --git a/src/modules/Elsa.Labels/Endpoints/WorkflowDefinitionLabels/Update.cs b/src/modules/Elsa.Labels/Endpoints/WorkflowDefinitionLabels/Update.cs index 5bdd51ff5..015ba8ba6 100644 --- a/src/modules/Elsa.Labels/Endpoints/WorkflowDefinitionLabels/Update.cs +++ b/src/modules/Elsa.Labels/Endpoints/WorkflowDefinitionLabels/Update.cs @@ -1,4 +1,6 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; +using Elsa.AspNetCore.Models; using Elsa.Labels.Entities; using Elsa.Labels.Services; using Elsa.Workflows.Core.Helpers; diff --git a/src/modules/Elsa.Liquid/Configuration/JavaScriptConfigurator.cs b/src/modules/Elsa.Liquid/Configuration/JavaScriptConfigurator.cs new file mode 100644 index 000000000..67fcb0990 --- /dev/null +++ b/src/modules/Elsa.Liquid/Configuration/JavaScriptConfigurator.cs @@ -0,0 +1,41 @@ +using Elsa.Expressions.Configuration; +using Elsa.Expressions.Extensions; +using Elsa.Expressions.Services; +using Elsa.Liquid.Expressions; +using Elsa.Liquid.Extensions; +using Elsa.Liquid.Filters; +using Elsa.Liquid.Handlers; +using Elsa.Liquid.Implementations; +using Elsa.Liquid.Providers; +using Elsa.Liquid.Services; +using Elsa.Mediator.Configuration; +using Elsa.Mediator.Extensions; +using Elsa.MemoryCache.Configuration; +using Elsa.ServiceConfiguration.Abstractions; +using Elsa.ServiceConfiguration.Attributes; +using Elsa.ServiceConfiguration.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.Liquid.Configuration; + +[Dependency(typeof(MemoryCacheConfigurator))] +[Dependency(typeof(MediatorConfigurator))] +[Dependency(typeof(ExpressionsConfigurator))] +public class LiquidConfigurator : ConfiguratorBase +{ + public LiquidConfigurator(IServiceConfiguration serviceConfiguration) : base(serviceConfiguration) + { + } + + public override void Configure() + { + Services + .AddHandlersFrom() + .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddExpressionHandler() + .AddLiquidFilter("json") + .AddLiquidFilter("base64"); + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Liquid/Elsa.Liquid.csproj b/src/modules/Elsa.Liquid/Elsa.Liquid.csproj index 04ae917c7..89d641c1a 100644 --- a/src/modules/Elsa.Liquid/Elsa.Liquid.csproj +++ b/src/modules/Elsa.Liquid/Elsa.Liquid.csproj @@ -15,6 +15,7 @@ + diff --git a/src/modules/Elsa.Liquid/Extensions/DependencyInjectionExtensions.cs b/src/modules/Elsa.Liquid/Extensions/DependencyInjectionExtensions.cs index 40c9e877c..c0bb38bbf 100644 --- a/src/modules/Elsa.Liquid/Extensions/DependencyInjectionExtensions.cs +++ b/src/modules/Elsa.Liquid/Extensions/DependencyInjectionExtensions.cs @@ -1,39 +1,27 @@ -using Elsa.Expressions.Extensions; -using Elsa.Expressions.Services; -using Elsa.Liquid.Expressions; -using Elsa.Liquid.Filters; -using Elsa.Liquid.Handlers; +using Elsa.Liquid.Configuration; using Elsa.Liquid.Implementations; using Elsa.Liquid.Options; -using Elsa.Liquid.Providers; using Elsa.Liquid.Services; -using Elsa.Mediator.Extensions; +using Elsa.ServiceConfiguration.Services; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Liquid.Extensions; public static class DependencyInjectionExtensions { - public static IServiceCollection AddLiquidExpressions(this IServiceCollection services) + public static IServiceConfiguration UseLiquid(this IServiceConfiguration configuration, Action? configure = default) { - return services - .AddMemoryCache() - .AddHandlersFrom() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddExpressionHandler() - .AddLiquidFilter("json") - .AddLiquidFilter("base64"); + configuration.Configure(configure); + return configuration; } - + public static IServiceCollection AddLiquidFilter(this IServiceCollection services, string name) where T : class, ILiquidFilter { services.Configure(options => options.FilterRegistrations[name] = typeof(T)); services.AddScoped(); return services; } - + public static IServiceCollection RegisterLiquidTag(this IServiceCollection services, Action configure) { services.Configure(options => options.ParserConfiguration.Add(configure)); diff --git a/src/modules/Elsa.MemoryCache/Configuration/MemoryCacheConfigurator.cs b/src/modules/Elsa.MemoryCache/Configuration/MemoryCacheConfigurator.cs new file mode 100644 index 000000000..87e80a6e6 --- /dev/null +++ b/src/modules/Elsa.MemoryCache/Configuration/MemoryCacheConfigurator.cs @@ -0,0 +1,17 @@ +using Elsa.ServiceConfiguration.Abstractions; +using Elsa.ServiceConfiguration.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.MemoryCache.Configuration; + +public class MemoryCacheConfigurator : ConfiguratorBase +{ + public MemoryCacheConfigurator(IServiceConfiguration serviceConfiguration) : base(serviceConfiguration) + { + } + + public override void Configure() + { + Services.AddMemoryCache(); + } +} \ No newline at end of file diff --git a/src/modules/Elsa.MemoryCache/Elsa.MemoryCache.csproj b/src/modules/Elsa.MemoryCache/Elsa.MemoryCache.csproj new file mode 100644 index 000000000..8f4b53dd4 --- /dev/null +++ b/src/modules/Elsa.MemoryCache/Elsa.MemoryCache.csproj @@ -0,0 +1,17 @@ + + + + net6.0 + enable + enable + + + + + + + + + + + diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/ActivityDescriptors/List.cs b/src/modules/Elsa.Workflows.Api/Endpoints/ActivityDescriptors/List.cs index 739710d93..44c90ea35 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/ActivityDescriptors/List.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/ActivityDescriptors/List.cs @@ -3,6 +3,8 @@ using System.Linq; using System.Text.Json; using System.Text.Json.Serialization; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; +using Elsa.AspNetCore.Models; using Elsa.Workflows.Core.Serialization.Converters; using Elsa.Workflows.Core.Services; using Elsa.Workflows.Management.Models; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/Events/Trigger.cs b/src/modules/Elsa.Workflows.Api/Endpoints/Events/Trigger.cs index 8ba77683d..7cf778e9c 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/Events/Trigger.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/Events/Trigger.cs @@ -1,4 +1,5 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Api.ApiResults; using Elsa.Workflows.Api.Models; using Elsa.Workflows.Core.Activities; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkDelete.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkDelete.cs index e3e1b7da2..7a3d7d22b 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkDelete.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkDelete.cs @@ -3,6 +3,7 @@ using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Persistence.Services; using Microsoft.AspNetCore.Http; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkPublish.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkPublish.cs index d78beaefe..68aca81bc 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkPublish.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkPublish.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Management.Services; using Elsa.Workflows.Persistence.Models; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkRetract.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkRetract.cs index 0b72ba5d7..d01e65106 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkRetract.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkRetract.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Management.Services; using Elsa.Workflows.Persistence.Models; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Delete.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Delete.cs index 6ab67b805..27f5ffe3d 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Delete.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Delete.cs @@ -1,6 +1,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Persistence.Services; using Microsoft.AspNetCore.Mvc; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Dispatch.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Dispatch.cs index 3847f200d..905e28b63 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Dispatch.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Dispatch.cs @@ -1,6 +1,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Api.ApiResults; using Elsa.Workflows.Persistence.Models; using Elsa.Workflows.Persistence.Services; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute.cs index 84d32e047..a3a30dd84 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Execute.cs @@ -1,6 +1,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Api.ApiResults; using Elsa.Workflows.Core.Models; using Elsa.Workflows.Persistence.Models; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Export.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Export.cs index 4925e491b..4ed88cd9a 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Export.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Export.cs @@ -3,6 +3,7 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Api.Models; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Persistence.Models; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Get.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Get.cs index 9a9c9a986..c6e4dbc1b 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Get.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Get.cs @@ -1,6 +1,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Api.Models; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Persistence.Models; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Import.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Import.cs index da309e3fc..bee7f5527 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Import.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Import.cs @@ -2,6 +2,7 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Api.Models; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Management.Materializers; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/List.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/List.cs index 4a5c6db07..3c39a1803 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/List.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/List.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Persistence.Common.Models; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Persistence.Models; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Post.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Post.cs index 2480e79b7..104967064 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Post.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Post.cs @@ -3,6 +3,7 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Core.Activities; using Elsa.Workflows.Core.Models; using Elsa.Workflows.Core.Serialization; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Publish.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Publish.cs index 3aa7dd195..74dcdc292 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Publish.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Publish.cs @@ -1,6 +1,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Management.Services; using Elsa.Workflows.Persistence.Entities; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Retract.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Retract.cs index a8f1a017c..8f9d9c5ff 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Retract.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Retract.cs @@ -1,6 +1,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Management.Services; using Elsa.Workflows.Persistence.Entities; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/BulkCancel.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/BulkCancel.cs index 52f641aaa..1a6992969 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/BulkCancel.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/BulkCancel.cs @@ -3,6 +3,7 @@ using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Core.Serialization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/BulkDelete.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/BulkDelete.cs index a238c83c8..8609faebb 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/BulkDelete.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/BulkDelete.cs @@ -3,6 +3,7 @@ using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Persistence.Services; using Microsoft.AspNetCore.Http; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Delete.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Delete.cs index 59883ae41..002d3bb68 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Delete.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Delete.cs @@ -1,6 +1,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Persistence.Services; using Microsoft.AspNetCore.Mvc; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Get.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Get.cs index 12c16348c..4932be66c 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Get.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Get.cs @@ -1,6 +1,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Persistence.Services; using Microsoft.AspNetCore.Mvc; diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List.cs index eb1862baa..5fbc0fccd 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List.cs @@ -1,6 +1,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.AspNetCore; +using Elsa.AspNetCore.Attributes; using Elsa.Persistence.Common.Entities; using Elsa.Persistence.Common.Models; using Elsa.Workflows.Core.Models; diff --git a/src/modules/Elsa.Workflows.Api/Models/ProcessStimulusResults.cs b/src/modules/Elsa.Workflows.Api/Models/ProcessStimulusResults.cs index 2c711af9e..17c470846 100644 --- a/src/modules/Elsa.Workflows.Api/Models/ProcessStimulusResults.cs +++ b/src/modules/Elsa.Workflows.Api/Models/ProcessStimulusResults.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using Elsa.AspNetCore; +using Elsa.AspNetCore.Models; using Elsa.Workflows.Runtime.Models; namespace Elsa.Workflows.Api.Models; diff --git a/src/modules/Elsa.Workflows.Core/Configuration/WorkflowsConfigurator.cs b/src/modules/Elsa.Workflows.Core/Configuration/WorkflowsConfigurator.cs index 50d330fdc..f3842b705 100644 --- a/src/modules/Elsa.Workflows.Core/Configuration/WorkflowsConfigurator.cs +++ b/src/modules/Elsa.Workflows.Core/Configuration/WorkflowsConfigurator.cs @@ -1,6 +1,8 @@ using Elsa.Expressions; +using Elsa.Expressions.Configuration; using Elsa.Expressions.Extensions; using Elsa.ServiceConfiguration.Abstractions; +using Elsa.ServiceConfiguration.Attributes; using Elsa.ServiceConfiguration.Services; using Elsa.Workflows.Core.ActivityNodeResolvers; using Elsa.Workflows.Core.Expressions; @@ -13,6 +15,7 @@ using Microsoft.Extensions.DependencyInjection; namespace Elsa.Workflows.Core.Configuration; +[Dependency(typeof(ExpressionsConfigurator))] public class WorkflowsConfigurator : ConfiguratorBase { public WorkflowsConfigurator(IServiceConfiguration serviceConfiguration) : base(serviceConfiguration) @@ -84,7 +87,6 @@ public class WorkflowsConfigurator : ConfiguratorBase private void AddExpressions(IServiceCollection services) { services - .AddExpressions() .AddExpressionHandler() .AddExpressionHandler() .AddExpressionHandler() diff --git a/src/modules/Elsa.Workflows.Management/Configuration/WorkflowManagementConfigurator.cs b/src/modules/Elsa.Workflows.Management/Configuration/WorkflowManagementConfigurator.cs index 386ae12c0..3ebfac12e 100644 --- a/src/modules/Elsa.Workflows.Management/Configuration/WorkflowManagementConfigurator.cs +++ b/src/modules/Elsa.Workflows.Management/Configuration/WorkflowManagementConfigurator.cs @@ -50,7 +50,7 @@ public class WorkflowManagementConfigurator : ConfiguratorBase .AddSingleton() .AddSingleton() .AddSingleton(); - + Services.Configure(options => { foreach (var activityType in ActivityTypes) diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Program.cs b/src/samples/aspnet/Elsa.Samples.Web1/Program.cs index b01b4aa40..d83c64a89 100644 --- a/src/samples/aspnet/Elsa.Samples.Web1/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.Web1/Program.cs @@ -1,4 +1,6 @@ using Elsa.AspNetCore; +using Elsa.AspNetCore.Conventions; +using Elsa.AspNetCore.Extensions; using Elsa.Extensions; using Elsa.Hangfire.Implementations; using Elsa.Http.Extensions; @@ -51,7 +53,10 @@ services runtime.Workflows.Add(); runtime.Workflows.Add(); }) + .UseJavaScript() + .UseLiquid() .UseHttp() + .UseMvc() ); services @@ -60,9 +65,10 @@ services // Add controller services. The below technique allows full control over what controllers get added from which assemblies. // It is even possible to add individual controllers this way using a custom TypesPart. +// If you want to include all controllers services // Elsa API endpoints require MVC controllers. - .AddControllers(mvc => mvc.Conventions.Add(new ApiEndpointAttributeConvention())) // This convention is required as well. + .AddControllers() .ClearApplicationParts() // Remove all controllers from referenced packages. .AddApplicationPartsFrom() // Add back any controllers from the current application. .AddWorkflowManagementApiControllers() // Add Elsa API endpoint controllers. @@ -71,15 +77,6 @@ services // Testing only: allow client app to connect from anywhere. services.AddCors(cors => cors.AddDefaultPolicy(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin())); -// Register scripting languages. -services - .AddJavaScriptExpressions() - .AddLiquidExpressions(); - -// Register serialization configurator for configuring what types to allow to be serialized. -services.AddSingleton(); -services.AddSingleton(); - // Configure middleware pipeline. var app = builder.Build(); var serviceProvider = app.Services; diff --git a/src/samples/aspnet/Elsa.Samples.Web2/Program.cs b/src/samples/aspnet/Elsa.Samples.Web2/Program.cs index ef2a21909..1a279f11f 100644 --- a/src/samples/aspnet/Elsa.Samples.Web2/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.Web2/Program.cs @@ -1,3 +1,4 @@ +using Elsa.AspNetCore.Extensions; using Elsa.Extensions; using Elsa.Hangfire.Implementations; using Elsa.Http; @@ -43,7 +44,9 @@ services .AddActivity() .AddActivity() .AddActivity()) - .UseHttp()); + .UseHttp() + .UseMvc() + ); services .AddJobServices(new QuartzJobSchedulerProvider(), new HangfireJobQueueProvider()) @@ -52,15 +55,6 @@ services // Testing only: allow client app to connect from anywhere. services.AddCors(cors => cors.AddDefaultPolicy(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin())); -// Register scripting languages. -services - .AddJavaScriptExpressions() - .AddLiquidExpressions(); - -// Register serialization configurator for configuring what types to allow to be serialized. -services.AddSingleton(); -services.AddSingleton(); - // Configure middleware pipelines. var app = builder.Build(); var serviceProvider = app.Services; diff --git a/src/samples/aspnet/Elsa.Samples.Web3/Program.cs b/src/samples/aspnet/Elsa.Samples.Web3/Program.cs index 06601c55e..5fba86808 100644 --- a/src/samples/aspnet/Elsa.Samples.Web3/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.Web3/Program.cs @@ -1,20 +1,16 @@ +using Elsa.AspNetCore.Extensions; using Elsa.Extensions; using Elsa.Hangfire.Implementations; using Elsa.Http; using Elsa.Http.Extensions; using Elsa.JavaScript.Activities; -using Elsa.JavaScript.Extensions; using Elsa.Jobs.Extensions; -using Elsa.Liquid.Extensions; using Elsa.Quartz.Implementations; using Elsa.Scheduling.Activities; using Elsa.Scheduling.Extensions; using Elsa.Workflows.Api.Extensions; using Elsa.Workflows.Core.Activities; -using Elsa.Workflows.Core.Serialization; -using Elsa.Workflows.Core.Services; using Elsa.Workflows.Management.Extensions; -using Elsa.Workflows.Management.Serialization; var builder = WebApplication.CreateBuilder(args); var services = builder.Services; @@ -34,21 +30,14 @@ services .AddActivity() .AddActivity() .AddActivity()) - .UseHttp()); + .UseHttp() + .UseMvc() + ); services .AddJobServices(new QuartzJobSchedulerProvider(), new HangfireJobQueueProvider()) .AddSchedulingServices(); -// Register scripting languages. -services - .AddJavaScriptExpressions() - .AddLiquidExpressions(); - -// Register serialization configurator for configuring what types to allow to be serialized. -services.AddSingleton(); -services.AddSingleton(); - // Razor Pages. services.AddRazorPages(); diff --git a/src/samples/console/Elsa.Samples.Console2/Program.cs b/src/samples/console/Elsa.Samples.Console2/Program.cs index 234fac12d..fbd03ad35 100644 --- a/src/samples/console/Elsa.Samples.Console2/Program.cs +++ b/src/samples/console/Elsa.Samples.Console2/Program.cs @@ -5,7 +5,6 @@ using Elsa.Dsl.Extensions; using Elsa.Dsl.Services; using Elsa.Extensions; using Elsa.Http; -using Elsa.JavaScript.Extensions; using Elsa.Scheduling.Activities; using Elsa.Workflows.Core.Activities; using Elsa.Workflows.Core.Models; @@ -51,12 +50,8 @@ IServiceProvider CreateServices() { var services = new ServiceCollection(); - services.AddElsa(); - - services - .AddDsl() - .AddLogging(logging => logging.AddConsole().SetMinimumLevel(LogLevel.Warning)) - .AddJavaScriptExpressions(); + services.AddElsa(elsa => elsa.UseDsl()); + services.AddLogging(logging => logging.AddConsole().SetMinimumLevel(LogLevel.Warning)); return services.BuildServiceProvider(); } \ No newline at end of file