diff --git a/aspnet-core/Directory.Build.props b/aspnet-core/Directory.Build.props index 67526e060..4ffa4af0a 100644 --- a/aspnet-core/Directory.Build.props +++ b/aspnet-core/Directory.Build.props @@ -5,7 +5,7 @@ 1.8.0 1.0.2 6.2.0 - 2.8.2 + 2.9.0 1.5.10 2.13.0 3.0.434 diff --git a/aspnet-core/LINGYUN.MicroService.Workflow.sln b/aspnet-core/LINGYUN.MicroService.Workflow.sln index 62d97309e..22781a14e 100644 --- a/aspnet-core/LINGYUN.MicroService.Workflow.sln +++ b/aspnet-core/LINGYUN.MicroService.Workflow.sln @@ -55,7 +55,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa", "modules EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Server", "modules\elsa\LINGYUN.Abp.Elsa.Server\LINGYUN.Abp.Elsa.Server.csproj", "{88AA0D46-597E-4969-8382-A3F8054B9409}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.EntityFramework.Core", "modules\elsa\LINGYUN.Abp.Elsa.EntityFramework.Core\LINGYUN.Abp.Elsa.EntityFramework.Core.csproj", "{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.EntityFrameworkCore", "modules\elsa\LINGYUN.Abp.Elsa.EntityFrameworkCore\LINGYUN.Abp.Elsa.EntityFrameworkCore.csproj", "{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.BlobStoring", "modules\elsa\LINGYUN.Abp.Elsa.Activities.BlobStoring\LINGYUN.Abp.Elsa.Activities.BlobStoring.csproj", "{81CB5141-4FC5-413A-A516-CD65F40465C0}" EndProject @@ -79,7 +79,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Core", "modules\common\LINGYUN.Abp.Notifications.Core\LINGYUN.Abp.Notifications.Core.csproj", "{CE1B9AD0-7CDA-4459-86A3-A3162C1095D9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Elsa.Activities.Webhooks", "modules\elsa\LINGYUN.Abp.Elsa.Activities.Webhooks\LINGYUN.Abp.Elsa.Activities.Webhooks.csproj", "{2CA34976-4A80-485C-8572-6004829BB727}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.Webhooks", "modules\elsa\LINGYUN.Abp.Elsa.Activities.Webhooks\LINGYUN.Abp.Elsa.Activities.Webhooks.csproj", "{2CA34976-4A80-485C-8572-6004829BB727}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks.Core", "modules\webhooks\LINGYUN.Abp.Webhooks.Core\LINGYUN.Abp.Webhooks.Core.csproj", "{44E4EBFA-6F25-4FD7-A4B3-536C3A42677C}" EndProject @@ -87,6 +87,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks", "mod EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks.EventBus", "modules\webhooks\LINGYUN.Abp.Webhooks.EventBus\LINGYUN.Abp.Webhooks.EventBus.csproj", "{B6246B7A-4095-433A-B981-5D1E43CDF712}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql", "modules\elsa\LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql\LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj", "{4B20572A-10E7-4414-943A-974F275677B4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -229,6 +231,10 @@ Global {B6246B7A-4095-433A-B981-5D1E43CDF712}.Debug|Any CPU.Build.0 = Debug|Any CPU {B6246B7A-4095-433A-B981-5D1E43CDF712}.Release|Any CPU.ActiveCfg = Release|Any CPU {B6246B7A-4095-433A-B981-5D1E43CDF712}.Release|Any CPU.Build.0 = Release|Any CPU + {4B20572A-10E7-4414-943A-974F275677B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B20572A-10E7-4414-943A-974F275677B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B20572A-10E7-4414-943A-974F275677B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B20572A-10E7-4414-943A-974F275677B4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -271,6 +277,7 @@ Global {44E4EBFA-6F25-4FD7-A4B3-536C3A42677C} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A} {6489B162-2B28-42B9-9AD4-EB5CCBB8AE85} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A} {B6246B7A-4095-433A-B981-5D1E43CDF712} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A} + {4B20572A-10E7-4414-943A-974F275677B4} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6BB7A5DE-DA12-44DC-BC9B-0F6CA524346F} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN/Abp/Elsa/Activities/AbpElsaActivitiesModule.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN/Abp/Elsa/Activities/AbpElsaActivitiesModule.cs index 77df108b3..ef68b940e 100644 --- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN/Abp/Elsa/Activities/AbpElsaActivitiesModule.cs +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN/Abp/Elsa/Activities/AbpElsaActivitiesModule.cs @@ -5,7 +5,6 @@ using LINGYUN.Abp.Elsa.Activities.Emailing; using LINGYUN.Abp.Elsa.Activities.IM; using LINGYUN.Abp.Elsa.Activities.Notifications; using LINGYUN.Abp.Elsa.Activities.Sms; -using LINGYUN.Abp.Elsa.Activities.Webhooks; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Modularity; @@ -23,7 +22,6 @@ public class AbpElsaActivitiesModule : AbpModule public override void PreConfigureServices(ServiceConfigurationContext context) { var configuration = context.Services.GetConfiguration(); - var elsaSection = configuration.GetSection("Elsa"); var startups = new[] { typeof(Emailing.Startup), diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/FodyWeavers.xml b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/FodyWeavers.xml similarity index 100% rename from aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/FodyWeavers.xml rename to aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/FodyWeavers.xml diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj new file mode 100644 index 000000000..d5eb83291 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj @@ -0,0 +1,19 @@ + + + + net6.0 + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/AbpElsaEntityFrameworkCoreMySqlModule.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/AbpElsaEntityFrameworkCoreMySqlModule.cs new file mode 100644 index 000000000..45069e0a8 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/AbpElsaEntityFrameworkCoreMySqlModule.cs @@ -0,0 +1,29 @@ +using Elsa; +using Elsa.Options; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.EntityFrameworkCore.MySQL; +using Volo.Abp.Modularity; + +namespace LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql; + +[DependsOn( + typeof(AbpElsaEntityFrameworkCoreModule), + typeof(AbpEntityFrameworkCoreMySQLModule))] +public class AbpElsaEntityFrameworkCoreMySqlModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + var startups = new[] + { + typeof(PersistenceStartup), + typeof(WebhooksStartup), + typeof(WorkflowSettingsStartup), + }; + + PreConfigure(elsa => + { + elsa.AddFeatures(startups, configuration); + }); + } +} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/PersistenceStartup.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/PersistenceStartup.cs new file mode 100644 index 000000000..48f1efde2 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/PersistenceStartup.cs @@ -0,0 +1,16 @@ +using Elsa.Attributes; +using Elsa.Persistence.EntityFramework.MySql; +using Microsoft.EntityFrameworkCore; + +namespace LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql; + +[Feature("DefaultPersistence:EntityFrameworkCore:MySql")] +public class PersistenceStartup : PersistenceStartupBase +{ + protected override string ProviderName => "MySql"; + + protected override void Configure(DbContextOptionsBuilder options, string connectionString) + { + options.UseMySql(connectionString); + } +} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/WebhooksStartup.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/WebhooksStartup.cs new file mode 100644 index 000000000..05c4a76c9 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/WebhooksStartup.cs @@ -0,0 +1,18 @@ +using Elsa.Attributes; +using Microsoft.EntityFrameworkCore; + +namespace LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql; + +[Feature("Webhooks:EntityFrameworkCore:MySql")] +public class WebhooksStartup : WebhooksStartupBase +{ + protected override string ProviderName => "MySql"; + + protected override void Configure(DbContextOptionsBuilder options, string connectionString) + { + options.UseMySql( + connectionString, + ServerVersion.AutoDetect(connectionString), + x => x.MigrationsHistoryTable("__EFMigrationsHistory_Webhooks")); + } +} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/WorkflowSettingsStartup.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/WorkflowSettingsStartup.cs new file mode 100644 index 000000000..70b6c68e5 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN/Abp/Elsa/EntityFrameworkCore/MySql/WorkflowSettingsStartup.cs @@ -0,0 +1,18 @@ +using Elsa.Attributes; +using Microsoft.EntityFrameworkCore; + +namespace LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql; + +[Feature("WorkflowSettings:EntityFrameworkCore:MySql")] +public class WorkflowSettingsStartup : WorkflowSettingsStartupBase +{ + protected override string ProviderName => "MySql"; + + protected override void Configure(DbContextOptionsBuilder options, string connectionString) + { + options.UseMySql( + connectionString, + ServerVersion.AutoDetect(connectionString), + x => x.MigrationsHistoryTable("__EFMigrationsHistory_WorkflowSettings")); + } +} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/FodyWeavers.xml b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/FodyWeavers.xml new file mode 100644 index 000000000..c485a4548 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/LINGYUN.Abp.Elsa.EntityFramework.Core.csproj b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN.Abp.Elsa.EntityFrameworkCore.csproj similarity index 100% rename from aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/LINGYUN.Abp.Elsa.EntityFramework.Core.csproj rename to aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN.Abp.Elsa.EntityFrameworkCore.csproj diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/LINGYUN/Abp/Elsa/EntityFramework.Core/AbpElsaEntityFrameworkCoreModule.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/AbpElsaEntityFrameworkCoreModule.cs similarity index 57% rename from aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/LINGYUN/Abp/Elsa/EntityFramework.Core/AbpElsaEntityFrameworkCoreModule.cs rename to aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/AbpElsaEntityFrameworkCoreModule.cs index 5120b9cdf..8d5ba8a20 100644 --- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/LINGYUN/Abp/Elsa/EntityFramework.Core/AbpElsaEntityFrameworkCoreModule.cs +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/AbpElsaEntityFrameworkCoreModule.cs @@ -1,15 +1,11 @@ using Volo.Abp.EntityFrameworkCore; using Volo.Abp.Modularity; -namespace LINGYUN.Abp.Elsa.EntityFramework.Core; +namespace LINGYUN.Abp.Elsa.EntityFrameworkCore; [DependsOn( typeof(AbpElsaModule), typeof(AbpEntityFrameworkCoreModule))] public class AbpElsaEntityFrameworkCoreModule : AbpModule { - public override void ConfigureServices(ServiceConfigurationContext context) - { - - } } diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/PersistenceStartupBase.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/PersistenceStartupBase.cs new file mode 100644 index 000000000..1a98e3dde --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/PersistenceStartupBase.cs @@ -0,0 +1,37 @@ +using Elsa.Options; +using Elsa.Persistence.EntityFramework.Core; +using Elsa.Persistence.EntityFramework.Core.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using System; + +namespace LINGYUN.Abp.Elsa.EntityFrameworkCore; + +public abstract class PersistenceStartupBase : EntityFrameworkCoreStartupBase +{ + public override void ConfigureElsa(ElsaOptionsBuilder elsa, IConfiguration configuration) + { + var section = configuration.GetSection("Elsa:Features:DefaultPersistence"); + var connectionStringName = section.GetValue("ConnectionStringIdentifier"); + var connectionString = section.GetValue("ConnectionString"); + if (connectionString.IsNullOrWhiteSpace()) + { + if (connectionStringName.IsNullOrWhiteSpace()) + { + connectionStringName = ProviderName; + } + + connectionString = configuration.GetConnectionString(connectionStringName); + } + + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = GetDefaultConnectionString(); + } + + elsa.UseEntityFrameworkPersistence(options => + { + Configure(options, connectionString); + }, autoRunMigrations: false); + } +} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/WebhooksStartupBase.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/WebhooksStartupBase.cs new file mode 100644 index 000000000..e622616d2 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/WebhooksStartupBase.cs @@ -0,0 +1,41 @@ +using Elsa.Activities.Webhooks; +using Elsa.Options; +using Elsa.Webhooks.Persistence.EntityFramework.Core; +using Elsa.Webhooks.Persistence.EntityFramework.Core.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using System; + +namespace LINGYUN.Abp.Elsa.EntityFrameworkCore; + +public abstract class WebhooksStartupBase : EntityFrameworkWebhookStartupBase +{ + public override void ConfigureElsa(ElsaOptionsBuilder elsa, IConfiguration configuration) + { + var section = configuration.GetSection("Elsa:Features:Webhooks"); + var connectionStringName = section.GetValue("ConnectionStringIdentifier"); + var connectionString = section.GetValue("ConnectionString"); + if (connectionStringName.IsNullOrWhiteSpace()) + { + connectionStringName = ProviderName; + } + + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = configuration.GetConnectionString(connectionStringName); + } + + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = GetDefaultConnectionString(); + } + + var webhookOptionsBuilder = new WebhookOptionsBuilder(elsa.Services); + webhookOptionsBuilder.UseEntityFrameworkPersistence(options => + { + Configure(options, connectionString); + }, autoRunMigrations: false); + elsa.Services.AddSingleton(webhookOptionsBuilder.WebhookOptions); + } +} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/WorkflowSettingsStartupBase.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/WorkflowSettingsStartupBase.cs new file mode 100644 index 000000000..edb703939 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN/Abp/Elsa/EntityFrameworkCore/WorkflowSettingsStartupBase.cs @@ -0,0 +1,43 @@ +using Elsa.Options; +using Elsa.WorkflowSettings; +using Elsa.WorkflowSettings.Extensions; +using Elsa.WorkflowSettings.Persistence.EntityFramework.Core; +using Elsa.WorkflowSettings.Persistence.EntityFramework.Core.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using System; + +namespace LINGYUN.Abp.Elsa.EntityFrameworkCore; + +public abstract class WorkflowSettingsStartupBase : EntityFrameworkWorkflowSettingsStartupBase +{ + public override void ConfigureElsa(ElsaOptionsBuilder elsa, IConfiguration configuration) + { + var section = configuration.GetSection("Elsa:Features:WorkflowSettings"); + var connectionStringName = section.GetValue("ConnectionStringIdentifier"); + var connectionString = section.GetValue("ConnectionString"); + if (connectionString.IsNullOrWhiteSpace()) + { + if (connectionStringName.IsNullOrWhiteSpace()) + { + connectionStringName = ProviderName; + } + + connectionString = configuration.GetConnectionString(connectionStringName); + } + + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = GetDefaultConnectionString(); + } + + var workflowSettingsOptionsBuilder = new WorkflowSettingsOptionsBuilder(elsa.Services); + workflowSettingsOptionsBuilder.UseEntityFrameworkPersistence(options => + { + Configure(options, connectionString); + }, autoRunMigrations: false); + elsa.Services.AddScoped((provider) => workflowSettingsOptionsBuilder.WorkflowSettingsOptions.WorkflowSettingsStoreFactory(provider)); + elsa.AddWorkflowSettings(); + } +} diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj index 35ef0c1c9..96a3cde97 100644 --- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj @@ -15,11 +15,9 @@ - - - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -54,6 +52,7 @@ + diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Pages/_Host.cshtml b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Pages/_Host.cshtml index c1a99ee89..7c6eba682 100644 --- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Pages/_Host.cshtml +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Pages/_Host.cshtml @@ -24,7 +24,7 @@ diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Properties/launchSettings.json b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Properties/launchSettings.json index cdb3a8756..b928a38e2 100644 --- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Properties/launchSettings.json +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Properties/launchSettings.json @@ -11,11 +11,11 @@ "LINGYUN.Abp.WorkflowManagement.HttpApi.Host": { "commandName": "Project", "launchBrowser": false, + "dotnetRunMessages": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, - "applicationUrl": "http://127.0.0.1:30035", - "dotnetRunMessages": "true" + "applicationUrl": "http://127.0.0.1:30035" } } } \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs index b178cbdc4..9ec46f885 100644 --- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs @@ -127,11 +127,8 @@ public partial class WorkflowManagementHttpApiHostModule typeof(Elsa.Activities.UserTask.Startup), typeof(Elsa.Activities.Temporal.Quartz.Startup), typeof(Elsa.Activities.Email.Startup), - typeof(Elsa.Persistence.EntityFramework.MySql.Startup), typeof(Elsa.Scripting.JavaScript.Startup), typeof(Elsa.Activities.Webhooks.Startup), - typeof(Elsa.Webhooks.Persistence.EntityFramework.MySql.Startup), - typeof(Elsa.WorkflowSettings.Persistence.EntityFramework.MySql.Startup), }; PreConfigure(elsa => @@ -153,6 +150,11 @@ public partial class WorkflowManagementHttpApiHostModule }); services.AddNotificationHandlersFrom(); + + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(Elsa.Webhooks.Api.Endpoints.List).Assembly); + }); } private void ConfigureEndpoints() @@ -378,6 +380,10 @@ public partial class WorkflowManagementHttpApiHostModule options.Audience = configuration["AuthServer:ApiName"]; }); + //services.AddElsaJwtBearerAuthentication(options => + //{ + //}); + if (isDevelopment) { services.AddAlwaysAllowAuthorization(); diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.cs b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.cs index 2da1d0e44..7dbe348f3 100644 --- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.cs +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.cs @@ -11,6 +11,7 @@ using LINGYUN.Abp.BlobStoring.OssManagement; using LINGYUN.Abp.Data.DbMigrator; using LINGYUN.Abp.Elsa; using LINGYUN.Abp.Elsa.Activities; +using LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql; using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.Http.Client.Wrapper; @@ -65,6 +66,7 @@ namespace LY.MicroService.WorkflowManagement; typeof(AbpSaasEntityFrameworkCoreModule), typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpEntityFrameworkCoreMySQLModule), + typeof(AbpElsaEntityFrameworkCoreMySqlModule), typeof(AbpAuthorizationOrganizationUnitsModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpTextTemplatingScribanModule), diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json index 7cdb2d4b6..5bf47d644 100644 --- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json @@ -1,6 +1,6 @@ { "AgileConfig": { - "IsEnabled": true, + "IsEnabled": false, "env": "DEV", "appId": "LINGYUN.Abp.Workflow", "secret": "1q2w3E*", @@ -51,6 +51,7 @@ "Elsa": { "Features": { "DefaultPersistence": { + "Enabled": true, "ConnectionStringIdentifier": "Workflow", "EntityFrameworkCore": { "MySql": { @@ -155,6 +156,7 @@ "AuthServer": { "Authority": "http://127.0.0.1:44385/", "ApiName": "lingyun-abp-application", + "ElsaClientId": "InternalServiceClient", "SwaggerClientId": "InternalServiceClient", "SwaggerClientSecret": "1q2w3E*" }, diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/create-migrations-initial.sql b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/create-migrations-initial.sql new file mode 100644 index 000000000..e3d96aa4b --- /dev/null +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/create-migrations-initial.sql @@ -0,0 +1,313 @@ +-- basic script + +CREATE TABLE IF NOT EXISTS `__EFMigrationsHistory` ( + `MigrationId` varchar(150) CHARACTER SET utf8mb4 NOT NULL, + `ProductVersion` varchar(32) CHARACTER SET utf8mb4 NOT NULL, + CONSTRAINT `PK___EFMigrationsHistory` PRIMARY KEY (`MigrationId`) +) CHARACTER SET utf8mb4; + +START TRANSACTION; + +ALTER DATABASE CHARACTER SET utf8mb4; + +CREATE TABLE `Bookmarks` ( + `Id` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `TenantId` varchar(255) CHARACTER SET utf8mb4 NULL, + `Hash` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `Model` longtext CHARACTER SET utf8mb4 NOT NULL, + `ModelType` longtext CHARACTER SET utf8mb4 NOT NULL, + `ActivityType` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `ActivityId` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `WorkflowInstanceId` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `CorrelationId` varchar(255) CHARACTER SET utf8mb4 NULL, + CONSTRAINT `PK_Bookmarks` PRIMARY KEY (`Id`) +) CHARACTER SET utf8mb4; + +CREATE TABLE `WorkflowDefinitions` ( + `Id` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `DefinitionId` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `TenantId` varchar(255) CHARACTER SET utf8mb4 NULL, + `Name` varchar(255) CHARACTER SET utf8mb4 NULL, + `DisplayName` longtext CHARACTER SET utf8mb4 NULL, + `Description` longtext CHARACTER SET utf8mb4 NULL, + `Version` int NOT NULL, + `IsSingleton` tinyint(1) NOT NULL, + `PersistenceBehavior` int NOT NULL, + `DeleteCompletedInstances` tinyint(1) NOT NULL, + `IsPublished` tinyint(1) NOT NULL, + `IsLatest` tinyint(1) NOT NULL, + `Tag` varchar(255) CHARACTER SET utf8mb4 NULL, + `Data` longtext CHARACTER SET utf8mb4 NULL, + CONSTRAINT `PK_WorkflowDefinitions` PRIMARY KEY (`Id`) +) CHARACTER SET utf8mb4; + +CREATE TABLE `WorkflowExecutionLogRecords` ( + `Id` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `TenantId` varchar(255) CHARACTER SET utf8mb4 NULL, + `WorkflowInstanceId` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `ActivityId` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `ActivityType` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `Timestamp` datetime(6) NOT NULL, + `EventName` longtext CHARACTER SET utf8mb4 NULL, + `Message` longtext CHARACTER SET utf8mb4 NULL, + `Source` longtext CHARACTER SET utf8mb4 NULL, + `Data` longtext CHARACTER SET utf8mb4 NULL, + CONSTRAINT `PK_WorkflowExecutionLogRecords` PRIMARY KEY (`Id`) +) CHARACTER SET utf8mb4; + +CREATE TABLE `WorkflowInstances` ( + `Id` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `DefinitionId` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `TenantId` varchar(255) CHARACTER SET utf8mb4 NULL, + `Version` int NOT NULL, + `WorkflowStatus` int NOT NULL, + `CorrelationId` varchar(255) CHARACTER SET utf8mb4 NULL, + `ContextType` varchar(255) CHARACTER SET utf8mb4 NULL, + `ContextId` varchar(255) CHARACTER SET utf8mb4 NULL, + `Name` varchar(255) CHARACTER SET utf8mb4 NULL, + `CreatedAt` datetime(6) NOT NULL, + `LastExecutedAt` datetime(6) NULL, + `FinishedAt` datetime(6) NULL, + `CancelledAt` datetime(6) NULL, + `FaultedAt` datetime(6) NULL, + `Data` longtext CHARACTER SET utf8mb4 NULL, + CONSTRAINT `PK_WorkflowInstances` PRIMARY KEY (`Id`) +) CHARACTER SET utf8mb4; + +CREATE INDEX `IX_Bookmark_ActivityId` ON `Bookmarks` (`ActivityId`); + +CREATE INDEX `IX_Bookmark_ActivityType` ON `Bookmarks` (`ActivityType`); + +CREATE INDEX `IX_Bookmark_ActivityType_TenantId_Hash` ON `Bookmarks` (`ActivityType`, `TenantId`, `Hash`); + +CREATE INDEX `IX_Bookmark_CorrelationId` ON `Bookmarks` (`CorrelationId`); + +CREATE INDEX `IX_Bookmark_Hash` ON `Bookmarks` (`Hash`); + +CREATE INDEX `IX_Bookmark_Hash_CorrelationId_TenantId` ON `Bookmarks` (`Hash`, `CorrelationId`, `TenantId`); + +CREATE INDEX `IX_Bookmark_TenantId` ON `Bookmarks` (`TenantId`); + +CREATE INDEX `IX_Bookmark_WorkflowInstanceId` ON `Bookmarks` (`WorkflowInstanceId`); + +CREATE UNIQUE INDEX `IX_WorkflowDefinition_DefinitionId_VersionId` ON `WorkflowDefinitions` (`DefinitionId`, `Version`); + +CREATE INDEX `IX_WorkflowDefinition_IsLatest` ON `WorkflowDefinitions` (`IsLatest`); + +CREATE INDEX `IX_WorkflowDefinition_IsPublished` ON `WorkflowDefinitions` (`IsPublished`); + +CREATE INDEX `IX_WorkflowDefinition_Name` ON `WorkflowDefinitions` (`Name`); + +CREATE INDEX `IX_WorkflowDefinition_Tag` ON `WorkflowDefinitions` (`Tag`); + +CREATE INDEX `IX_WorkflowDefinition_TenantId` ON `WorkflowDefinitions` (`TenantId`); + +CREATE INDEX `IX_WorkflowDefinition_Version` ON `WorkflowDefinitions` (`Version`); + +CREATE INDEX `IX_WorkflowExecutionLogRecord_ActivityId` ON `WorkflowExecutionLogRecords` (`ActivityId`); + +CREATE INDEX `IX_WorkflowExecutionLogRecord_ActivityType` ON `WorkflowExecutionLogRecords` (`ActivityType`); + +CREATE INDEX `IX_WorkflowExecutionLogRecord_TenantId` ON `WorkflowExecutionLogRecords` (`TenantId`); + +CREATE INDEX `IX_WorkflowExecutionLogRecord_Timestamp` ON `WorkflowExecutionLogRecords` (`Timestamp`); + +CREATE INDEX `IX_WorkflowExecutionLogRecord_WorkflowInstanceId` ON `WorkflowExecutionLogRecords` (`WorkflowInstanceId`); + +CREATE INDEX `IX_WorkflowInstance_ContextId` ON `WorkflowInstances` (`ContextId`); + +CREATE INDEX `IX_WorkflowInstance_ContextType` ON `WorkflowInstances` (`ContextType`); + +CREATE INDEX `IX_WorkflowInstance_CorrelationId` ON `WorkflowInstances` (`CorrelationId`); + +CREATE INDEX `IX_WorkflowInstance_CreatedAt` ON `WorkflowInstances` (`CreatedAt`); + +CREATE INDEX `IX_WorkflowInstance_DefinitionId` ON `WorkflowInstances` (`DefinitionId`); + +CREATE INDEX `IX_WorkflowInstance_FaultedAt` ON `WorkflowInstances` (`FaultedAt`); + +CREATE INDEX `IX_WorkflowInstance_FinishedAt` ON `WorkflowInstances` (`FinishedAt`); + +CREATE INDEX `IX_WorkflowInstance_LastExecutedAt` ON `WorkflowInstances` (`LastExecutedAt`); + +CREATE INDEX `IX_WorkflowInstance_Name` ON `WorkflowInstances` (`Name`); + +CREATE INDEX `IX_WorkflowInstance_TenantId` ON `WorkflowInstances` (`TenantId`); + +CREATE INDEX `IX_WorkflowInstance_WorkflowStatus` ON `WorkflowInstances` (`WorkflowStatus`); + +CREATE INDEX `IX_WorkflowInstance_WorkflowStatus_DefinitionId` ON `WorkflowInstances` (`WorkflowStatus`, `DefinitionId`); + +CREATE INDEX `IX_WorkflowInstance_WorkflowStatus_DefinitionId_Version` ON `WorkflowInstances` (`WorkflowStatus`, `DefinitionId`, `Version`); + +INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) +VALUES ('20210523093427_Initial', '5.0.10'); + +COMMIT; + +START TRANSACTION; + +ALTER TABLE `WorkflowInstances` MODIFY COLUMN `CorrelationId` varchar(255) CHARACTER SET utf8mb4 NOT NULL DEFAULT ''; + +ALTER TABLE `WorkflowInstances` ADD `LastExecutedActivityId` longtext CHARACTER SET utf8mb4 NULL; + +ALTER TABLE `WorkflowDefinitions` ADD `OutputStorageProviderName` longtext CHARACTER SET utf8mb4 NULL; + +INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) +VALUES ('20210611200027_Update21', '5.0.10'); + +COMMIT; + +START TRANSACTION; + +ALTER TABLE `WorkflowDefinitions` DROP COLUMN `OutputStorageProviderName`; + +ALTER TABLE `WorkflowInstances` RENAME `WorkflowInstances`; + +ALTER TABLE `WorkflowExecutionLogRecords` RENAME `WorkflowExecutionLogRecords`; + +ALTER TABLE `WorkflowDefinitions` RENAME `WorkflowDefinitions`; + +ALTER TABLE `Bookmarks` RENAME `Bookmarks`; + +INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) +VALUES ('20210923112211_Update23', '5.0.10'); + +COMMIT; + +START TRANSACTION; + +ALTER TABLE `WorkflowInstances` ADD `DefinitionVersionId` longtext CHARACTER SET utf8mb4 NOT NULL; + +ALTER TABLE `Bookmarks` MODIFY COLUMN `CorrelationId` varchar(255) CHARACTER SET utf8mb4 NOT NULL DEFAULT ''; + +INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) +VALUES ('20211215100204_Update24', '5.0.10'); + +COMMIT; + +START TRANSACTION; + +ALTER TABLE `WorkflowInstances` MODIFY COLUMN `DefinitionVersionId` varchar(255) CHARACTER SET utf8mb4 NOT NULL; + +CREATE INDEX `IX_WorkflowInstance_DefinitionVersionId` ON `WorkflowInstances` (`DefinitionVersionId`); + +INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) +VALUES ('20220120170050_Update241', '5.0.10'); + +COMMIT; + +START TRANSACTION; + +CREATE TABLE `Triggers` ( + `Id` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `TenantId` varchar(255) CHARACTER SET utf8mb4 NULL, + `Hash` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `Model` longtext CHARACTER SET utf8mb4 NOT NULL, + `ModelType` longtext CHARACTER SET utf8mb4 NOT NULL, + `ActivityType` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `ActivityId` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `WorkflowDefinitionId` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + CONSTRAINT `PK_Triggers` PRIMARY KEY (`Id`) +) CHARACTER SET utf8mb4; + +CREATE INDEX `IX_Trigger_ActivityId` ON `Triggers` (`ActivityId`); + +CREATE INDEX `IX_Trigger_ActivityType` ON `Triggers` (`ActivityType`); + +CREATE INDEX `IX_Trigger_ActivityType_TenantId_Hash` ON `Triggers` (`ActivityType`, `TenantId`, `Hash`); + +CREATE INDEX `IX_Trigger_Hash` ON `Triggers` (`Hash`); + +CREATE INDEX `IX_Trigger_Hash_TenantId` ON `Triggers` (`Hash`, `TenantId`); + +CREATE INDEX `IX_Trigger_TenantId` ON `Triggers` (`TenantId`); + +CREATE INDEX `IX_Trigger_WorkflowDefinitionId` ON `Triggers` (`WorkflowDefinitionId`); + +INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) +VALUES ('20220120204150_Update25', '5.0.10'); + +COMMIT; + +START TRANSACTION; + +ALTER TABLE `WorkflowDefinitions` ADD `CreatedAt` datetime(6) NOT NULL DEFAULT '0001-01-01 00:00:00'; + +INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) +VALUES ('20220512203646_Update28', '5.0.10'); + +COMMIT; + + +-- webhooks + +CREATE TABLE IF NOT EXISTS `__EFMigrationsHistory` ( + `MigrationId` varchar(150) CHARACTER SET utf8mb4 NOT NULL, + `ProductVersion` varchar(32) CHARACTER SET utf8mb4 NOT NULL, + CONSTRAINT `PK___EFMigrationsHistory` PRIMARY KEY (`MigrationId`) +) CHARACTER SET utf8mb4; + +START TRANSACTION; + +ALTER DATABASE CHARACTER SET utf8mb4; + +CREATE TABLE `WebhookDefinitions` ( + `Id` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `TenantId` varchar(255) CHARACTER SET utf8mb4 NULL, + `Name` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `Path` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `Description` varchar(255) CHARACTER SET utf8mb4 NULL, + `PayloadTypeName` varchar(255) CHARACTER SET utf8mb4 NULL, + `IsEnabled` tinyint(1) NOT NULL, + CONSTRAINT `PK_WebhookDefinitions` PRIMARY KEY (`Id`) +) CHARACTER SET utf8mb4; + +CREATE INDEX `IX_WebhookDefinition_Description` ON `WebhookDefinitions` (`Description`); + +CREATE INDEX `IX_WebhookDefinition_IsEnabled` ON `WebhookDefinitions` (`IsEnabled`); + +CREATE INDEX `IX_WebhookDefinition_Name` ON `WebhookDefinitions` (`Name`); + +CREATE INDEX `IX_WebhookDefinition_Path` ON `WebhookDefinitions` (`Path`); + +CREATE INDEX `IX_WebhookDefinition_PayloadTypeName` ON `WebhookDefinitions` (`PayloadTypeName`); + +CREATE INDEX `IX_WebhookDefinition_TenantId` ON `WebhookDefinitions` (`TenantId`); + +INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) +VALUES ('20210604065041_Initial', '5.0.10'); + +COMMIT; + + +-- workflow-settings + +CREATE TABLE IF NOT EXISTS `__EFMigrationsHistory` ( + `MigrationId` varchar(150) CHARACTER SET utf8mb4 NOT NULL, + `ProductVersion` varchar(32) CHARACTER SET utf8mb4 NOT NULL, + CONSTRAINT `PK___EFMigrationsHistory` PRIMARY KEY (`MigrationId`) +) CHARACTER SET utf8mb4; + +START TRANSACTION; + +ALTER DATABASE CHARACTER SET utf8mb4; + +CREATE TABLE `WorkflowSettings` ( + `Id` varchar(255) CHARACTER SET utf8mb4 NOT NULL, + `WorkflowBlueprintId` varchar(255) CHARACTER SET utf8mb4 NULL, + `Key` varchar(255) CHARACTER SET utf8mb4 NULL, + `Value` varchar(255) CHARACTER SET utf8mb4 NULL, + CONSTRAINT `PK_WorkflowSettings` PRIMARY KEY (`Id`) +) CHARACTER SET utf8mb4; + +CREATE INDEX `IX_WorkflowSetting_Key` ON `WorkflowSettings` (`Key`); + +CREATE INDEX `IX_WorkflowSetting_Value` ON `WorkflowSettings` (`Value`); + +CREATE INDEX `IX_WorkflowSetting_WorkflowBlueprintId` ON `WorkflowSettings` (`WorkflowBlueprintId`); + +INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) +VALUES ('20210730112043_Initial', '5.0.10'); + +COMMIT;