diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Modules/Management/Extensions.cs
index 4ec08fc85..0cc4a26bc 100644
--- a/src/modules/Elsa.EntityFrameworkCore.MySql/Modules/Management/Extensions.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Modules/Management/Extensions.cs
@@ -23,7 +23,7 @@ public static partial class Extensions
return feature;
}
- public static EFCoreWorkflowManagementPersistenceFeature UseMySql(this EFCoreWorkflowManagementPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default)
+ public static WorkflowManagementPersistenceFeature UseMySql(this WorkflowManagementPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default)
{
feature.DbContextOptionsBuilder = (_, db) => db.UseElsaMySql(connectionString, options);
return feature;
diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Modules/Management/Extensions.cs
index 90159d0e9..bcbc3a1e1 100644
--- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Modules/Management/Extensions.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Modules/Management/Extensions.cs
@@ -23,7 +23,7 @@ public static partial class Extensions
return feature;
}
- public static EFCoreWorkflowManagementPersistenceFeature UsePostgreSql(this EFCoreWorkflowManagementPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default)
+ public static WorkflowManagementPersistenceFeature UsePostgreSql(this WorkflowManagementPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default)
{
feature.DbContextOptionsBuilder = (_, db) => db.UseElsaPostgreSql(connectionString, options);
return feature;
diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs
index 192a04851..399a25336 100644
--- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs
@@ -20,7 +20,7 @@ public static partial class Extensions
return feature;
}
- public static EFCoreWorkflowManagementPersistenceFeature UseSqlServer(this EFCoreWorkflowManagementPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default)
+ public static WorkflowManagementPersistenceFeature UseSqlServer(this WorkflowManagementPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default)
{
feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlServer(connectionString, options);
return feature;
diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs
index 9c38005f2..c9900ec56 100644
--- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs
+++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs
@@ -21,7 +21,7 @@ public static partial class Extensions
return feature;
}
- public static EFCoreWorkflowManagementPersistenceFeature UseSqlite(this EFCoreWorkflowManagementPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString, ElsaDbContextOptions? options = default)
+ public static WorkflowManagementPersistenceFeature UseSqlite(this WorkflowManagementPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString, ElsaDbContextOptions? options = default)
{
feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString, options);
return feature;
diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Extensions.cs
index 677d70f53..66c46c922 100644
--- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Extensions.cs
+++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Extensions.cs
@@ -28,7 +28,7 @@ public static class WorkflowManagementFeatureExtensions
///
/// Sets up the EF Core persistence provider.
///
- public static WorkflowManagementFeature UseEntityFrameworkCore(this WorkflowManagementFeature feature, Action? configure = default)
+ public static WorkflowManagementFeature UseEntityFrameworkCore(this WorkflowManagementFeature feature, Action? configure = default)
{
feature.Module.Configure(configure);
return feature;
diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/EFCoreWorkflowManagementPersistenceFeature.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowManagementPersistenceFeature.cs
similarity index 87%
rename from src/modules/Elsa.EntityFrameworkCore/Modules/Management/EFCoreWorkflowManagementPersistenceFeature.cs
rename to src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowManagementPersistenceFeature.cs
index 382d26eea..3f702d065 100644
--- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/EFCoreWorkflowManagementPersistenceFeature.cs
+++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowManagementPersistenceFeature.cs
@@ -15,10 +15,10 @@ namespace Elsa.EntityFrameworkCore.Modules.Management;
[DependsOn(typeof(WorkflowInstancesFeature))]
[DependsOn(typeof(WorkflowDefinitionsFeature))]
[PublicAPI]
-public class EFCoreWorkflowManagementPersistenceFeature : PersistenceFeatureBase
+public class WorkflowManagementPersistenceFeature : PersistenceFeatureBase
{
///
- public EFCoreWorkflowManagementPersistenceFeature(IModule module) : base(module)
+ public WorkflowManagementPersistenceFeature(IModule module) : base(module)
{
}
diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs
index 4e596f3e7..efdc61e68 100644
--- a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs
+++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs
@@ -53,7 +53,7 @@ public class EFCoreActivityExecutionStore : IActivityExecutionStore
private async ValueTask OnSaveAsync(RuntimeElsaDbContext dbContext, ActivityExecutionRecord entity, CancellationToken cancellationToken)
{
dbContext.Entry(entity).Property("SerializedActivityState").CurrentValue = entity.ActivityState != null ? (await _activityStateSerializer.SerializeAsync(entity.ActivityState, cancellationToken)).ToString() : default;
- dbContext.Entry(entity).Property("SerializedOutputs").CurrentValue = entity.ActivityState != null ? (await _activityStateSerializer.SerializeAsync(entity.Outputs, cancellationToken)).ToString() : default;
+ dbContext.Entry(entity).Property("SerializedOutputs").CurrentValue = entity.Outputs != null ? (await _activityStateSerializer.SerializeAsync(entity.Outputs, cancellationToken)).ToString() : default;
dbContext.Entry(entity).Property("SerializedException").CurrentValue = entity.Exception != null ? _payloadSerializer.Serialize(entity.Exception) : default;
dbContext.Entry(entity).Property("SerializedPayload").CurrentValue = entity.Payload != null ? _payloadSerializer.Serialize(entity.Payload) : default;
}
diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs
index 26f91ddaa..6c89a4b54 100644
--- a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs
+++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs
@@ -1,3 +1,4 @@
+using System.Text.Json;
using Elsa.EntityFrameworkCore.Common;
using Elsa.Common.Models;
using Elsa.Extensions;
@@ -16,15 +17,17 @@ namespace Elsa.EntityFrameworkCore.Modules.Runtime;
public class EFCoreWorkflowExecutionLogStore : IWorkflowExecutionLogStore
{
private readonly EntityStore _store;
- private readonly IPayloadSerializer _serializer;
+ private readonly IPayloadSerializer _payloadSerializer;
+ private readonly IActivityStateSerializer _activityStateSerializer;
///
/// Initializes a new instance of the class.
///
- public EFCoreWorkflowExecutionLogStore(EntityStore store, IPayloadSerializer serializer)
+ public EFCoreWorkflowExecutionLogStore(EntityStore store, IPayloadSerializer payloadPayloadSerializer, IActivityStateSerializer activityStateSerializer)
{
_store = store;
- _serializer = serializer;
+ _payloadSerializer = payloadPayloadSerializer;
+ _activityStateSerializer = activityStateSerializer;
}
///
@@ -70,11 +73,10 @@ public class EFCoreWorkflowExecutionLogStore : IWorkflowExecutionLogStore
return await _store.DeleteWhereAsync(queryable => Filter(queryable, filter), cancellationToken);
}
- private ValueTask OnSaveAsync(RuntimeElsaDbContext dbContext, WorkflowExecutionLogRecord entity, CancellationToken cancellationToken)
+ private async ValueTask OnSaveAsync(RuntimeElsaDbContext dbContext, WorkflowExecutionLogRecord entity, CancellationToken cancellationToken)
{
- dbContext.Entry(entity).Property("SerializedActivityState").CurrentValue = entity.ActivityState != null ? _serializer.Serialize(entity.ActivityState) : default;
- dbContext.Entry(entity).Property("SerializedPayload").CurrentValue = entity.Payload != null ? _serializer.Serialize(entity.Payload) : default;
- return default;
+ dbContext.Entry(entity).Property("SerializedActivityState").CurrentValue = entity.ActivityState != null ? (await _activityStateSerializer.SerializeAsync(entity.ActivityState, cancellationToken)).ToString() : default;
+ dbContext.Entry(entity).Property("SerializedPayload").CurrentValue = entity.Payload != null ? (await _activityStateSerializer.SerializeAsync(entity.Payload, cancellationToken)).ToString() : default;
}
private async ValueTask OnLoadAsync(RuntimeElsaDbContext dbContext, WorkflowExecutionLogRecord? entity, CancellationToken cancellationToken)
@@ -89,13 +91,13 @@ public class EFCoreWorkflowExecutionLogStore : IWorkflowExecutionLogStore
private ValueTask