Refactor
This commit is contained in:
parent
edbe68f9e1
commit
dad33e665a
|
|
@ -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 =>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public static class Utils
|
|||
GetElasticConfigurationTypes()
|
||||
.Select(t => t.BaseType!.GenericTypeArguments.First()).ToList();
|
||||
|
||||
public static IDictionary<Type, string> ResolveAliasConfig(
|
||||
public static IDictionary<Type, string> ResolveIndexConfig(
|
||||
IDictionary<Type, string> defaultConfig,
|
||||
IDictionary<string, string>? userDefinedConfig)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ using Microsoft.Extensions.DependencyInjection;
|
|||
namespace Elsa.EntityFrameworkCore.Modules.Management;
|
||||
|
||||
[DependsOn(typeof(WorkflowManagementFeature))]
|
||||
public class EFCoreManagementPersistenceFeature : PersistenceFeatureBase<ManagementElsaDbContext>
|
||||
public class EFCoreDefaultManagementPersistenceFeature : PersistenceFeatureBase<ManagementElsaDbContext>
|
||||
{
|
||||
public EFCoreManagementPersistenceFeature(IModule module) : base(module)
|
||||
public EFCoreDefaultManagementPersistenceFeature(IModule module) : base(module)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -10,8 +10,8 @@ public static class WorkflowManagementFeatureExtensions
|
|||
/// <summary>
|
||||
/// Sets up the EF Core persistence provider.
|
||||
/// </summary>
|
||||
public static WorkflowManagementFeature UseEntityFrameworkCore(this WorkflowManagementFeature feature,
|
||||
Action<EFCoreManagementPersistenceFeature>? configure = default)
|
||||
public static DefaultManagementFeature UseEntityFrameworkCore(this DefaultManagementFeature feature,
|
||||
Action<EFCoreDefaultManagementPersistenceFeature>? configure = default)
|
||||
{
|
||||
feature.Module.Configure(configure);
|
||||
return feature;
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ public class EFCoreDefaultRuntimePersistenceFeature : PersistenceFeatureBase<Run
|
|||
feature.WorkflowStateStore = sp => sp.GetRequiredService<EFCoreWorkflowStateStore>();
|
||||
feature.WorkflowTriggerStore = sp => sp.GetRequiredService<EFCoreTriggerStore>();
|
||||
feature.BookmarkStore = sp => sp.GetRequiredService<EFCoreBookmarkStore>();
|
||||
feature.WorkflowExecutionLogStore = sp => sp.GetRequiredService<EFCoreWorkflowExecutionLogStore>();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -34,6 +33,5 @@ public class EFCoreDefaultRuntimePersistenceFeature : PersistenceFeatureBase<Run
|
|||
AddStore<WorkflowState, EFCoreWorkflowStateStore>();
|
||||
AddStore<StoredTrigger, EFCoreTriggerStore>();
|
||||
AddStore<StoredBookmark, EFCoreBookmarkStore>();
|
||||
AddStore<WorkflowExecutionLogRecord, EFCoreWorkflowExecutionLogStore>();
|
||||
}
|
||||
}
|
||||
|
|
@ -24,6 +24,15 @@ public static class ModuleExtensions
|
|||
return module;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the default workflow management feature to the specified module.
|
||||
/// </summary>
|
||||
public static WorkflowManagementFeature UseDefaultManagement(this WorkflowManagementFeature feature, Action<DefaultManagementFeature>? configure = default)
|
||||
{
|
||||
feature.Module.Configure(configure);
|
||||
return feature;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the workflow instance feature to workflow management module.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Program>());
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -29,23 +29,26 @@ identityTokenSection.Bind(identityTokenOptions);
|
|||
// Add Elsa services.
|
||||
services
|
||||
.AddElsa(elsa => elsa
|
||||
.UseWorkflowManagement(management => management
|
||||
.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString))
|
||||
.AddActivity<WriteLine>()
|
||||
.AddActivity<ReadLine>()
|
||||
.AddActivity<If>()
|
||||
.AddActivity<Flowchart>()
|
||||
.AddActivity<FlowDecision>()
|
||||
.AddActivity<FlowSwitch>()
|
||||
.AddActivity<FlowJoin>()
|
||||
.AddActivity<Elsa.Scheduling.Activities.Delay>()
|
||||
.AddActivity<Elsa.Scheduling.Activities.Timer>()
|
||||
.AddActivity<ForEach>()
|
||||
.AddActivity<Switch>()
|
||||
.AddActivity<RunJavaScript>()
|
||||
.AddActivity<Event>()
|
||||
.AddActivitiesFrom<Program>()
|
||||
)
|
||||
.UseWorkflowManagement(management =>
|
||||
{
|
||||
management
|
||||
.UseDefaultManagement(dm => dm.UseEntityFrameworkCore(ef => ef.UseSqlite()))
|
||||
.UseWorkflowInstances(w => w.UseEntityFrameworkCore(ef => ef.UseSqlite()))
|
||||
.AddActivity<WriteLine>()
|
||||
.AddActivity<ReadLine>()
|
||||
.AddActivity<If>()
|
||||
.AddActivity<Flowchart>()
|
||||
.AddActivity<FlowDecision>()
|
||||
.AddActivity<FlowSwitch>()
|
||||
.AddActivity<FlowJoin>()
|
||||
.AddActivity<Elsa.Scheduling.Activities.Delay>()
|
||||
.AddActivity<Elsa.Scheduling.Activities.Timer>()
|
||||
.AddActivity<ForEach>()
|
||||
.AddActivity<Switch>()
|
||||
.AddActivity<RunJavaScript>()
|
||||
.AddActivity<Event>()
|
||||
.AddActivitiesFrom<Program>();
|
||||
})
|
||||
.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<AsyncWorkflowStateExporter>();
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in a new issue