diff --git a/src/bundles/Elsa.WorkflowServer.Web/Program.cs b/src/bundles/Elsa.WorkflowServer.Web/Program.cs index d7f8181d3..5d20b3b54 100644 --- a/src/bundles/Elsa.WorkflowServer.Web/Program.cs +++ b/src/bundles/Elsa.WorkflowServer.Web/Program.cs @@ -19,7 +19,7 @@ using Proto.Persistence.SqlServer; const bool useMongoDb = false; const bool useSqlServer = false; const bool useDapper = false; -const bool useProtoActor = true; +const bool useProtoActor = false; const bool useHangfire = false; var builder = WebApplication.CreateBuilder(args); diff --git a/src/modules/Elsa.Http/Activities/FlowSendHttpRequest.cs b/src/modules/Elsa.Http/Activities/FlowSendHttpRequest.cs index 2f04d0d8a..2149ab64a 100644 --- a/src/modules/Elsa.Http/Activities/FlowSendHttpRequest.cs +++ b/src/modules/Elsa.Http/Activities/FlowSendHttpRequest.cs @@ -1,7 +1,9 @@ +using System.Reflection; using System.Runtime.CompilerServices; using Elsa.Extensions; using Elsa.Workflows.Core; using Elsa.Workflows.Core.Attributes; +using Elsa.Workflows.Core.Contracts; using Elsa.Workflows.Core.Models; namespace Elsa.Http; @@ -10,17 +12,21 @@ namespace Elsa.Http; /// Send an HTTP request. /// [Activity("Elsa", "HTTP", "Send an HTTP request.", DisplayName = "HTTP Request (flow)", Kind = ActivityKind.Task)] -public class FlowSendHttpRequest : SendHttpRequestBase +public class FlowSendHttpRequest : SendHttpRequestBase, IActivityPropertyDefaultValueProvider { /// public FlowSendHttpRequest([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line) { } - + /// /// A list of expected status codes to handle. /// - [Input(Description = "A list of expected status codes to handle.", UIHint = InputUIHints.MultiText)] + [Input( + Description = "A list of expected status codes to handle.", + UIHint = InputUIHints.MultiText, + DefaultValueProvider = typeof(FlowSendHttpRequest) + )] public Input> ExpectedStatusCodes { get; set; } = default!; /// @@ -45,4 +51,14 @@ public class FlowSendHttpRequest : SendHttpRequestBase { await context.CompleteActivityWithOutcomesAsync("Timeout"); } + + object IActivityPropertyDefaultValueProvider.GetDefaultValue(PropertyInfo property) + { + if (property.Name == nameof(ExpectedStatusCodes)) + { + return new List { 200 }; + } + + return default!; + } } \ No newline at end of file diff --git a/src/modules/Elsa.Http/Activities/SendHttpRequestBase.cs b/src/modules/Elsa.Http/Activities/SendHttpRequestBase.cs index ad7fc90d0..74a6327e1 100644 --- a/src/modules/Elsa.Http/Activities/SendHttpRequestBase.cs +++ b/src/modules/Elsa.Http/Activities/SendHttpRequestBase.cs @@ -11,6 +11,7 @@ namespace Elsa.Http; /// /// Base class for activities that send HTTP requests. /// +[Output(IsSerializable = false)] public abstract class SendHttpRequestBase : Activity { /// diff --git a/src/modules/Elsa.Workflows.Core/Abstractions/Activity.cs b/src/modules/Elsa.Workflows.Core/Abstractions/Activity.cs index aedd2e4a2..42f3d4c5f 100644 --- a/src/modules/Elsa.Workflows.Core/Abstractions/Activity.cs +++ b/src/modules/Elsa.Workflows.Core/Abstractions/Activity.cs @@ -78,10 +78,8 @@ public abstract class Activity : IActivity, ISignalHandler /// [JsonIgnore] public IDictionary SyntheticProperties { get; set; } = new Dictionary(); - - /// - /// Stores metadata such as x and y coordinates when created via the designer. - /// + + /// public IDictionary Metadata { get; set; } = new Dictionary(); /// diff --git a/src/modules/Elsa.Workflows.Core/Contracts/IActivity.cs b/src/modules/Elsa.Workflows.Core/Contracts/IActivity.cs index e216fdc44..dd0855449 100644 --- a/src/modules/Elsa.Workflows.Core/Contracts/IActivity.cs +++ b/src/modules/Elsa.Workflows.Core/Contracts/IActivity.cs @@ -38,6 +38,11 @@ public interface IActivity [JsonIgnore] IDictionary SyntheticProperties { get; set; } + /// + /// Metadata associated with the activity. This is typically used by the workflow designer to store information about the activity. + /// + IDictionary Metadata { get; set; } + /// /// Invoked when the activity executes. /// diff --git a/src/modules/Elsa.Workflows.Runtime/Middleware/Workflows/PersistActivityExecutionLogMiddleware.cs b/src/modules/Elsa.Workflows.Runtime/Middleware/Workflows/PersistActivityExecutionLogMiddleware.cs index b8359cf76..8b8d47b54 100644 --- a/src/modules/Elsa.Workflows.Runtime/Middleware/Workflows/PersistActivityExecutionLogMiddleware.cs +++ b/src/modules/Elsa.Workflows.Runtime/Middleware/Workflows/PersistActivityExecutionLogMiddleware.cs @@ -56,7 +56,7 @@ public class PersistActivityExecutionLogMiddleware : WorkflowExecutionMiddleware var outputs = outputDescriptors.ToDictionary(x => x.Name, x => { if(x.IsSerializable == false) - return default; + return "(not serializable)"; var cachedValue = activity.GetOutput(expressionExecutionContext, x.Name);