diff --git a/migrations/efcore-3.1.sh b/migrations/efcore-3.1.sh
index 37ff88b32..bf058a565 100644
--- a/migrations/efcore-3.1.sh
+++ b/migrations/efcore-3.1.sh
@@ -28,11 +28,6 @@ for module in "${mods[@]}"; do
echo "Provider path: ${providerPath:?}/${migrationsPath}"
echo "Migrations path: $migrationsPath"
echo "Connection string: ${connStrings[$provider]}"
-
- # 1. Delete the existing migration
- echo "Deleting existing migrations: ${providerPath:?}/${migrationsPath}/*V3_1.cs"
- find "${providerPath:?}/${migrationsPath}/" -type f -name "*V3_1*" -exec rm -f {} \;
- # rm -rf "${providerPath:?}/${migrationsPath}/*V3_1.cs"
# 2. Run the migrations command
dotnet ef migrations add V3_1 -c "$module"ElsaDbContext -p "$providerPath" -o "$migrationsPath" -- --connectionString "${connStrings[$provider]}"
diff --git a/src/bundles/Elsa.Server.Web/Program.cs b/src/bundles/Elsa.Server.Web/Program.cs
index 7dc88b704..734840368 100644
--- a/src/bundles/Elsa.Server.Web/Program.cs
+++ b/src/bundles/Elsa.Server.Web/Program.cs
@@ -15,6 +15,7 @@ using Elsa.MongoDb.Extensions;
using Elsa.MongoDb.Modules.Identity;
using Elsa.MongoDb.Modules.Management;
using Elsa.MongoDb.Modules.Runtime;
+using Elsa.Workflows.Management.Compression;
using Microsoft.Data.Sqlite;
using Microsoft.Extensions.Options;
using Proto.Persistence.Sqlite;
@@ -29,6 +30,7 @@ const bool useQuartz = true;
const bool useMassTransit = false;
const bool useMassTransitAzureServiceBus = true;
const bool useMassTransitRabbitMq = false;
+const bool useZipCompression = false;
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
@@ -106,6 +108,9 @@ services
else
ef.UseSqlite(sqliteConnectionString);
});
+
+ if(useZipCompression)
+ management.SetCompressionAlgorithm(nameof(GZip));
})
.UseWorkflowRuntime(runtime =>
{
diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.cs
deleted file mode 100644
index bc5a002fe..000000000
--- a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
-{
- ///
- public partial class V31 : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
-
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
-
- }
- }
-}
diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.Designer.cs
similarity index 99%
rename from src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.Designer.cs
rename to src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.Designer.cs
index 2c50cfc9f..33ad238d7 100644
--- a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.Designer.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.Designer.cs
@@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
{
[DbContext(typeof(ManagementElsaDbContext))]
- [Migration("20240203213856_V3_1")]
+ [Migration("20240203224836_V3_1")]
partial class V31
{
///
@@ -37,12 +37,6 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
b.Property("Data")
.HasColumnType("longtext");
- b.Property("DataCompressionAlgorithm")
- .HasColumnType("longtext");
-
- b.Property("DataFormat")
- .HasColumnType("longtext");
-
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("varchar(255)");
@@ -122,6 +116,12 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
b.Property("Data")
.HasColumnType("longtext");
+ b.Property("DataCompressionAlgorithm")
+ .HasColumnType("longtext");
+
+ b.Property("DataFormat")
+ .HasColumnType("longtext");
+
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("varchar(255)");
diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.cs
new file mode 100644
index 000000000..cb4f4002c
--- /dev/null
+++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.cs
@@ -0,0 +1,44 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
+{
+ ///
+ public partial class V31 : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "DataCompressionAlgorithm",
+ schema: "Elsa",
+ table: "WorkflowInstances",
+ type: "longtext",
+ nullable: true)
+ .Annotation("MySql:CharSet", "utf8mb4");
+
+ migrationBuilder.AddColumn(
+ name: "DataFormat",
+ schema: "Elsa",
+ table: "WorkflowInstances",
+ type: "longtext",
+ nullable: true)
+ .Annotation("MySql:CharSet", "utf8mb4");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "DataCompressionAlgorithm",
+ schema: "Elsa",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropColumn(
+ name: "DataFormat",
+ schema: "Elsa",
+ table: "WorkflowInstances");
+ }
+ }
+}
diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
index 4c8c437ca..360cc822a 100644
--- a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
@@ -34,12 +34,6 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
b.Property("Data")
.HasColumnType("longtext");
- b.Property("DataCompressionAlgorithm")
- .HasColumnType("longtext");
-
- b.Property("DataFormat")
- .HasColumnType("longtext");
-
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("varchar(255)");
@@ -119,6 +113,12 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
b.Property("Data")
.HasColumnType("longtext");
+ b.Property("DataCompressionAlgorithm")
+ .HasColumnType("longtext");
+
+ b.Property("DataFormat")
+ .HasColumnType("longtext");
+
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("varchar(255)");
diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.cs
deleted file mode 100644
index bc5b94327..000000000
--- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
-{
- ///
- public partial class V3_1 : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
-
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
-
- }
- }
-}
diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.Designer.cs
similarity index 99%
rename from src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.Designer.cs
rename to src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.Designer.cs
index 14a55bdaa..5e23fdf68 100644
--- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.Designer.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.Designer.cs
@@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
{
[DbContext(typeof(ManagementElsaDbContext))]
- [Migration("20240203213917_V3_1")]
+ [Migration("20240203224851_V3_1")]
partial class V3_1
{
///
@@ -40,12 +40,6 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
b.Property("Data")
.HasColumnType("text");
- b.Property("DataCompressionAlgorithm")
- .HasColumnType("text");
-
- b.Property("DataFormat")
- .HasColumnType("text");
-
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("text");
@@ -125,6 +119,12 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
b.Property("Data")
.HasColumnType("text");
+ b.Property("DataCompressionAlgorithm")
+ .HasColumnType("text");
+
+ b.Property("DataFormat")
+ .HasColumnType("text");
+
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("text");
diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.cs
new file mode 100644
index 000000000..338e634b8
--- /dev/null
+++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.cs
@@ -0,0 +1,42 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
+{
+ ///
+ public partial class V3_1 : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "DataCompressionAlgorithm",
+ schema: "Elsa",
+ table: "WorkflowInstances",
+ type: "text",
+ nullable: true);
+
+ migrationBuilder.AddColumn(
+ name: "DataFormat",
+ schema: "Elsa",
+ table: "WorkflowInstances",
+ type: "text",
+ nullable: true);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "DataCompressionAlgorithm",
+ schema: "Elsa",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropColumn(
+ name: "DataFormat",
+ schema: "Elsa",
+ table: "WorkflowInstances");
+ }
+ }
+}
diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
index 5c4390140..165e7004c 100644
--- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
@@ -37,12 +37,6 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
b.Property("Data")
.HasColumnType("text");
- b.Property("DataCompressionAlgorithm")
- .HasColumnType("text");
-
- b.Property("DataFormat")
- .HasColumnType("text");
-
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("text");
@@ -122,6 +116,12 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
b.Property("Data")
.HasColumnType("text");
+ b.Property("DataCompressionAlgorithm")
+ .HasColumnType("text");
+
+ b.Property("DataFormat")
+ .HasColumnType("text");
+
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("text");
diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.cs
deleted file mode 100644
index c921d4e91..000000000
--- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
-{
- ///
- public partial class V3_1 : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
-
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
-
- }
- }
-}
diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.Designer.cs
similarity index 99%
rename from src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.Designer.cs
rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.Designer.cs
index 8ba16ddeb..d03a97a20 100644
--- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.Designer.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.Designer.cs
@@ -12,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
{
[DbContext(typeof(ManagementElsaDbContext))]
- [Migration("20240203213902_V3_1")]
+ [Migration("20240203224841_V3_1")]
partial class V3_1
{
///
@@ -40,12 +40,6 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
b.Property("Data")
.HasColumnType("nvarchar(max)");
- b.Property("DataCompressionAlgorithm")
- .HasColumnType("nvarchar(max)");
-
- b.Property("DataFormat")
- .HasColumnType("nvarchar(max)");
-
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("nvarchar(450)");
@@ -125,6 +119,12 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
b.Property("Data")
.HasColumnType("nvarchar(max)");
+ b.Property("DataCompressionAlgorithm")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("DataFormat")
+ .HasColumnType("nvarchar(max)");
+
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("nvarchar(450)");
diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.cs
new file mode 100644
index 000000000..61c10249c
--- /dev/null
+++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.cs
@@ -0,0 +1,42 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
+{
+ ///
+ public partial class V3_1 : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "DataCompressionAlgorithm",
+ schema: "Elsa",
+ table: "WorkflowInstances",
+ type: "nvarchar(max)",
+ nullable: true);
+
+ migrationBuilder.AddColumn(
+ name: "DataFormat",
+ schema: "Elsa",
+ table: "WorkflowInstances",
+ type: "nvarchar(max)",
+ nullable: true);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "DataCompressionAlgorithm",
+ schema: "Elsa",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropColumn(
+ name: "DataFormat",
+ schema: "Elsa",
+ table: "WorkflowInstances");
+ }
+ }
+}
diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
index 212aff9f7..8fc36160a 100644
--- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
@@ -37,12 +37,6 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
b.Property("Data")
.HasColumnType("nvarchar(max)");
- b.Property("DataCompressionAlgorithm")
- .HasColumnType("nvarchar(max)");
-
- b.Property("DataFormat")
- .HasColumnType("nvarchar(max)");
-
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("nvarchar(450)");
@@ -122,6 +116,12 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
b.Property("Data")
.HasColumnType("nvarchar(max)");
+ b.Property("DataCompressionAlgorithm")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("DataFormat")
+ .HasColumnType("nvarchar(max)");
+
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("nvarchar(450)");
diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.cs
deleted file mode 100644
index 214842642..000000000
--- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
-{
- ///
- public partial class V3_1 : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
-
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
-
- }
- }
-}
diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.Designer.cs
similarity index 99%
rename from src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.Designer.cs
rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.Designer.cs
index cb90489c6..8ff91fc79 100644
--- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.Designer.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.Designer.cs
@@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
{
[DbContext(typeof(ManagementElsaDbContext))]
- [Migration("20240203213909_V3_1")]
+ [Migration("20240203224846_V3_1")]
partial class V3_1
{
///
@@ -35,12 +35,6 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
b.Property("Data")
.HasColumnType("TEXT");
- b.Property("DataCompressionAlgorithm")
- .HasColumnType("TEXT");
-
- b.Property("DataFormat")
- .HasColumnType("TEXT");
-
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("TEXT");
@@ -121,6 +115,12 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
b.Property("Data")
.HasColumnType("TEXT");
+ b.Property("DataCompressionAlgorithm")
+ .HasColumnType("TEXT");
+
+ b.Property("DataFormat")
+ .HasColumnType("TEXT");
+
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("TEXT");
diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.cs
new file mode 100644
index 000000000..1cba2039d
--- /dev/null
+++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.cs
@@ -0,0 +1,38 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
+{
+ ///
+ public partial class V3_1 : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "DataCompressionAlgorithm",
+ table: "WorkflowInstances",
+ type: "TEXT",
+ nullable: true);
+
+ migrationBuilder.AddColumn(
+ name: "DataFormat",
+ table: "WorkflowInstances",
+ type: "TEXT",
+ nullable: true);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "DataCompressionAlgorithm",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropColumn(
+ name: "DataFormat",
+ table: "WorkflowInstances");
+ }
+ }
+}
diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
index 3f05f511d..b044063d9 100644
--- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs
@@ -32,12 +32,6 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
b.Property("Data")
.HasColumnType("TEXT");
- b.Property("DataCompressionAlgorithm")
- .HasColumnType("TEXT");
-
- b.Property("DataFormat")
- .HasColumnType("TEXT");
-
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("TEXT");
@@ -118,6 +112,12 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
b.Property("Data")
.HasColumnType("TEXT");
+ b.Property("DataCompressionAlgorithm")
+ .HasColumnType("TEXT");
+
+ b.Property("DataFormat")
+ .HasColumnType("TEXT");
+
b.Property("DefinitionId")
.IsRequired()
.HasColumnType("TEXT");
diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Configurations.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Configurations.cs
index 547ba59df..4d87d67ea 100644
--- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Configurations.cs
+++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Configurations.cs
@@ -19,8 +19,6 @@ internal class Configurations : IEntityTypeConfiguration, IE
builder.Ignore(x => x.CustomProperties);
builder.Ignore(x => x.Options);
builder.Property("Data");
- builder.Property("DataFormat");
- builder.Property("DataCompressionAlgorithm");
builder.Property("UsableAsActivity");
builder.Property(x => x.ToolVersion).HasConversion(VersionToStringConverter, StringToVersionConverter);
@@ -36,6 +34,8 @@ internal class Configurations : IEntityTypeConfiguration, IE
{
builder.Ignore(x => x.WorkflowState);
builder.Property("Data");
+ builder.Property("DataFormat");
+ builder.Property("DataCompressionAlgorithm");
builder.Property(x => x.Status).HasConversion();
builder.Property(x => x.SubStatus).HasConversion();
builder.HasIndex(x => new { x.Status, x.SubStatus, x.DefinitionId, x.Version }).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.Status)}_{nameof(WorkflowInstance.SubStatus)}_{nameof(WorkflowInstance.DefinitionId)}_{nameof(WorkflowInstance.Version)}");
diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs
index 814257271..54c9eaff5 100644
--- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs
+++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs
@@ -151,6 +151,7 @@ public class EFCoreWorkflowInstanceStore : IWorkflowInstanceStore
return;
var data = entity.WorkflowState;
+ var dataFormat = (string?)managementElsaDbContext.Entry(entity).Property("DataFormat").CurrentValue ?? "Json";
var json = (string?)managementElsaDbContext.Entry(entity).Property("Data").CurrentValue;
var compressionAlgorithm = (string?)managementElsaDbContext.Entry(entity).Property("DataCompressionAlgorithm").CurrentValue ?? nameof(None);
var compressionStrategy = _compressionStrategyResolver.Resolve(compressionAlgorithm);
diff --git a/src/modules/Elsa.Workflows.Management/Compression/GZip.cs b/src/modules/Elsa.Workflows.Management/Compression/GZip.cs
index 5dba3da21..3e45b7257 100644
--- a/src/modules/Elsa.Workflows.Management/Compression/GZip.cs
+++ b/src/modules/Elsa.Workflows.Management/Compression/GZip.cs
@@ -16,6 +16,7 @@ public class GZip : ICompressionStrategy
using var output = new MemoryStream();
await using var compressionStream = new GZipStream(output, CompressionMode.Compress);
await compressionStream.WriteAsync(inputBytes, 0, inputBytes.Length, cancellationToken);
+ await compressionStream.FlushAsync(cancellationToken);
return Convert.ToBase64String(output.ToArray());
}
@@ -27,7 +28,6 @@ public class GZip : ICompressionStrategy
using var inputMemoryStream = new MemoryStream(inputBytes);
await using var decompressionStream = new GZipStream(inputMemoryStream, CompressionMode.Decompress);
using var outputMemoryStream = new MemoryStream();
-
await decompressionStream.CopyToAsync(outputMemoryStream, cancellationToken);
var decompressedBytes = outputMemoryStream.ToArray();
diff --git a/src/modules/Elsa.Workflows.Management/Features/WorkflowManagementFeature.cs b/src/modules/Elsa.Workflows.Management/Features/WorkflowManagementFeature.cs
index 18971ff3b..5ce9ceb9f 100644
--- a/src/modules/Elsa.Workflows.Management/Features/WorkflowManagementFeature.cs
+++ b/src/modules/Elsa.Workflows.Management/Features/WorkflowManagementFeature.cs
@@ -42,6 +42,8 @@ public class WorkflowManagementFeature : FeatureBase
private const string LookupsCategory = "Lookups";
private const string DynamicCategory = "Dynamic";
+ private string CompressionAlgorithm { get; set; } = nameof(None);
+
///
public WorkflowManagementFeature(IModule module) : base(module)
{
@@ -144,6 +146,15 @@ public class WorkflowManagementFeature : FeatureBase
VariableDescriptors.AddRange(descriptors);
return this;
}
+
+ ///
+ /// Sets the compression algorithm to use for compressing workflow state.
+ ///
+ public WorkflowManagementFeature SetCompressionAlgorithm(string algorithm)
+ {
+ CompressionAlgorithm = algorithm;
+ return this;
+ }
///
public override void Configure()
@@ -189,7 +200,10 @@ public class WorkflowManagementFeature : FeatureBase
foreach (var activityType in ActivityTypes)
options.ActivityTypes.Add(activityType);
- foreach (var descriptor in VariableDescriptors) options.VariableDescriptors.Add(descriptor);
+ foreach (var descriptor in VariableDescriptors)
+ options.VariableDescriptors.Add(descriptor);
+
+ options.CompressionAlgorithm = CompressionAlgorithm;
});
}
}
\ No newline at end of file