diff --git a/src/modules/Elsa.Workflows.Core/Extensions/ActivityPropertyExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/ActivityPropertyExtensions.cs
index 195da6705..7bc994c79 100644
--- a/src/modules/Elsa.Workflows.Core/Extensions/ActivityPropertyExtensions.cs
+++ b/src/modules/Elsa.Workflows.Core/Extensions/ActivityPropertyExtensions.cs
@@ -26,15 +26,15 @@ public static class ActivityPropertyExtensions
///
/// Gets a flag indicating if this activity should execute synchronously or asynchronously.
- /// By default, activities with an of , or
- /// will execute synchronously, while activities of the kind will execute asynchronously.
+ /// By default, activities with an of , or
+ /// will execute synchronously, while activities of the kind will execute asynchronously.
///
public static bool GetRunAsynchronously(this IActivity activity) => activity.CustomProperties.GetValueOrDefault(RunAsynchronouslyPropertyName, () => false);
///
/// Sets a flag indicating if this activity should execute synchronously or asynchronously.
- /// By default, activities with an of , or
- /// will execute synchronously, while activities of the kind will execute asynchronously.
+ /// By default, activities with an of , or
+ /// will execute synchronously, while activities of the kind will execute asynchronously.
///
public static void SetRunAsynchronously(this IActivity activity, bool value) => activity.CustomProperties[RunAsynchronouslyPropertyName[0]] = value;
@@ -59,4 +59,24 @@ public static class ActivityPropertyExtensions
var source = $"{Path.GetFileName(sourceFile)}:{lineNumber}";
activity.SetSource(source);
}
+
+ ///
+ /// Gets the display text for the specified activity.
+ ///
+ public static string? GetDisplayText(this IActivity activity) => activity.Metadata.TryGetValue("displayText", out var value) ? value.ToString() : default;
+
+ ///
+ /// Sets the display text for the specified activity.
+ ///
+ public static void SetDisplayText(this IActivity activity, string value) => activity.Metadata["displayText"] = value;
+
+ ///
+ /// Gets the description for the specified activity.
+ ///
+ public static string? GetDescription(this IActivity activity) => activity.Metadata.TryGetValue("description", out var value) ? value.ToString() : default;
+
+ ///
+ /// Sets the description for the specified activity.
+ ///
+ public static void SetDescription(this IActivity activity, string value) => activity.Metadata["description"] = value;
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Workflows.Management/Serialization/Converters/ActivityJsonConverter.cs b/src/modules/Elsa.Workflows.Management/Serialization/Converters/ActivityJsonConverter.cs
index db9935138..7c7e49951 100644
--- a/src/modules/Elsa.Workflows.Management/Serialization/Converters/ActivityJsonConverter.cs
+++ b/src/modules/Elsa.Workflows.Management/Serialization/Converters/ActivityJsonConverter.cs
@@ -72,6 +72,8 @@ public class ActivityJsonConverter : JsonConverter
notFoundActivity.MissingTypeName = activityTypeName;
notFoundActivity.MissingTypeVersion = activityTypeVersion;
notFoundActivity.OriginalActivityJson = activityRoot.ToString();
+ notFoundActivity.SetDisplayText($"Not Found: {activityTypeName}");
+ notFoundActivity.SetDescription($"Could not find activity type {activityTypeName} with version {activityTypeVersion}");
return notFoundActivity;
}