diff --git a/src/bundles/Elsa.WorkflowServer.Web/Program.cs b/src/bundles/Elsa.WorkflowServer.Web/Program.cs index 2f69b796a..c35635f3f 100644 --- a/src/bundles/Elsa.WorkflowServer.Web/Program.cs +++ b/src/bundles/Elsa.WorkflowServer.Web/Program.cs @@ -1,5 +1,3 @@ -using Azure.Identity; -using Azure.ResourceManager; using Elsa.EntityFrameworkCore.Extensions; using Elsa.Extensions; using Elsa.Identity.Options; @@ -8,9 +6,7 @@ using Elsa.EntityFrameworkCore.Modules.Labels; using Elsa.EntityFrameworkCore.Modules.Management; using Elsa.EntityFrameworkCore.Modules.Runtime; using Microsoft.Data.Sqlite; -using Elsa.ProtoActor.Cluster.AzureContainerApps; using Proto.Persistence.Sqlite; -using Proto.Remote.GrpcNet; var builder = WebApplication.CreateBuilder(args); var services = builder.Services; @@ -35,7 +31,7 @@ services .UseDefaultAuthentication() .UseWorkflowManagement(management => { - management.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString)); + management.UseDefaultManagement(m => m.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString))); management.UseWorkflowInstances(w => w.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString))); }) .UseWorkflowRuntime(runtime => diff --git a/src/modules/Elsa.Elasticsearch/Common/Utils.cs b/src/modules/Elsa.Elasticsearch/Common/Utils.cs index 1d047bf3a..83212a523 100644 --- a/src/modules/Elsa.Elasticsearch/Common/Utils.cs +++ b/src/modules/Elsa.Elasticsearch/Common/Utils.cs @@ -15,7 +15,7 @@ public static class Utils GetElasticConfigurationTypes() .Select(t => t.BaseType!.GenericTypeArguments.First()).ToList(); - public static IDictionary ResolveAliasConfig( + public static IDictionary ResolveIndexConfig( IDictionary defaultConfig, IDictionary? userDefinedConfig) { diff --git a/src/modules/Elsa.Elasticsearch/Extensions/ModuleExtensions.cs b/src/modules/Elsa.Elasticsearch/Extensions/ModuleExtensions.cs index 29828c8fe..59970da52 100644 --- a/src/modules/Elsa.Elasticsearch/Extensions/ModuleExtensions.cs +++ b/src/modules/Elsa.Elasticsearch/Extensions/ModuleExtensions.cs @@ -22,7 +22,7 @@ public static class ModuleExtensions { f.Options = options; f.IndexRolloverStrategy = rolloverStrategy; - f.IndexConfig = Utils.ResolveAliasConfig(f.IndexConfig, options.IndexConfig ?? indexConfig); + f.IndexConfig = Utils.ResolveIndexConfig(f.IndexConfig, options.IndexConfig ?? indexConfig); }; module.Configure(configure); diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Modules/Management/Extensions.cs index 196b87147..8a2445388 100644 --- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Modules/Management/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Modules/Management/Extensions.cs @@ -6,7 +6,7 @@ namespace Elsa.EntityFrameworkCore.Extensions; public static partial class Extensions { - public static EFCoreManagementPersistenceFeature UsePostgreSql(this EFCoreManagementPersistenceFeature feature, string connectionString) + public static EFCoreDefaultManagementPersistenceFeature UsePostgreSql(this EFCoreDefaultManagementPersistenceFeature feature, string connectionString) { feature.DbContextOptionsBuilder = (_, db) => db.UseElsaPostgreSql(connectionString); return feature; diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs index 4cc9a3770..595756e8b 100644 --- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs @@ -5,7 +5,7 @@ namespace Elsa.EntityFrameworkCore.Extensions; public static partial class Extensions { - public static EFCoreManagementPersistenceFeature UseSqlServer(this EFCoreManagementPersistenceFeature feature, string connectionString) + public static EFCoreDefaultManagementPersistenceFeature UseSqlServer(this EFCoreDefaultManagementPersistenceFeature feature, string connectionString) { feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlServer(connectionString); return feature; diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs index ff8424eb5..17acbb52e 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs @@ -6,7 +6,7 @@ namespace Elsa.EntityFrameworkCore.Extensions; public static partial class Extensions { - public static EFCoreManagementPersistenceFeature UseSqlite(this EFCoreManagementPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) + public static EFCoreDefaultManagementPersistenceFeature UseSqlite(this EFCoreDefaultManagementPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) { feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString); return feature; diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/ManagementPersistenceFeature.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/DefaultManagementPersistenceFeature.cs similarity index 79% rename from src/modules/Elsa.EntityFrameworkCore/Modules/Management/ManagementPersistenceFeature.cs rename to src/modules/Elsa.EntityFrameworkCore/Modules/Management/DefaultManagementPersistenceFeature.cs index 8b80471b5..3f52ce534 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/ManagementPersistenceFeature.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/DefaultManagementPersistenceFeature.cs @@ -8,9 +8,9 @@ using Microsoft.Extensions.DependencyInjection; namespace Elsa.EntityFrameworkCore.Modules.Management; [DependsOn(typeof(WorkflowManagementFeature))] -public class EFCoreManagementPersistenceFeature : PersistenceFeatureBase +public class EFCoreDefaultManagementPersistenceFeature : PersistenceFeatureBase { - public EFCoreManagementPersistenceFeature(IModule module) : base(module) + public EFCoreDefaultManagementPersistenceFeature(IModule module) : base(module) { } diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Extensions.cs index c04b379da..b9e49690f 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Extensions.cs @@ -10,8 +10,8 @@ public static class WorkflowManagementFeatureExtensions /// /// Sets up the EF Core persistence provider. /// - public static WorkflowManagementFeature UseEntityFrameworkCore(this WorkflowManagementFeature feature, - Action? configure = default) + public static DefaultManagementFeature UseEntityFrameworkCore(this DefaultManagementFeature feature, + Action? configure = default) { feature.Module.Configure(configure); return feature; diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/DefaultRuntimePersistenceFeature.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/DefaultRuntimePersistenceFeature.cs index d44faccef..cbf38dc25 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/DefaultRuntimePersistenceFeature.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/DefaultRuntimePersistenceFeature.cs @@ -23,7 +23,6 @@ public class EFCoreDefaultRuntimePersistenceFeature : PersistenceFeatureBase sp.GetRequiredService(); feature.WorkflowTriggerStore = sp => sp.GetRequiredService(); feature.BookmarkStore = sp => sp.GetRequiredService(); - feature.WorkflowExecutionLogStore = sp => sp.GetRequiredService(); }); } @@ -34,6 +33,5 @@ public class EFCoreDefaultRuntimePersistenceFeature : PersistenceFeatureBase(); AddStore(); AddStore(); - AddStore(); } } \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Management/Extensions/ModuleExtensions.cs b/src/modules/Elsa.Workflows.Management/Extensions/ModuleExtensions.cs index 4eb30e928..f56fa7bf3 100644 --- a/src/modules/Elsa.Workflows.Management/Extensions/ModuleExtensions.cs +++ b/src/modules/Elsa.Workflows.Management/Extensions/ModuleExtensions.cs @@ -24,6 +24,15 @@ public static class ModuleExtensions return module; } + /// + /// Adds the default workflow management feature to the specified module. + /// + public static WorkflowManagementFeature UseDefaultManagement(this WorkflowManagementFeature feature, Action? configure = default) + { + feature.Module.Configure(configure); + return feature; + } + /// /// Adds the workflow instance feature to workflow management module. /// diff --git a/src/modules/Elsa.Workflows.Management/Features/DefaultManagementFeature.cs b/src/modules/Elsa.Workflows.Management/Features/DefaultManagementFeature.cs new file mode 100644 index 000000000..53f941304 --- /dev/null +++ b/src/modules/Elsa.Workflows.Management/Features/DefaultManagementFeature.cs @@ -0,0 +1,11 @@ +using Elsa.Features.Abstractions; +using Elsa.Features.Services; + +namespace Elsa.Workflows.Management.Features; + +public class DefaultManagementFeature : FeatureBase +{ + public DefaultManagementFeature(IModule module) : base(module) + { + } +} \ No newline at end of file diff --git a/src/samples/aspnet/Elsa.Samples.AzureServiceBusActivities/Program.cs b/src/samples/aspnet/Elsa.Samples.AzureServiceBusActivities/Program.cs index 7cef29d34..76fe4e63a 100644 --- a/src/samples/aspnet/Elsa.Samples.AzureServiceBusActivities/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.AzureServiceBusActivities/Program.cs @@ -10,10 +10,18 @@ var configuration = builder.Configuration; builder.Services.AddElsa(elsa => { // Configure management feature to use EF Core. - elsa.UseWorkflowManagement(management => management.UseEntityFrameworkCore(ef => ef.UseSqlite())); + elsa.UseWorkflowManagement(management => + { + management.UseDefaultManagement(dm => dm.UseEntityFrameworkCore(ef => ef.UseSqlite())); + management.UseWorkflowInstances(w => w.UseEntityFrameworkCore(ef => ef.UseSqlite())); + }); // Configure runtime feature to use EF Core. - elsa.UseWorkflowRuntime(runtime => runtime.UseDefaultRuntime(d => d.UseEntityFrameworkCore(ef => ef.UseSqlite()))); + elsa.UseWorkflowRuntime(runtime => + { + runtime.UseDefaultRuntime(d => d.UseEntityFrameworkCore(ef => ef.UseSqlite())); + runtime.UseExecutionLogRecords(d => d.UseEntityFrameworkCore(ef => ef.UseSqlite())); + }); // Expose API endpoints. elsa.UseWorkflowsApi(api => api.AddFastEndpointsAssembly()); diff --git a/src/samples/aspnet/Elsa.Samples.MassTransitActivities/Program.cs b/src/samples/aspnet/Elsa.Samples.MassTransitActivities/Program.cs index d8e6658a7..6be787aff 100644 --- a/src/samples/aspnet/Elsa.Samples.MassTransitActivities/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.MassTransitActivities/Program.cs @@ -12,10 +12,18 @@ var rabbitMqConnectionString = configuration.GetConnectionString("RabbitMq")!; builder.Services.AddElsa(elsa => { // Configure management feature to use EF Core. - elsa.UseWorkflowManagement(management => management.UseEntityFrameworkCore(ef => ef.UseSqlite())); + elsa.UseWorkflowManagement(management => + { + management.UseDefaultManagement(dm => dm.UseEntityFrameworkCore(ef => ef.UseSqlite())); + management.UseWorkflowInstances(w => w.UseEntityFrameworkCore(ef => ef.UseSqlite())); + }); // Configure runtime feature to use EF Core. - elsa.UseWorkflowRuntime(runtime => runtime.UseDefaultRuntime(d => d.UseEntityFrameworkCore(ef => ef.UseSqlite()))); + elsa.UseWorkflowRuntime(runtime => + { + runtime.UseDefaultRuntime(d => d.UseEntityFrameworkCore(ef => ef.UseSqlite())); + runtime.UseExecutionLogRecords(d => d.UseEntityFrameworkCore(ef => ef.UseSqlite())); + }); // Expose API endpoints. elsa.UseWorkflowsApi(); diff --git a/src/samples/aspnet/Elsa.Samples.TelnyxIntegration/Program.cs b/src/samples/aspnet/Elsa.Samples.TelnyxIntegration/Program.cs index 6dd8d611d..6f299e6d1 100644 --- a/src/samples/aspnet/Elsa.Samples.TelnyxIntegration/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.TelnyxIntegration/Program.cs @@ -29,23 +29,26 @@ identityTokenSection.Bind(identityTokenOptions); // Add Elsa services. services .AddElsa(elsa => elsa - .UseWorkflowManagement(management => management - .UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString)) - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivity() - .AddActivitiesFrom() - ) + .UseWorkflowManagement(management => + { + management + .UseDefaultManagement(dm => dm.UseEntityFrameworkCore(ef => ef.UseSqlite())) + .UseWorkflowInstances(w => w.UseEntityFrameworkCore(ef => ef.UseSqlite())) + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivity() + .AddActivitiesFrom(); + }) .UseIdentity(identity => { identity.IdentityOptions = identityOptions; @@ -58,6 +61,7 @@ services //proto.PersistenceProvider = _ => new SqliteProvider(new SqliteConnectionStringBuilder(sqliteConnectionString)); }); runtime.UseDefaultRuntime(dr => dr.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString))); + runtime.UseExecutionLogRecords(d => d.UseEntityFrameworkCore(ef => ef.UseSqlite())); runtime.UseExecutionLogRecords(e => e.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString))); runtime.WorkflowStateExporter = sp => sp.GetRequiredService(); }) diff --git a/src/samples/aspnet/Elsa.Samples.WorkflowServer/Program.cs b/src/samples/aspnet/Elsa.Samples.WorkflowServer/Program.cs index 38fc0f128..71dd1cf71 100644 --- a/src/samples/aspnet/Elsa.Samples.WorkflowServer/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.WorkflowServer/Program.cs @@ -10,7 +10,11 @@ var builder = WebApplication.CreateBuilder(args); builder.Services.AddElsa(elsa => { // Configure management feature to use EF Core. - elsa.UseWorkflowManagement(management => management.UseEntityFrameworkCore(ef => ef.UseSqlite())); + elsa.UseWorkflowManagement(management => + { + management.UseDefaultManagement(dm => dm.UseEntityFrameworkCore(ef => ef.UseSqlite())); + management.UseWorkflowInstances(w => w.UseEntityFrameworkCore(ef => ef.UseSqlite())); + }); // Expose API endpoints. elsa.UseWorkflowsApi(); diff --git a/src/samples/aspnet/Elsa.Samples.WorkflowServerAndDesigner/Program.cs b/src/samples/aspnet/Elsa.Samples.WorkflowServerAndDesigner/Program.cs index a7405c256..d9be3e1cb 100644 --- a/src/samples/aspnet/Elsa.Samples.WorkflowServerAndDesigner/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.WorkflowServerAndDesigner/Program.cs @@ -8,7 +8,11 @@ var builder = WebApplication.CreateBuilder(args); builder.Services.AddElsa(elsa => { // Configure management feature to use EF Core. - elsa.UseWorkflowManagement(management => management.UseEntityFrameworkCore(ef => ef.UseSqlite())); + elsa.UseWorkflowManagement(management => + { + management.UseDefaultManagement(dm => dm.UseEntityFrameworkCore(ef => ef.UseSqlite())); + management.UseWorkflowInstances(w => w.UseEntityFrameworkCore(ef => ef.UseSqlite())); + }); // Expose API endpoints. elsa.UseWorkflowsApi();