diff --git a/src/activities/Elsa.Activities.Http/Middleware/HttpEndpointMiddleware.cs b/src/activities/Elsa.Activities.Http/Middleware/HttpEndpointMiddleware.cs index 90d2a0981..550f5641f 100644 --- a/src/activities/Elsa.Activities.Http/Middleware/HttpEndpointMiddleware.cs +++ b/src/activities/Elsa.Activities.Http/Middleware/HttpEndpointMiddleware.cs @@ -64,6 +64,7 @@ namespace Elsa.Activities.Http.Middleware var simpleContentType = request.ContentType?.Split(';').First(); var contentParser = orderedContentParsers.FirstOrDefault(x => x.SupportedContentTypes.Contains(simpleContentType, StringComparer.OrdinalIgnoreCase)) ?? orderedContentParsers.LastOrDefault() ?? new DefaultHttpRequestBodyParser(); + // Handle each pending workflow individually. We need to check their readContent setting to see if we need to parse the incoming HTTP request body or not. foreach (var pendingWorkflow in pendingWorkflows) { var pendingWorkflowInstance = pendingWorkflowInstances[pendingWorkflow.WorkflowInstanceId]; @@ -71,8 +72,7 @@ namespace Elsa.Activities.Http.Middleware var activityWrapper = workflowBlueprintWrapper.GetUnfilteredActivity(pendingWorkflow.ActivityId!); var readContent = await activityWrapper!.EvaluatePropertyValueAsync(x => x.ReadContent, cancellationToken); var inputModel = commonInputModel; - - // TODO: Explain this + sequence. + if (readContent) { var targetType = await activityWrapper.EvaluatePropertyValueAsync(x => x.TargetType, cancellationToken); diff --git a/src/activities/Elsa.Activities.Temporal.Common/Handlers/SchedulePublishedWorkflows.cs b/src/activities/Elsa.Activities.Temporal.Common/Handlers/SchedulePublishedWorkflows.cs index 9a62f273e..fe636cd57 100644 --- a/src/activities/Elsa.Activities.Temporal.Common/Handlers/SchedulePublishedWorkflows.cs +++ b/src/activities/Elsa.Activities.Temporal.Common/Handlers/SchedulePublishedWorkflows.cs @@ -4,7 +4,7 @@ using System.Threading.Tasks; using Elsa.Activities.Temporal.Common.Bookmarks; using Elsa.Activities.Temporal.Common.Services; using Elsa.Events; -using Elsa.Services.Triggers; +using Elsa.Services; using MediatR; using Microsoft.Extensions.Logging; diff --git a/src/core/Elsa.Abstractions/Extensions/StreamExtensions.cs b/src/core/Elsa.Abstractions/Extensions/StreamExtensions.cs index aabb6bb31..a565c1f46 100644 --- a/src/core/Elsa.Abstractions/Extensions/StreamExtensions.cs +++ b/src/core/Elsa.Abstractions/Extensions/StreamExtensions.cs @@ -7,14 +7,14 @@ namespace Elsa { public static class StreamExtensions { - public static async Task ReadBytesToEndAsync(this Stream input, CancellationToken cancellationToken) + public static async Task ReadBytesToEndAsync(this Stream input, CancellationToken cancellationToken = default) { - using var ms = new MemoryStream(); + await using var ms = new MemoryStream(); await input.CopyToAsync(ms, 16 * 1024, cancellationToken); return ms.ToArray(); } - public static async Task ReadStringToEndAsync(this Stream input, CancellationToken cancellationToken) + public static async Task ReadStringToEndAsync(this Stream input, CancellationToken cancellationToken = default) { var bytes = await input.ReadBytesToEndAsync(cancellationToken); return Encoding.UTF8.GetString(bytes); diff --git a/src/core/Elsa.Abstractions/Extensions/TriggerFinderExtensions.cs b/src/core/Elsa.Abstractions/Extensions/TriggerFinderExtensions.cs index 8065d654e..d4266f4d8 100644 --- a/src/core/Elsa.Abstractions/Extensions/TriggerFinderExtensions.cs +++ b/src/core/Elsa.Abstractions/Extensions/TriggerFinderExtensions.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Elsa.Services; using Elsa.Services.Bookmarks; -using Elsa.Services.Triggers; namespace Elsa { diff --git a/src/core/Elsa.Abstractions/Services/Triggers/IGetsTriggersForActivityBlueprintAndWorkflow.cs b/src/core/Elsa.Abstractions/Services/Triggers/IGetsTriggersForActivityBlueprintAndWorkflow.cs index cdf4017c5..0df1bf0f0 100644 --- a/src/core/Elsa.Abstractions/Services/Triggers/IGetsTriggersForActivityBlueprintAndWorkflow.cs +++ b/src/core/Elsa.Abstractions/Services/Triggers/IGetsTriggersForActivityBlueprintAndWorkflow.cs @@ -3,7 +3,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.Services.Models; -namespace Elsa.Services.Triggers +namespace Elsa.Services { /// /// An object which can get a collection of the for a specified activity blueprint and workflow. diff --git a/src/core/Elsa.Abstractions/Services/Triggers/IGetsTriggersForWorkflowBlueprints.cs b/src/core/Elsa.Abstractions/Services/Triggers/IGetsTriggersForWorkflowBlueprints.cs index f7d05119c..12c9037a2 100644 --- a/src/core/Elsa.Abstractions/Services/Triggers/IGetsTriggersForWorkflowBlueprints.cs +++ b/src/core/Elsa.Abstractions/Services/Triggers/IGetsTriggersForWorkflowBlueprints.cs @@ -3,7 +3,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.Services.Models; -namespace Elsa.Services.Triggers +namespace Elsa.Services { /// /// An object which can get all of the workflow triggers for a collection of workflow blueprints. diff --git a/src/core/Elsa.Abstractions/Services/Triggers/ITriggerFinder.cs b/src/core/Elsa.Abstractions/Services/Triggers/ITriggerFinder.cs index 4788cb4b1..fcdb62517 100644 --- a/src/core/Elsa.Abstractions/Services/Triggers/ITriggerFinder.cs +++ b/src/core/Elsa.Abstractions/Services/Triggers/ITriggerFinder.cs @@ -3,7 +3,7 @@ using System.Threading; using System.Threading.Tasks; using Elsa.Services.Bookmarks; -namespace Elsa.Services.Triggers +namespace Elsa.Services { public interface ITriggerFinder { diff --git a/src/core/Elsa.Abstractions/Services/Triggers/ITriggerIndexer.cs b/src/core/Elsa.Abstractions/Services/Triggers/ITriggerIndexer.cs index 5cd6da5ed..29e16bb3f 100644 --- a/src/core/Elsa.Abstractions/Services/Triggers/ITriggerIndexer.cs +++ b/src/core/Elsa.Abstractions/Services/Triggers/ITriggerIndexer.cs @@ -1,7 +1,7 @@ using System.Threading; using System.Threading.Tasks; -namespace Elsa.Services.Triggers +namespace Elsa.Services { public interface ITriggerIndexer { diff --git a/src/core/Elsa.Abstractions/Services/Triggers/ITriggerStore.cs b/src/core/Elsa.Abstractions/Services/Triggers/ITriggerStore.cs index 6c97477d5..fb89556b7 100644 --- a/src/core/Elsa.Abstractions/Services/Triggers/ITriggerStore.cs +++ b/src/core/Elsa.Abstractions/Services/Triggers/ITriggerStore.cs @@ -2,7 +2,7 @@ using System.Threading; using System.Threading.Tasks; -namespace Elsa.Services.Triggers +namespace Elsa.Services { public interface ITriggerStore { diff --git a/src/core/Elsa.Abstractions/Services/Triggers/TriggerFinderResult.cs b/src/core/Elsa.Abstractions/Services/Triggers/TriggerFinderResult.cs index 56771e490..a396200cd 100644 --- a/src/core/Elsa.Abstractions/Services/Triggers/TriggerFinderResult.cs +++ b/src/core/Elsa.Abstractions/Services/Triggers/TriggerFinderResult.cs @@ -1,7 +1,7 @@ using Elsa.Services.Bookmarks; using Elsa.Services.Models; -namespace Elsa.Services.Triggers +namespace Elsa.Services { public class TriggerFinderResult { diff --git a/src/core/Elsa.Abstractions/Services/Triggers/TriggerProviderContext.cs b/src/core/Elsa.Abstractions/Services/Triggers/TriggerProviderContext.cs index 7c121c2f3..f9b868100 100644 --- a/src/core/Elsa.Abstractions/Services/Triggers/TriggerProviderContext.cs +++ b/src/core/Elsa.Abstractions/Services/Triggers/TriggerProviderContext.cs @@ -1,6 +1,6 @@ using Elsa.Services.Models; -namespace Elsa.Services.Triggers +namespace Elsa.Services { public class TriggerProviderContext { diff --git a/src/core/Elsa.Abstractions/Services/Triggers/WorkflowTrigger.cs b/src/core/Elsa.Abstractions/Services/Triggers/WorkflowTrigger.cs index 62a6cc3e8..859008693 100644 --- a/src/core/Elsa.Abstractions/Services/Triggers/WorkflowTrigger.cs +++ b/src/core/Elsa.Abstractions/Services/Triggers/WorkflowTrigger.cs @@ -1,7 +1,7 @@ using Elsa.Services.Bookmarks; using Elsa.Services.Models; -namespace Elsa.Services.Triggers +namespace Elsa.Services { public class WorkflowTrigger { diff --git a/src/core/Elsa.Abstractions/Services/Workflows/IStartsWorkflows.cs b/src/core/Elsa.Abstractions/Services/Workflows/IStartsWorkflows.cs index da1165ba3..f7ffbe737 100644 --- a/src/core/Elsa.Abstractions/Services/Workflows/IStartsWorkflows.cs +++ b/src/core/Elsa.Abstractions/Services/Workflows/IStartsWorkflows.cs @@ -2,7 +2,6 @@ using System.Threading; using System.Threading.Tasks; using Elsa.Services.Models; -using Elsa.Services.Triggers; namespace Elsa.Services { diff --git a/src/core/Elsa.Core/Consumers/UpdateWorkflowTriggersIndexConsumer.cs b/src/core/Elsa.Core/Consumers/UpdateWorkflowTriggersIndexConsumer.cs index 1aeee57f5..b9e5faa93 100644 --- a/src/core/Elsa.Core/Consumers/UpdateWorkflowTriggersIndexConsumer.cs +++ b/src/core/Elsa.Core/Consumers/UpdateWorkflowTriggersIndexConsumer.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using Elsa.Events; -using Elsa.Services.Triggers; +using Elsa.Services; using Rebus.Handlers; namespace Elsa.Consumers diff --git a/src/samples/server/Elsa.Samples.Server.Host/Activities/MultiTextWithOptionsSampleActivity.cs b/src/samples/server/Elsa.Samples.Server.Host/Activities/MultiTextWithOptionsSampleActivity.cs deleted file mode 100644 index 86a5d8888..000000000 --- a/src/samples/server/Elsa.Samples.Server.Host/Activities/MultiTextWithOptionsSampleActivity.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using Elsa.ActivityResults; -using Elsa.Attributes; -using Elsa.Design; -using Elsa.Expressions; -using Elsa.Metadata; -using Elsa.Services; - -namespace Elsa.Samples.Server.Host.Activities -{ - public class ClosedMultiTextSampleActivity : Activity, IActivityPropertyOptionsProvider - { - [ActivityInput( - UIHint = ActivityInputUIHints.MultiText, - OptionsProvider = typeof(ClosedMultiTextSampleActivity), - DefaultSyntax = SyntaxNames.Json, - SupportedSyntaxes = new[] { SyntaxNames.Json, SyntaxNames.JavaScript, SyntaxNames.Liquid } - )] - public string? FavoriteLanguage { get; set; } - - [ActivityOutput] public string? Output { get; set; } - - public object GetOptions(PropertyInfo property) => new[] - { - new SelectListItem("C#", "csharp"), - new SelectListItem("JavaScript", "javascript"), - new SelectListItem("Rust", "rust"), - new SelectListItem("PHP", "php"), - }; - - protected override IActivityExecutionResult OnExecute() - { - Output = FavoriteLanguage; - return Done(); - } - } -} \ No newline at end of file diff --git a/src/samples/server/Elsa.Samples.Server.Host/Activities/OpenMultiTextSampleActivity.cs b/src/samples/server/Elsa.Samples.Server.Host/Activities/OpenMultiTextSampleActivity.cs deleted file mode 100644 index 59c38ee2a..000000000 --- a/src/samples/server/Elsa.Samples.Server.Host/Activities/OpenMultiTextSampleActivity.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Elsa.ActivityResults; -using Elsa.Attributes; -using Elsa.Design; -using Elsa.Expressions; -using Elsa.Services; - -namespace Elsa.Samples.Server.Host.Activities -{ - public class OpenMultiTextSampleActivity : Activity - { - [ActivityInput( - UIHint = ActivityInputUIHints.MultiText, - DefaultSyntax = SyntaxNames.Json, - SupportedSyntaxes = new[] { SyntaxNames.Json, SyntaxNames.JavaScript, SyntaxNames.Liquid } - )] - public string? FavoriteLanguage { get; set; } - - [ActivityOutput] public string? Output { get; set; } - - protected override IActivityExecutionResult OnExecute() - { - Output = FavoriteLanguage; - return Done(); - } - } -} \ No newline at end of file diff --git a/src/samples/server/Elsa.Samples.Server.Host/Activities/SampleCompositeActivity.cs b/src/samples/server/Elsa.Samples.Server.Host/Activities/SampleCompositeActivity.cs deleted file mode 100644 index 628c08246..000000000 --- a/src/samples/server/Elsa.Samples.Server.Host/Activities/SampleCompositeActivity.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Elsa.Activities.Console; -using Elsa.Builders; -using Elsa.Services; - -namespace Elsa.Samples.Server.Host.Activities -{ - public class SampleCompositeActivity : CompositeActivity - { - public override void Build(ICompositeActivityBuilder builder) - { - builder.WriteLine("Line 1"); - builder.WriteLine("Line 2"); - } - } -} \ No newline at end of file diff --git a/src/samples/server/Elsa.Samples.Server.Host/Activities/VehicleActivity.cs b/src/samples/server/Elsa.Samples.Server.Host/Activities/VehicleActivity.cs deleted file mode 100644 index 8c9e67b74..000000000 --- a/src/samples/server/Elsa.Samples.Server.Host/Activities/VehicleActivity.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Threading; -using System.Threading.Tasks; -using Elsa.ActivityResults; -using Elsa.Attributes; -using Elsa.Design; -using Elsa.Expressions; -using Elsa.Metadata; -using Elsa.Services; - -namespace Elsa.Samples.Server.Host.Activities -{ - [Action] - public class VehicleActivity : Activity, IActivityPropertyOptionsProvider, IRuntimeSelectListItemsProvider - { - private readonly Random _random; - - public VehicleActivity() - { - _random = new Random(); - } - - [ActivityInput( - UIHint = ActivityInputUIHints.Dropdown, - OptionsProvider = typeof(VehicleActivity), - DefaultSyntax = SyntaxNames.Literal, - SupportedSyntaxes = new[] { SyntaxNames.Literal, SyntaxNames.Json, SyntaxNames.JavaScript, SyntaxNames.Liquid } - )] - public string? Brand { get; set; } - - [ActivityOutput] public string? Output { get; set; } - - public object GetOptions(PropertyInfo property) => new RuntimeSelectListItemsProviderSettings(GetType(), new VehicleContext(_random.Next(100))); - - public ValueTask> GetItemsAsync(object? context, CancellationToken cancellationToken = default) - { - var vehicleContext = (VehicleContext) context!; - var brands = new[] { "BMW", "Peugot", "Tesla", vehicleContext.RandomNumber.ToString() }; - var items = brands.Select(x => new SelectListItem(x)).ToList(); - return new ValueTask>(items); - } - - protected override IActivityExecutionResult OnExecute() - { - Output = Brand; - return Done(); - } - } - - public record VehicleContext(int RandomNumber); -} \ No newline at end of file diff --git a/src/samples/server/Elsa.Samples.Server.Host/Elsa.Samples.Server.Host.csproj b/src/samples/server/Elsa.Samples.Server.Host/Elsa.Samples.Server.Host.csproj index af0e2b858..32b93819f 100644 --- a/src/samples/server/Elsa.Samples.Server.Host/Elsa.Samples.Server.Host.csproj +++ b/src/samples/server/Elsa.Samples.Server.Host/Elsa.Samples.Server.Host.csproj @@ -1,5 +1,5 @@ - + net5.0 @@ -9,46 +9,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + diff --git a/src/samples/server/Elsa.Samples.Server.Host/Models/SampleInputModel.cs b/src/samples/server/Elsa.Samples.Server.Host/Models/SampleInputModel.cs deleted file mode 100644 index d2ca8be42..000000000 --- a/src/samples/server/Elsa.Samples.Server.Host/Models/SampleInputModel.cs +++ /dev/null @@ -1,4 +0,0 @@ -namespace Elsa.Samples.Server.Host.Models -{ - public record SampleInputModel(string Name); -} \ No newline at end of file diff --git a/src/samples/server/Elsa.Samples.Server.Host/Startup.cs b/src/samples/server/Elsa.Samples.Server.Host/Startup.cs index f52682218..21277d1dd 100644 --- a/src/samples/server/Elsa.Samples.Server.Host/Startup.cs +++ b/src/samples/server/Elsa.Samples.Server.Host/Startup.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using Elsa.Samples.Server.Host.Activities; using Elsa.Server.Hangfire.Extensions; using Hangfire; using Microsoft.AspNetCore.Builder; @@ -55,8 +54,6 @@ namespace Elsa.Samples.Server.Host }; services - .AddActivityPropertyOptionsProvider() - .AddRuntimeSelectItemsProvider() .AddElsa(elsa => elsa .AddActivitiesFrom() .AddWorkflowsFrom() diff --git a/src/samples/server/Elsa.Samples.Server.Host/appsettings.json b/src/samples/server/Elsa.Samples.Server.Host/appsettings.json index 718b30e75..2f4d069c8 100644 --- a/src/samples/server/Elsa.Samples.Server.Host/appsettings.json +++ b/src/samples/server/Elsa.Samples.Server.Host/appsettings.json @@ -17,7 +17,7 @@ }, "Elsa": { "Features": [ - "Persistence:MongoDb", + "Persistence:EntityFrameworkCore:Sqlite", "Dispatcher:Hangfire", "Console", "Http", diff --git a/test/integration/Elsa.Core.IntegrationTests/Triggers/TriggerIndexerIntegrationTests.cs b/test/integration/Elsa.Core.IntegrationTests/Triggers/TriggerIndexerIntegrationTests.cs index c79c99488..96e3d27ab 100644 --- a/test/integration/Elsa.Core.IntegrationTests/Triggers/TriggerIndexerIntegrationTests.cs +++ b/test/integration/Elsa.Core.IntegrationTests/Triggers/TriggerIndexerIntegrationTests.cs @@ -8,7 +8,7 @@ using Elsa.Activities.Signaling; using Elsa.Builders; using Elsa.Models; using Elsa.Persistence; -using Elsa.Services.Triggers; +using Elsa.Services; using Microsoft.Extensions.DependencyInjection; using Xunit;