diff --git a/src/bundles/Elsa.Server.Web/Program.cs b/src/bundles/Elsa.Server.Web/Program.cs
index e7db8f0d3..ef688eeb9 100644
--- a/src/bundles/Elsa.Server.Web/Program.cs
+++ b/src/bundles/Elsa.Server.Web/Program.cs
@@ -18,6 +18,7 @@ using Elsa.MongoDb.Modules.Identity;
using Elsa.MongoDb.Modules.Management;
using Elsa.MongoDb.Modules.Runtime;
using Elsa.Server.Web;
+using Elsa.Workflows.Enums;
using Elsa.Workflows.Management.Compression;
using Elsa.Workflows.Management.Stores;
using Elsa.Workflows.Runtime.Stores;
@@ -154,6 +155,8 @@ services
if (useCachingStores)
management.UseCachingStores();
+
+ management.SetDefaultLogPersistenceMode(LogPersistenceMode.Default);
})
.UseWorkflowRuntime(runtime =>
{
diff --git a/src/modules/Elsa.Workflows.Runtime/Services/DefaultActivityExecutionMapper.cs b/src/modules/Elsa.Workflows.Runtime/Services/DefaultActivityExecutionMapper.cs
index bf012ab59..b81f20368 100644
--- a/src/modules/Elsa.Workflows.Runtime/Services/DefaultActivityExecutionMapper.cs
+++ b/src/modules/Elsa.Workflows.Runtime/Services/DefaultActivityExecutionMapper.cs
@@ -11,39 +11,27 @@ using Microsoft.Extensions.Options;
namespace Elsa.Workflows.Runtime.Services;
///
-public class DefaultActivityExecutionMapper : IActivityExecutionMapper
-{
- private LogPersistenceMode _serverLogPersistenceMode;
- private const string LogPersistenceModeKey = "logPersistenceMode";
-
- public DefaultActivityExecutionMapper(IOptions options)
- {
- _serverLogPersistenceMode = options.Value.LogPersistenceMode;
- }
-
+public class DefaultActivityExecutionMapper(IOptions options) : IActivityExecutionMapper
+{
+ private const string LogPersistenceModeKey = "logPersistenceMode";
+
///
public ActivityExecutionRecord Map(ActivityExecutionContext source)
- {
- /*
- * {
- * "logPersistenceMode": {
- * "default": "default",
- * "inputs": { k : v },
- * "outputs": { k: v }
- * }
- * }
- */
-
- var workflowPersistenceProperty =
- GetDefaultPersistenceMode(source.WorkflowExecutionContext.Workflow.CustomProperties, () => _serverLogPersistenceMode);
-
-
- var activityPersistenceProperties = source.Activity.CustomProperties
- .GetValueOrDefault>(LogPersistenceModeKey, () => new Dictionary());
- var activityPersistencePropertyDefault =
- GetDefaultPersistenceMode(source.Activity.CustomProperties, () => workflowPersistenceProperty);
-
-
+ {
+ /*
+ * {
+ * "logPersistenceMode": {
+ * "default": "default",
+ * "inputs": { k : v },
+ * "outputs": { k: v }
+ * }
+ * }
+ */
+
+ var workflowPersistenceProperty = GetDefaultPersistenceMode(source.WorkflowExecutionContext.Workflow.CustomProperties, () => options.Value.LogPersistenceMode);
+ var activityPersistenceProperties = source.Activity.CustomProperties.GetValueOrDefault>(LogPersistenceModeKey, () => new Dictionary());
+ var activityPersistencePropertyDefault = GetDefaultPersistenceMode(source.Activity.CustomProperties, () => workflowPersistenceProperty);
+
// Get any outcomes that were added to the activity execution context.
var outcomes = source.JournalData.TryGetValue("Outcomes", out var resultValue) ? resultValue as string[] : default;
var payload = new Dictionary();
@@ -72,10 +60,10 @@ public class DefaultActivityExecutionMapper : IActivityExecutionMapper
return default;
});
-
- outputs = StorePropertyUsingPersistanceMode(outputs, activityPersistenceProperties!.GetValueOrDefault("outputs", () => new Dictionary())!, activityPersistencePropertyDefault);
- var activityState = StorePropertyUsingPersistanceMode(source.ActivityState, activityPersistenceProperties!.GetValueOrDefault("inputs", () => new Dictionary())!, activityPersistencePropertyDefault );
-
+
+ outputs = StorePropertyUsingPersistenceMode(outputs, activityPersistenceProperties!.GetValueOrDefault("outputs", () => new Dictionary())!, activityPersistencePropertyDefault);
+ var activityState = StorePropertyUsingPersistenceMode(source.ActivityState, activityPersistenceProperties!.GetValueOrDefault("inputs", () => new Dictionary())!, activityPersistencePropertyDefault);
+
return new ActivityExecutionRecord
{
Id = source.Id,
@@ -95,39 +83,35 @@ public class DefaultActivityExecutionMapper : IActivityExecutionMapper
Status = GetAggregateStatus(source),
CompletedAt = source.CompletedAt
};
- }
-
- private static LogPersistenceMode GetDefaultPersistenceMode(IDictionary customProperties,Func defaultFactory)
- {
- var properties = customProperties
- .GetValueOrDefault>(LogPersistenceModeKey, () => new Dictionary());
- var persistencePropertyDefault = properties!
- .GetValueOrDefault("default", defaultFactory);
-
- if(persistencePropertyDefault == LogPersistenceMode.Default)
- return defaultFactory();
- return persistencePropertyDefault;
- }
-
- private static Dictionary StorePropertyUsingPersistanceMode(IDictionary inputs
- , IDictionary persistenceModeConfiguration
- , LogPersistenceMode defaultLogPersistenceMode = LogPersistenceMode.Exclude)
- {
- var result = new Dictionary();
-
- foreach (var input in inputs)
- {
- var persistence = persistenceModeConfiguration.GetValueOrDefault(input.Key.Camelize(), () => defaultLogPersistenceMode);
- if (persistence.Equals(LogPersistenceMode.Include)
- || (persistence.Equals(LogPersistenceMode.Default) && defaultLogPersistenceMode == LogPersistenceMode.Include)
- )
- result.Add(input.Key, input.Value);
-
- }
-
- return result;
- }
-
+ }
+
+ private static LogPersistenceMode GetDefaultPersistenceMode(IDictionary customProperties, Func defaultFactory)
+ {
+ var properties = customProperties.GetValueOrDefault>(LogPersistenceModeKey, () => new Dictionary());
+ var persistencePropertyDefault = properties!.GetValueOrDefault("default", defaultFactory);
+
+ if (persistencePropertyDefault == LogPersistenceMode.Default)
+ return defaultFactory();
+ return persistencePropertyDefault;
+ }
+
+ private static Dictionary StorePropertyUsingPersistenceMode(IDictionary inputs,
+ IDictionary persistenceModeConfiguration,
+ LogPersistenceMode defaultLogPersistenceMode)
+ {
+ var result = new Dictionary();
+
+ foreach (var input in inputs)
+ {
+ var persistence = persistenceModeConfiguration.GetValueOrDefault(input.Key.Camelize(), () => defaultLogPersistenceMode);
+ if (persistence.Equals(LogPersistenceMode.Include)
+ || (persistence.Equals(LogPersistenceMode.Default) && defaultLogPersistenceMode is LogPersistenceMode.Include or LogPersistenceMode.Default))
+ result.Add(input.Key, input.Value);
+ }
+
+ return result;
+ }
+
private ActivityStatus GetAggregateStatus(ActivityExecutionContext context)
{
// If any child activity is faulted, the aggregate status is faulted.