From 6ae59f06d65d96e205c5b2e1202bc34c22ec07f6 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 18 Jul 2023 11:20:00 +0200 Subject: [PATCH] Include activity version with execution log --- .../Extensions/ActivityExtensions.cs | 5 +++++ .../Models/ExecutionLogRecord.cs | 2 ++ .../Elsa.Dapper.Migrations/Runtime/Initial.cs | 2 ++ .../Records/WorkflowExecutionLogRecordRecord.cs | 1 + .../Services/DapperWorkflowExecutionLogStore.cs | 2 ++ .../MySqlDesignTimeDbContextFactoryBase.cs | 5 +++++ .../Elsa.EntityFrameworkCore.MySql.csproj | 4 ---- ...ner.cs => 20230718091027_Initial.Designer.cs} | 11 ++++++++++- ...3833_Initial.cs => 20230718091027_Initial.cs} | 16 +++++++++++++++- .../Runtime/RuntimeElsaDbContextModelSnapshot.cs | 9 +++++++++ .../PostgreSqlDesignTimeDbContextFactoryBase.cs | 5 +++++ .../Elsa.EntityFrameworkCore.PostgreSql.csproj | 4 ---- ...ner.cs => 20230718091049_Initial.Designer.cs} | 11 ++++++++++- ...3914_Initial.cs => 20230718091049_Initial.cs} | 16 +++++++++++++++- .../Runtime/RuntimeElsaDbContextModelSnapshot.cs | 9 +++++++++ .../SqlServerDesignTimeDbContextFactoryBase.cs | 5 +++++ .../Elsa.EntityFrameworkCore.SqlServer.csproj | 4 ---- ...ner.cs => 20230718091114_Initial.Designer.cs} | 11 ++++++++++- ...3937_Initial.cs => 20230718091114_Initial.cs} | 16 +++++++++++++++- .../Runtime/RuntimeElsaDbContextModelSnapshot.cs | 9 +++++++++ .../SqliteDesignTimeDbContextFactoryBase.cs | 5 +++++ .../Elsa.EntityFrameworkCore.Sqlite.csproj | 4 ---- ...ner.cs => 20230718091102_Initial.Designer.cs} | 11 ++++++++++- ...1618_Initial.cs => 20230718091102_Initial.cs} | 11 +++++++++++ .../Runtime/RuntimeElsaDbContextModelSnapshot.cs | 9 +++++++++ .../Modules/Runtime/Configurations.cs | 2 ++ .../Modules/Runtime/CreateIndices.cs | 1 + .../WorkflowInstances/Journal/List/Endpoint.cs | 1 + .../WorkflowInstances/Journal/List/Models.cs | 1 + .../ActivityExecutionContextExtensions.cs | 1 + .../Models/WorkflowExecutionLogEntry.cs | 1 + .../Entities/WorkflowExecutionLogRecord.cs | 5 +++++ .../PersistWorkflowExecutionLogMiddleware.cs | 1 + 33 files changed, 177 insertions(+), 23 deletions(-) rename src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/{20230709103833_Initial.Designer.cs => 20230718091027_Initial.Designer.cs} (95%) rename src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/{20230709103833_Initial.cs => 20230718091027_Initial.cs} (95%) rename src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/{20230709103914_Initial.Designer.cs => 20230718091049_Initial.Designer.cs} (95%) rename src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/{20230709103914_Initial.cs => 20230718091049_Initial.cs} (94%) rename src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/{20230709103937_Initial.Designer.cs => 20230718091114_Initial.Designer.cs} (95%) rename src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/{20230709103937_Initial.cs => 20230718091114_Initial.cs} (94%) rename src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/{20230709101618_Initial.Designer.cs => 20230718091102_Initial.Designer.cs} (95%) rename src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/{20230709101618_Initial.cs => 20230718091102_Initial.cs} (94%) diff --git a/src/clients/Elsa.Api.Client/Extensions/ActivityExtensions.cs b/src/clients/Elsa.Api.Client/Extensions/ActivityExtensions.cs index 09e768ea7..7071a51d0 100644 --- a/src/clients/Elsa.Api.Client/Extensions/ActivityExtensions.cs +++ b/src/clients/Elsa.Api.Client/Extensions/ActivityExtensions.cs @@ -12,6 +12,11 @@ public static class ActivityExtensions /// Gets the type name of the specified activity. /// public static string GetTypeName(this JsonObject activity) => activity.GetProperty("type")!; + + /// + /// Gets the version of the specified activity. + /// + public static int GetVersion(this JsonObject activity) => activity.GetProperty("version"); /// /// Gets the ID of the specified activity. diff --git a/src/clients/Elsa.Api.Client/Resources/WorkflowInstances/Models/ExecutionLogRecord.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowInstances/Models/ExecutionLogRecord.cs index e7c599bb6..ccca79fbd 100644 --- a/src/clients/Elsa.Api.Client/Resources/WorkflowInstances/Models/ExecutionLogRecord.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowInstances/Models/ExecutionLogRecord.cs @@ -8,6 +8,7 @@ namespace Elsa.Api.Client.Resources.WorkflowInstances.Models; /// The ID of the parent activity instance associated with the execution log record. /// The ID of the activity associated with the execution log record. /// The type of the activity associated with the execution log record. +/// The version of the activity type associated with the execution log record. /// The ID of the node associated with the execution log record. /// The timestamp of the execution log record. /// The sequence of the execution log record. @@ -22,6 +23,7 @@ public record ExecutionLogRecord( string? ParentActivityInstanceId, string ActivityId, string ActivityType, + int ActivityTypeVersion, string NodeId, DateTimeOffset Timestamp, long Sequence, diff --git a/src/modules/Elsa.Dapper.Migrations/Runtime/Initial.cs b/src/modules/Elsa.Dapper.Migrations/Runtime/Initial.cs index d9aa0ca8f..a1fa795e8 100644 --- a/src/modules/Elsa.Dapper.Migrations/Runtime/Initial.cs +++ b/src/modules/Elsa.Dapper.Migrations/Runtime/Initial.cs @@ -42,6 +42,7 @@ public class Initial : Migration .WithColumn("ParentActivityInstanceId").AsString().Nullable() .WithColumn("ActivityId").AsString().NotNullable() .WithColumn("ActivityType").AsString().NotNullable() + .WithColumn("ActivityTypeVersion").AsInt32().NotNullable() .WithColumn("NodeId").AsString().NotNullable() .WithColumn("EventName").AsString().Nullable() .WithColumn("Message").AsString().Nullable() @@ -61,6 +62,7 @@ public class Initial : Migration .WithColumn("ParentActivityInstanceId").AsString().Nullable() .WithColumn("ActivityId").AsString().NotNullable() .WithColumn("ActivityType").AsString().NotNullable() + .WithColumn("ActivityTypeVersion").AsInt32().NotNullable() .WithColumn("NodeId").AsString().NotNullable() .WithColumn("EventName").AsString().Nullable() .WithColumn("Message").AsString().Nullable() diff --git a/src/modules/Elsa.Dapper/Modules/Runtime/Records/WorkflowExecutionLogRecordRecord.cs b/src/modules/Elsa.Dapper/Modules/Runtime/Records/WorkflowExecutionLogRecordRecord.cs index e73e20857..3610a1e68 100644 --- a/src/modules/Elsa.Dapper/Modules/Runtime/Records/WorkflowExecutionLogRecordRecord.cs +++ b/src/modules/Elsa.Dapper/Modules/Runtime/Records/WorkflowExecutionLogRecordRecord.cs @@ -10,6 +10,7 @@ internal class WorkflowExecutionLogRecordRecord public string? ParentActivityInstanceId { get; set; } public string ActivityId { get; set; } = default!; public string ActivityType { get; set; } = default!; + public int ActivityTypeVersion { get; set; } public string NodeId { get; set; } = default!; public DateTimeOffset Timestamp { get; set; } public string? EventName { get; set; } diff --git a/src/modules/Elsa.Dapper/Modules/Runtime/Services/DapperWorkflowExecutionLogStore.cs b/src/modules/Elsa.Dapper/Modules/Runtime/Services/DapperWorkflowExecutionLogStore.cs index d74118010..ca4de8ade 100644 --- a/src/modules/Elsa.Dapper/Modules/Runtime/Services/DapperWorkflowExecutionLogStore.cs +++ b/src/modules/Elsa.Dapper/Modules/Runtime/Services/DapperWorkflowExecutionLogStore.cs @@ -103,6 +103,7 @@ public class DapperWorkflowExecutionLogStore : IWorkflowExecutionLogStore ParentActivityInstanceId = source.ParentActivityInstanceId, ActivityId = source.ActivityId, ActivityType = source.ActivityType, + ActivityTypeVersion = source.ActivityTypeVersion, NodeId = source.NodeId, Timestamp = source.Timestamp, EventName = source.EventName, @@ -125,6 +126,7 @@ public class DapperWorkflowExecutionLogStore : IWorkflowExecutionLogStore ParentActivityInstanceId = source.ParentActivityInstanceId, ActivityId = source.ActivityId, ActivityType = source.ActivityType, + ActivityTypeVersion = source.ActivityTypeVersion, NodeId = source.NodeId, Timestamp = source.Timestamp, EventName = source.EventName, diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Abstractions/MySqlDesignTimeDbContextFactoryBase.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Abstractions/MySqlDesignTimeDbContextFactoryBase.cs index ed5ac8506..2ef2cf4ea 100644 --- a/src/modules/Elsa.EntityFrameworkCore.MySql/Abstractions/MySqlDesignTimeDbContextFactoryBase.cs +++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Abstractions/MySqlDesignTimeDbContextFactoryBase.cs @@ -4,8 +4,13 @@ using Microsoft.EntityFrameworkCore.Design; namespace Elsa.EntityFrameworkCore.MySql.Abstractions; +/// +/// A base class for implementing a design-time factory for creating a with a MySQL database. +/// +/// The type of the . public abstract class MySqlDesignTimeDbContextFactoryBase : IDesignTimeDbContextFactory where TDbContext : DbContext { + /// public TDbContext CreateDbContext(string[] args) { var connectionString = args.Any() ? args[0] : "Data Source=local"; diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Elsa.EntityFrameworkCore.MySql.csproj b/src/modules/Elsa.EntityFrameworkCore.MySql/Elsa.EntityFrameworkCore.MySql.csproj index 6789fe2db..604c97036 100644 --- a/src/modules/Elsa.EntityFrameworkCore.MySql/Elsa.EntityFrameworkCore.MySql.csproj +++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Elsa.EntityFrameworkCore.MySql.csproj @@ -22,9 +22,5 @@ - - - - diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230709103833_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230718091027_Initial.Designer.cs similarity index 95% rename from src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230709103833_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230718091027_Initial.Designer.cs index 9da6b96f3..916238fe0 100644 --- a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230709103833_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230718091027_Initial.Designer.cs @@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime { [DbContext(typeof(RuntimeElsaDbContext))] - [Migration("20230709103833_Initial")] + [Migration("20230718091027_Initial")] partial class Initial { /// @@ -179,6 +179,9 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime .IsRequired() .HasColumnType("varchar(255)"); + b.Property("ActivityTypeVersion") + .HasColumnType("int"); + b.Property("EventName") .HasColumnType("varchar(255)"); @@ -226,6 +229,9 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime b.HasIndex("ActivityType") .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + b.HasIndex("ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion"); + b.HasIndex("EventName") .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); @@ -247,6 +253,9 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime b.HasIndex("WorkflowVersion") .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + b.HasIndex("ActivityType", "ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion"); + b.HasIndex("Timestamp", "Sequence") .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence"); diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230709103833_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230718091027_Initial.cs similarity index 95% rename from src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230709103833_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230718091027_Initial.cs index d1e720b8d..30d84ac07 100644 --- a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230709103833_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/20230718091027_Initial.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using System; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable @@ -60,6 +61,7 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime .Annotation("MySql:CharSet", "utf8mb4"), ActivityType = table.Column(type: "varchar(255)", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), + ActivityTypeVersion = table.Column(type: "int", nullable: false), NodeId = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Timestamp = table.Column(type: "datetime(6)", nullable: false), @@ -181,6 +183,18 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime table: "WorkflowExecutionLogRecords", column: "ActivityType"); + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + columns: new[] { "ActivityType", "ActivityTypeVersion" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityTypeVersion", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "ActivityTypeVersion"); + migrationBuilder.CreateIndex( name: "IX_WorkflowExecutionLogRecord_EventName", schema: "Elsa", diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs index e8b17ecd9..6fc758516 100644 --- a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs @@ -176,6 +176,9 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime .IsRequired() .HasColumnType("varchar(255)"); + b.Property("ActivityTypeVersion") + .HasColumnType("int"); + b.Property("EventName") .HasColumnType("varchar(255)"); @@ -223,6 +226,9 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime b.HasIndex("ActivityType") .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + b.HasIndex("ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion"); + b.HasIndex("EventName") .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); @@ -244,6 +250,9 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime b.HasIndex("WorkflowVersion") .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + b.HasIndex("ActivityType", "ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion"); + b.HasIndex("Timestamp", "Sequence") .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence"); diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Abstractions/PostgreSqlDesignTimeDbContextFactoryBase.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Abstractions/PostgreSqlDesignTimeDbContextFactoryBase.cs index e483dc77e..570fdfe78 100644 --- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Abstractions/PostgreSqlDesignTimeDbContextFactoryBase.cs +++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Abstractions/PostgreSqlDesignTimeDbContextFactoryBase.cs @@ -4,8 +4,13 @@ using Microsoft.EntityFrameworkCore.Design; namespace Elsa.EntityFrameworkCore.PostgreSql.Abstractions; +/// +/// A base class for implementing a design-time factory for creating a with a PostgreSQL database. +/// +/// The type of the . public abstract class PostgreSqlDesignTimeDbContextFactoryBase : IDesignTimeDbContextFactory where TDbContext : DbContext { + /// public TDbContext CreateDbContext(string[] args) { var connectionString = args.Any() ? args[0] : "Data Source=local"; diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Elsa.EntityFrameworkCore.PostgreSql.csproj b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Elsa.EntityFrameworkCore.PostgreSql.csproj index f10242961..8e61316aa 100644 --- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Elsa.EntityFrameworkCore.PostgreSql.csproj +++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Elsa.EntityFrameworkCore.PostgreSql.csproj @@ -22,9 +22,5 @@ - - - - diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230709103914_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230718091049_Initial.Designer.cs similarity index 95% rename from src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230709103914_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230718091049_Initial.Designer.cs index f850a75ca..17786473a 100644 --- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230709103914_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230718091049_Initial.Designer.cs @@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime { [DbContext(typeof(RuntimeElsaDbContext))] - [Migration("20230709103914_Initial")] + [Migration("20230718091049_Initial")] partial class Initial { /// @@ -182,6 +182,9 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime .IsRequired() .HasColumnType("text"); + b.Property("ActivityTypeVersion") + .HasColumnType("integer"); + b.Property("EventName") .HasColumnType("text"); @@ -229,6 +232,9 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime b.HasIndex("ActivityType") .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + b.HasIndex("ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion"); + b.HasIndex("EventName") .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); @@ -250,6 +256,9 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime b.HasIndex("WorkflowVersion") .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + b.HasIndex("ActivityType", "ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion"); + b.HasIndex("Timestamp", "Sequence") .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence"); diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230709103914_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230718091049_Initial.cs similarity index 94% rename from src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230709103914_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230718091049_Initial.cs index 890ea4140..2eb64c3dc 100644 --- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230709103914_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/20230718091049_Initial.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using System; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable @@ -43,6 +44,7 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime ParentActivityInstanceId = table.Column(type: "text", nullable: true), ActivityId = table.Column(type: "text", nullable: false), ActivityType = table.Column(type: "text", nullable: false), + ActivityTypeVersion = table.Column(type: "integer", nullable: false), NodeId = table.Column(type: "text", nullable: false), Timestamp = table.Column(type: "timestamp with time zone", nullable: false), Sequence = table.Column(type: "bigint", nullable: false), @@ -143,6 +145,18 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime table: "WorkflowExecutionLogRecords", column: "ActivityType"); + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + columns: new[] { "ActivityType", "ActivityTypeVersion" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityTypeVersion", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "ActivityTypeVersion"); + migrationBuilder.CreateIndex( name: "IX_WorkflowExecutionLogRecord_EventName", schema: "Elsa", diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs index 172da0e96..d69c38b75 100644 --- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs @@ -179,6 +179,9 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime .IsRequired() .HasColumnType("text"); + b.Property("ActivityTypeVersion") + .HasColumnType("integer"); + b.Property("EventName") .HasColumnType("text"); @@ -226,6 +229,9 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime b.HasIndex("ActivityType") .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + b.HasIndex("ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion"); + b.HasIndex("EventName") .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); @@ -247,6 +253,9 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime b.HasIndex("WorkflowVersion") .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + b.HasIndex("ActivityType", "ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion"); + b.HasIndex("Timestamp", "Sequence") .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence"); diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs index 5af4ced17..d7a7b6030 100644 --- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs @@ -4,8 +4,13 @@ using Microsoft.EntityFrameworkCore.Design; namespace Elsa.EntityFrameworkCore.SqlServer.Abstractions; +/// +/// A base class for implementing a design-time factory for creating a with a SQL Server database. +/// +/// The type of the . public abstract class SqlServerDesignTimeDbContextFactoryBase : IDesignTimeDbContextFactory where TDbContext : DbContext { + /// public TDbContext CreateDbContext(string[] args) { var builder = new DbContextOptionsBuilder(); diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Elsa.EntityFrameworkCore.SqlServer.csproj b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Elsa.EntityFrameworkCore.SqlServer.csproj index 6c8db1db5..f87665590 100644 --- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Elsa.EntityFrameworkCore.SqlServer.csproj +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Elsa.EntityFrameworkCore.SqlServer.csproj @@ -23,8 +23,4 @@ - - - - \ No newline at end of file diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230709103937_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230718091114_Initial.Designer.cs similarity index 95% rename from src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230709103937_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230718091114_Initial.Designer.cs index bad91c902..46aa25512 100644 --- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230709103937_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230718091114_Initial.Designer.cs @@ -12,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime { [DbContext(typeof(RuntimeElsaDbContext))] - [Migration("20230709103937_Initial")] + [Migration("20230718091114_Initial")] partial class Initial { /// @@ -182,6 +182,9 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime .IsRequired() .HasColumnType("nvarchar(450)"); + b.Property("ActivityTypeVersion") + .HasColumnType("int"); + b.Property("EventName") .HasColumnType("nvarchar(450)"); @@ -229,6 +232,9 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime b.HasIndex("ActivityType") .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + b.HasIndex("ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion"); + b.HasIndex("EventName") .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); @@ -250,6 +256,9 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime b.HasIndex("WorkflowVersion") .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + b.HasIndex("ActivityType", "ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion"); + b.HasIndex("Timestamp", "Sequence") .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence"); diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230709103937_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230718091114_Initial.cs similarity index 94% rename from src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230709103937_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230718091114_Initial.cs index 341834c02..3dcfd7425 100644 --- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230709103937_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20230718091114_Initial.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using System; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable @@ -43,6 +44,7 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime ParentActivityInstanceId = table.Column(type: "nvarchar(450)", nullable: true), ActivityId = table.Column(type: "nvarchar(450)", nullable: false), ActivityType = table.Column(type: "nvarchar(450)", nullable: false), + ActivityTypeVersion = table.Column(type: "int", nullable: false), NodeId = table.Column(type: "nvarchar(max)", nullable: false), Timestamp = table.Column(type: "datetimeoffset", nullable: false), Sequence = table.Column(type: "bigint", nullable: false), @@ -143,6 +145,18 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime table: "WorkflowExecutionLogRecords", column: "ActivityType"); + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + columns: new[] { "ActivityType", "ActivityTypeVersion" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityTypeVersion", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "ActivityTypeVersion"); + migrationBuilder.CreateIndex( name: "IX_WorkflowExecutionLogRecord_EventName", schema: "Elsa", diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs index bdef7ef08..3f6347eff 100644 --- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs @@ -179,6 +179,9 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime .IsRequired() .HasColumnType("nvarchar(450)"); + b.Property("ActivityTypeVersion") + .HasColumnType("int"); + b.Property("EventName") .HasColumnType("nvarchar(450)"); @@ -226,6 +229,9 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime b.HasIndex("ActivityType") .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + b.HasIndex("ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion"); + b.HasIndex("EventName") .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); @@ -247,6 +253,9 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime b.HasIndex("WorkflowVersion") .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + b.HasIndex("ActivityType", "ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion"); + b.HasIndex("Timestamp", "Sequence") .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence"); diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs index 3a276e7a2..2722e122b 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs @@ -4,8 +4,13 @@ using Microsoft.EntityFrameworkCore.Design; namespace Elsa.EntityFrameworkCore.Sqlite.Abstractions; +/// +/// A base class for implementing a design-time factory for creating a with a SQLite database. +/// +/// The type of the . public abstract class SqliteDesignTimeDbContextFactoryBase : IDesignTimeDbContextFactory where TDbContext : DbContext { + /// public TDbContext CreateDbContext(string[] args) { var builder = new DbContextOptionsBuilder(); diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Elsa.EntityFrameworkCore.Sqlite.csproj b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Elsa.EntityFrameworkCore.Sqlite.csproj index 7e0c99b8d..0e97ac08e 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Elsa.EntityFrameworkCore.Sqlite.csproj +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Elsa.EntityFrameworkCore.Sqlite.csproj @@ -24,8 +24,4 @@ - - - - \ No newline at end of file diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230709101618_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230718091102_Initial.Designer.cs similarity index 95% rename from src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230709101618_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230718091102_Initial.Designer.cs index 90668456f..d06bd8ee1 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230709101618_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230718091102_Initial.Designer.cs @@ -10,7 +10,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime { [DbContext(typeof(RuntimeElsaDbContext))] - [Migration("20230709101618_Initial")] + [Migration("20230718091102_Initial")] partial class Initial { /// @@ -177,6 +177,9 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime .IsRequired() .HasColumnType("TEXT"); + b.Property("ActivityTypeVersion") + .HasColumnType("INTEGER"); + b.Property("EventName") .HasColumnType("TEXT"); @@ -225,6 +228,9 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime b.HasIndex("ActivityType") .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + b.HasIndex("ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion"); + b.HasIndex("EventName") .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); @@ -246,6 +252,9 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime b.HasIndex("WorkflowVersion") .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + b.HasIndex("ActivityType", "ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion"); + b.HasIndex("Timestamp", "Sequence") .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence"); diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230709101618_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230718091102_Initial.cs similarity index 94% rename from src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230709101618_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230718091102_Initial.cs index 72116c866..2a5fb0715 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230709101618_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20230718091102_Initial.cs @@ -38,6 +38,7 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime ParentActivityInstanceId = table.Column(type: "TEXT", nullable: true), ActivityId = table.Column(type: "TEXT", nullable: false), ActivityType = table.Column(type: "TEXT", nullable: false), + ActivityTypeVersion = table.Column(type: "INTEGER", nullable: false), NodeId = table.Column(type: "TEXT", nullable: false), Timestamp = table.Column(type: "TEXT", nullable: false), Sequence = table.Column(type: "INTEGER", nullable: false), @@ -128,6 +129,16 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime table: "WorkflowExecutionLogRecords", column: "ActivityType"); + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion", + table: "WorkflowExecutionLogRecords", + columns: new[] { "ActivityType", "ActivityTypeVersion" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityTypeVersion", + table: "WorkflowExecutionLogRecords", + column: "ActivityTypeVersion"); + migrationBuilder.CreateIndex( name: "IX_WorkflowExecutionLogRecord_EventName", table: "WorkflowExecutionLogRecords", diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs index cd79e2fe3..e6477c87a 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs @@ -174,6 +174,9 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime .IsRequired() .HasColumnType("TEXT"); + b.Property("ActivityTypeVersion") + .HasColumnType("INTEGER"); + b.Property("EventName") .HasColumnType("TEXT"); @@ -222,6 +225,9 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime b.HasIndex("ActivityType") .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + b.HasIndex("ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion"); + b.HasIndex("EventName") .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); @@ -243,6 +249,9 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime b.HasIndex("WorkflowVersion") .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + b.HasIndex("ActivityType", "ActivityTypeVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion"); + b.HasIndex("Timestamp", "Sequence") .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence"); diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/Configurations.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/Configurations.cs index 29dfc8910..4ebbdded4 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/Configurations.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/Configurations.cs @@ -63,6 +63,8 @@ public class Configurations : builder.HasIndex(x => x.ParentActivityInstanceId).HasDatabaseName($"IX_{nameof(WorkflowExecutionLogRecord)}_{nameof(WorkflowExecutionLogRecord.ParentActivityInstanceId)}"); builder.HasIndex(x => x.ActivityId).HasDatabaseName($"IX_{nameof(WorkflowExecutionLogRecord)}_{nameof(WorkflowExecutionLogRecord.ActivityId)}"); builder.HasIndex(x => x.ActivityType).HasDatabaseName($"IX_{nameof(WorkflowExecutionLogRecord)}_{nameof(WorkflowExecutionLogRecord.ActivityType)}"); + builder.HasIndex(x => x.ActivityTypeVersion).HasDatabaseName($"IX_{nameof(WorkflowExecutionLogRecord)}_{nameof(WorkflowExecutionLogRecord.ActivityTypeVersion)}"); + builder.HasIndex(x => new {x.ActivityType, x.ActivityTypeVersion}).HasDatabaseName($"IX_{nameof(WorkflowExecutionLogRecord)}_{nameof(WorkflowExecutionLogRecord.ActivityType)}_{nameof(WorkflowExecutionLogRecord.ActivityTypeVersion)}"); builder.HasIndex(x => x.EventName).HasDatabaseName($"IX_{nameof(WorkflowExecutionLogRecord)}_{nameof(WorkflowExecutionLogRecord.EventName)}"); builder.HasIndex(x => x.WorkflowDefinitionId).HasDatabaseName($"IX_{nameof(WorkflowExecutionLogRecord)}_{nameof(WorkflowExecutionLogRecord.WorkflowDefinitionId)}"); builder.HasIndex(x => x.WorkflowInstanceId).HasDatabaseName($"IX_{nameof(WorkflowExecutionLogRecord)}_{nameof(WorkflowExecutionLogRecord.WorkflowInstanceId)}"); diff --git a/src/modules/Elsa.MongoDb/Modules/Runtime/CreateIndices.cs b/src/modules/Elsa.MongoDb/Modules/Runtime/CreateIndices.cs index 0f9c64fdd..3616c4780 100644 --- a/src/modules/Elsa.MongoDb/Modules/Runtime/CreateIndices.cs +++ b/src/modules/Elsa.MongoDb/Modules/Runtime/CreateIndices.cs @@ -79,6 +79,7 @@ internal class CreateIndices : IHostedService new(indexBuilder.Ascending(x => x.ParentActivityInstanceId)), new(indexBuilder.Ascending(x => x.ActivityId)), new(indexBuilder.Ascending(x => x.ActivityType)), + new(indexBuilder.Ascending(x => x.ActivityTypeVersion)), new(indexBuilder.Ascending(x => x.EventName)), new(indexBuilder.Ascending(x => x.WorkflowInstanceId)), new(indexBuilder.Ascending(x => x.WorkflowVersion)) diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Journal/List/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Journal/List/Endpoint.cs index 401802f2a..71d55f988 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Journal/List/Endpoint.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Journal/List/Endpoint.cs @@ -42,6 +42,7 @@ internal class Get : ElsaEndpoint x.ParentActivityInstanceId, x.ActivityId, x.ActivityType, + x.ActivityTypeVersion, x.NodeId, x.Timestamp, x.Sequence, diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Journal/List/Models.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Journal/List/Models.cs index 99c140835..39e5018a5 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Journal/List/Models.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/Journal/List/Models.cs @@ -53,6 +53,7 @@ internal record ExecutionLogRecord( string? ParentActivityInstanceId, string ActivityId, string ActivityType, + int ActivityTypeVersion, string NodeId, DateTimeOffset Timestamp, long Sequence, diff --git a/src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.cs index 24441c998..1a03b0883 100644 --- a/src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.cs +++ b/src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.cs @@ -98,6 +98,7 @@ public static class ActivityExecutionContextExtensions parentActivityInstanceId, activity.Id, activity.Type, + activity.Version, context.NodeId, activityState, now, diff --git a/src/modules/Elsa.Workflows.Core/Models/WorkflowExecutionLogEntry.cs b/src/modules/Elsa.Workflows.Core/Models/WorkflowExecutionLogEntry.cs index 1f07fbc00..742e4dc29 100644 --- a/src/modules/Elsa.Workflows.Core/Models/WorkflowExecutionLogEntry.cs +++ b/src/modules/Elsa.Workflows.Core/Models/WorkflowExecutionLogEntry.cs @@ -8,6 +8,7 @@ public record WorkflowExecutionLogEntry( string? ParentActivityInstanceId, string ActivityId, string ActivityType, + int ActivityTypeVersion, string NodeId, IDictionary? ActivityState, DateTimeOffset Timestamp, diff --git a/src/modules/Elsa.Workflows.Runtime/Entities/WorkflowExecutionLogRecord.cs b/src/modules/Elsa.Workflows.Runtime/Entities/WorkflowExecutionLogRecord.cs index 1089852a0..da07182df 100644 --- a/src/modules/Elsa.Workflows.Runtime/Entities/WorkflowExecutionLogRecord.cs +++ b/src/modules/Elsa.Workflows.Runtime/Entities/WorkflowExecutionLogRecord.cs @@ -42,6 +42,11 @@ public class WorkflowExecutionLogRecord : Entity /// public string ActivityType { get; set; } = default!; + /// + /// The version of the activity type. + /// + public int ActivityTypeVersion { get; set; } + /// /// The unique ID of the node within the workflow graph. /// diff --git a/src/modules/Elsa.Workflows.Runtime/Middleware/Workflows/PersistWorkflowExecutionLogMiddleware.cs b/src/modules/Elsa.Workflows.Runtime/Middleware/Workflows/PersistWorkflowExecutionLogMiddleware.cs index 154212a79..bb6d293c5 100644 --- a/src/modules/Elsa.Workflows.Runtime/Middleware/Workflows/PersistWorkflowExecutionLogMiddleware.cs +++ b/src/modules/Elsa.Workflows.Runtime/Middleware/Workflows/PersistWorkflowExecutionLogMiddleware.cs @@ -39,6 +39,7 @@ public class PersistWorkflowExecutionLogMiddleware : WorkflowExecutionMiddleware NodeId = x.NodeId, ActivityId = x.ActivityId, ActivityType = x.ActivityType, + ActivityTypeVersion = x.ActivityTypeVersion, Message = x.Message, EventName = x.EventName, WorkflowDefinitionId = context.Workflow.Identity.DefinitionId,