diff --git a/Elsa.sln b/Elsa.sln index 7c8922458..fd62fa97b 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -23,7 +23,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution", "solution", "{7D icon.png = icon.png NuGet.Config = NuGet.Config README.md = README.md - update-migrations.sh = update-migrations.sh EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{0354F050-3992-4DD4-B0EE-5FBA04AC72B6}" diff --git a/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/ConnectionJsonConverter.cs b/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/ConnectionJsonConverter.cs index 91727e15f..11498714b 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/ConnectionJsonConverter.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/ConnectionJsonConverter.cs @@ -31,7 +31,7 @@ public class ConnectionJsonConverter : JsonConverter var targetElement = doc.RootElement.GetProperty("target"); var sourceId = sourceElement.GetProperty("activity").GetString()!; var targetId = targetElement.TryGetProperty("activity", out var targetIdValue) ? targetIdValue.GetString() : default; - var sourcePort = sourceElement.GetProperty("port").GetString()!; + var sourcePort = sourceElement.TryGetProperty("port", out var sourcePortValue) ? sourcePortValue.GetString() : default; var targetPort = targetElement.TryGetProperty("port", out var targetPortValue) ? targetPortValue.GetString() : default; var sourceActivity = _activities.TryGetValue(sourceId, out var s) ? s : default!; diff --git a/src/modules/Elsa.Workflows.Core/Extensions/WorkflowBuilderExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/WorkflowBuilderExtensions.cs new file mode 100644 index 000000000..48c70e56d --- /dev/null +++ b/src/modules/Elsa.Workflows.Core/Extensions/WorkflowBuilderExtensions.cs @@ -0,0 +1,26 @@ +using System.Diagnostics.CodeAnalysis; +using Elsa.Workflows.Activities; +using Elsa.Workflows.Contracts; + +// ReSharper disable once CheckNamespace +namespace Elsa.Extensions; + +/// +/// Contains extensions for . +/// +public static class WorkflowBuilderExtensions +{ + /// + /// Builds a workflow asynchronously. + /// + /// The type of the workflow. + /// The instance to build the workflow. + /// The cancellation token. + /// A task representing the asynchronous operation that returns the built . + public static Task BuildWorkflowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] T>( + this IWorkflowBuilder builder, + CancellationToken cancellationToken = default) where T : IWorkflow + { + return builder.BuildWorkflowAsync(Activator.CreateInstance(), cancellationToken); + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Core/Extensions/WorkflowDefinitionBuilderExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/WorkflowDefinitionBuilderExtensions.cs deleted file mode 100644 index a99313588..000000000 --- a/src/modules/Elsa.Workflows.Core/Extensions/WorkflowDefinitionBuilderExtensions.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Elsa.Workflows.Activities; -using Elsa.Workflows.Contracts; - -// ReSharper disable once CheckNamespace -namespace Elsa.Extensions; - -public static class WorkflowDefinitionBuilderExtensions -{ - public static Task BuildWorkflowAsync(this IWorkflowBuilder builder, CancellationToken cancellationToken = default) where T : IWorkflow => builder.BuildWorkflowAsync(Activator.CreateInstance(), cancellationToken); -} \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Management/Serialization/Converters/InputJsonConverter.cs b/src/modules/Elsa.Workflows.Management/Serialization/Converters/InputJsonConverter.cs index 60fbea6b4..fdf2e229b 100644 --- a/src/modules/Elsa.Workflows.Management/Serialization/Converters/InputJsonConverter.cs +++ b/src/modules/Elsa.Workflows.Management/Serialization/Converters/InputJsonConverter.cs @@ -37,10 +37,17 @@ public class InputJsonConverter : JsonConverter> var expressionElement = doc.RootElement.TryGetProperty("expression", out var expressionElementValue) ? expressionElementValue : default; var expressionTypeNameElement = expressionElement.ValueKind != JsonValueKind.Undefined ? expressionElement.TryGetProperty("type", out var expressionTypeNameElementValue) ? expressionTypeNameElementValue : default : default; - var expressionTypeName = expressionTypeNameElement.ValueKind != JsonValueKind.Undefined ? expressionTypeNameElement.GetString() ?? "Literal" : default; - var expressionDescriptor = expressionTypeName != null ? _expressionDescriptorRegistry.Find(expressionTypeName) : default; - var expression = expressionElement.ValueKind == JsonValueKind.Object ? expressionElement.Deserialize(options) : new Expression(expressionTypeName!, null); + var expressionTypeName = expressionTypeNameElement.ValueKind != JsonValueKind.Undefined ? expressionTypeNameElement.GetString() ?? "Literal" : "Literal"; + var expressionDescriptor = _expressionDescriptorRegistry.Find(expressionTypeName); var memoryBlockReference = expressionDescriptor?.MemoryBlockReferenceFactory(); + var memoryBlockReferenceType = memoryBlockReference?.GetType(); + var expressionValueElement = expressionElement.TryGetProperty("value", out var expressionElementValueValue) ? expressionElementValueValue : default; + var expressionValue = expressionValueElement.ValueKind == JsonValueKind.String + ? expressionValueElement.GetString() + : expressionValueElement.ValueKind != JsonValueKind.Undefined && memoryBlockReferenceType != null + ? expressionValueElement.Deserialize(memoryBlockReferenceType, options)! + : default; + var expression = new Expression(expressionTypeName, expressionValue); if (memoryBlockReference == null) return default!; diff --git a/test/integration/Elsa.IntegrationTests/Activities/Break/BreakTests.cs b/test/integration/Elsa.IntegrationTests/Activities/Break/BreakTests.cs index 2eb6449fa..4db89901c 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/Break/BreakTests.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/Break/BreakTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.IntegrationTests.Activities.Workflows; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Activities/Break/Workflows/BreakForEachWorkflow.cs b/test/integration/Elsa.IntegrationTests/Activities/Break/Workflows/BreakForEachWorkflow.cs index 39cc79098..c86bf55c3 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/Break/Workflows/BreakForEachWorkflow.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/Break/Workflows/BreakForEachWorkflow.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using Elsa.Workflows; using Elsa.Workflows.Activities; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Activities/Finish/FinishTests.cs b/test/integration/Elsa.IntegrationTests/Activities/Finish/FinishTests.cs index a85c017b6..84957434a 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/Finish/FinishTests.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/Finish/FinishTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Activities/ForEach/ForEachTests.cs b/test/integration/Elsa.IntegrationTests/Activities/ForEach/ForEachTests.cs index 1687787c7..09f252f7b 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/ForEach/ForEachTests.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/ForEach/ForEachTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; using Microsoft.Extensions.DependencyInjection; diff --git a/test/integration/Elsa.IntegrationTests/Activities/ForEach/ForEachWorkflow.cs b/test/integration/Elsa.IntegrationTests/Activities/ForEach/ForEachWorkflow.cs index c2a971757..fb581068f 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/ForEach/ForEachWorkflow.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/ForEach/ForEachWorkflow.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using Elsa.Workflows; using Elsa.Workflows.Activities; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Activities/Fork/ForkTests.cs b/test/integration/Elsa.IntegrationTests/Activities/Fork/ForkTests.cs index 5e02a1858..9af605502 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/Fork/ForkTests.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/Fork/ForkTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Extensions; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Activities/If/ComplexIfWorkflow.cs b/test/integration/Elsa.IntegrationTests/Activities/If/ComplexIfWorkflow.cs index c0224f1e8..975034fad 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/If/ComplexIfWorkflow.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/If/ComplexIfWorkflow.cs @@ -1,4 +1,3 @@ -using System; using Elsa.Workflows; using Elsa.Workflows.Activities; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Activities/If/IfTests.cs b/test/integration/Elsa.IntegrationTests/Activities/If/IfTests.cs index 9a8f9a16a..35b9899bd 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/If/IfTests.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/If/IfTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; using Microsoft.Extensions.DependencyInjection; diff --git a/test/integration/Elsa.IntegrationTests/Activities/If/IfThenWorkflow.cs b/test/integration/Elsa.IntegrationTests/Activities/If/IfThenWorkflow.cs index 2babe76ac..12eb85670 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/If/IfThenWorkflow.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/If/IfThenWorkflow.cs @@ -1,4 +1,3 @@ -using System; using Elsa.Workflows; using Elsa.Workflows.Activities; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Activities/Sequence/SequenceTests.cs b/test/integration/Elsa.IntegrationTests/Activities/Sequence/SequenceTests.cs index 5df116633..0741e447f 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/Sequence/SequenceTests.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/Sequence/SequenceTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; using Microsoft.Extensions.DependencyInjection; diff --git a/test/integration/Elsa.IntegrationTests/Activities/WriteLine/WriteLineTests.cs b/test/integration/Elsa.IntegrationTests/Activities/WriteLine/WriteLineTests.cs index 9c888c88b..be84dcda7 100644 --- a/test/integration/Elsa.IntegrationTests/Activities/WriteLine/WriteLineTests.cs +++ b/test/integration/Elsa.IntegrationTests/Activities/WriteLine/WriteLineTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows.Activities; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ActivityNotificationsMiddleware/TestHandler.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ActivityNotificationsMiddleware/TestHandler.cs index 9cd250f9a..96a411862 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ActivityNotificationsMiddleware/TestHandler.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ActivityNotificationsMiddleware/TestHandler.cs @@ -1,5 +1,3 @@ -using System.Threading; -using System.Threading.Tasks; using Elsa.Mediator.Contracts; using Elsa.Workflows.Notifications; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ActivityNotificationsMiddleware/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ActivityNotificationsMiddleware/Tests.cs index 2201afd31..9370f526c 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ActivityNotificationsMiddleware/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ActivityNotificationsMiddleware/Tests.cs @@ -1,4 +1,3 @@ -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; using Elsa.Workflows.Notifications; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ActivityOutputs/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ActivityOutputs/Tests.cs index 1d822eaec..177304447 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ActivityOutputs/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ActivityOutputs/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; using Microsoft.Extensions.DependencyInjection; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/Blocking/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/Blocking/Tests.cs index 7740fa25e..f3734223b 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/Blocking/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/Blocking/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Extensions; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/BlockingAndBreaking/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/BlockingAndBreaking/Tests.cs index c0489cb3b..c8e0453f3 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/BlockingAndBreaking/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/BlockingAndBreaking/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Extensions; using Elsa.IntegrationTests.Scenarios.BlockingAndBreaking.Workflows; using Elsa.Testing.Shared; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/CanExecute/Activities/CustomActivity.cs b/test/integration/Elsa.IntegrationTests/Scenarios/CanExecute/Activities/CustomActivity.cs index 9d58f8138..ed81f9648 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/CanExecute/Activities/CustomActivity.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/CanExecute/Activities/CustomActivity.cs @@ -1,4 +1,3 @@ -using System; using Elsa.Expressions.Models; using Elsa.Extensions; using Elsa.Workflows; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/CanExecute/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/CanExecute/Tests.cs index a4bd5c76b..b324ebcc2 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/CanExecute/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/CanExecute/Tests.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Elsa.IntegrationTests.Scenarios.CanExecute.Activities; using Elsa.IntegrationTests.Scenarios.CanExecute.Workflows; using Elsa.Testing.Shared; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/Composites/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/Composites/Tests.cs index 1a51fdb79..0d7802a27 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/Composites/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/Composites/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Extensions; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/CompositesAndOutcomes/CompositesAndOutcomeWaitAnyTests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/CompositesAndOutcomes/CompositesAndOutcomeWaitAnyTests.cs index 3dca59b65..40a489fbc 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/CompositesAndOutcomes/CompositesAndOutcomeWaitAnyTests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/CompositesAndOutcomes/CompositesAndOutcomeWaitAnyTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows; using Xunit; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/CompositesPassingData/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/CompositesPassingData/Tests.cs index 4649f6785..1126c5c3e 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/CompositesPassingData/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/CompositesPassingData/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Extensions; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/DependencyWorkflows/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/DependencyWorkflows/Tests.cs index 6afc82411..d5f519dab 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/DependencyWorkflows/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/DependencyWorkflows/Tests.cs @@ -1,7 +1,4 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Elsa.Testing.Shared; +using Elsa.Testing.Shared; using Xunit; using Xunit.Abstractions; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ExplicitJoins/ExplicitJoinWaitAnyTests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ExplicitJoins/ExplicitJoinWaitAnyTests.cs index c20a87fc9..025330f80 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ExplicitJoins/ExplicitJoinWaitAnyTests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ExplicitJoins/ExplicitJoinWaitAnyTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows; using Xunit; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartCompletion/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartCompletion/Tests.cs index cd6c0cc1f..bf3064e59 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartCompletion/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartCompletion/Tests.cs @@ -1,6 +1,4 @@ -using System; -using System.Threading.Tasks; -using Elsa.Testing.Shared; +using Elsa.Testing.Shared; using Elsa.Workflows; using Xunit; using Xunit.Abstractions; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartNextActivity/Activities/CustomActivity.cs b/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartNextActivity/Activities/CustomActivity.cs index 3d0896cff..a14146250 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartNextActivity/Activities/CustomActivity.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartNextActivity/Activities/CustomActivity.cs @@ -1,4 +1,3 @@ -using System.Threading.Tasks; using Elsa.Extensions; using Elsa.Workflows; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartNextActivity/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartNextActivity/Tests.cs index 12ec27789..e490c3c03 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartNextActivity/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/FlowchartNextActivity/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.IntegrationTests.Scenarios.FlowchartNextActivity.Workflows; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/BraidedWorkflowTests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/BraidedWorkflowTests.cs index 3f9f15089..ae8237395 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/BraidedWorkflowTests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/BraidedWorkflowTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.IntegrationTests.Scenarios.ImplicitJoins.Workflows; using Elsa.Testing.Shared; using Elsa.Workflows; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/ImplicitLoopWorkflowTests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/ImplicitLoopWorkflowTests.cs index 73855c183..07d0f35c1 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/ImplicitLoopWorkflowTests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/ImplicitLoopWorkflowTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.IntegrationTests.Scenarios.ImplicitJoins.Workflows; using Elsa.Testing.Shared; using Elsa.Workflows; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/JoinRunsOnceTests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/JoinRunsOnceTests.cs index abe25b89d..f9c01cb0a 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/JoinRunsOnceTests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/JoinRunsOnceTests.cs @@ -1,5 +1,3 @@ -using System; -using System.Threading.Tasks; using Elsa.Common.Models; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/ParallelJoinCompletesTests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/ParallelJoinCompletesTests.cs index c8194bb6a..bdc1b2727 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/ParallelJoinCompletesTests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ImplicitJoins/ParallelJoinCompletesTests.cs @@ -1,5 +1,3 @@ -using System; -using System.Threading.Tasks; using Elsa.Common.Models; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ImportAndExecute/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ImportAndExecute/Tests.cs index 020235af0..cedaeb87c 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ImportAndExecute/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ImportAndExecute/Tests.cs @@ -1,7 +1,4 @@ -using System; -using Elsa.Testing.Shared; -using System.Linq; -using System.Threading.Tasks; +using Elsa.Testing.Shared; using Xunit; using Xunit.Abstractions; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/Incidents/IncidentStrategyTests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/Incidents/IncidentStrategyTests.cs index c8cd70a4c..5edfb4919 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/Incidents/IncidentStrategyTests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/Incidents/IncidentStrategyTests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.IntegrationTests.Scenarios.Incidents.Statics; using Elsa.IntegrationTests.Scenarios.Incidents.Workflows; using Elsa.Testing.Shared; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/Incidents/Statics/TestSettings.cs b/test/integration/Elsa.IntegrationTests/Scenarios/Incidents/Statics/TestSettings.cs index 7d6a2a82f..3906f8a25 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/Incidents/Statics/TestSettings.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/Incidents/Statics/TestSettings.cs @@ -1,4 +1,3 @@ -using System; using Elsa.Workflows.IncidentStrategies; namespace Elsa.IntegrationTests.Scenarios.Incidents.Statics; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/JsonObjectSerialization/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/JsonObjectSerialization/Tests.cs index 20690beb9..707ffa78c 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/JsonObjectSerialization/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/JsonObjectSerialization/Tests.cs @@ -1,6 +1,4 @@ -using System; -using System.Threading.Tasks; -using Elsa.Testing.Shared; +using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; using Elsa.Workflows.State; using Microsoft.Extensions.DependencyInjection; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/JsonObjectToObjectRemainsJsonObject/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/JsonObjectToObjectRemainsJsonObject/Tests.cs index 1526c9ea5..86c0de54c 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/JsonObjectToObjectRemainsJsonObject/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/JsonObjectToObjectRemainsJsonObject/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.IntegrationTests.Scenarios.JsonObjectToObjectRemainsJsonObject.Workflows; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildCompletion/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildCompletion/Tests.cs index 65995796b..12a61876d 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildCompletion/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildCompletion/Tests.cs @@ -1,6 +1,4 @@ -using System; -using System.Threading.Tasks; -using Elsa.Testing.Shared; +using Elsa.Testing.Shared; using Elsa.Workflows; using Xunit; using Xunit.Abstractions; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildInputs/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildInputs/Tests.cs index 481f33688..253ef09ae 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildInputs/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildInputs/Tests.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Elsa.Testing.Shared; +using Elsa.Testing.Shared; using Xunit; using Xunit.Abstractions; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildOutputMapping/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildOutputMapping/Tests.cs index b54de7602..fb0e2e06f 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildOutputMapping/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/ParentChildOutputMapping/Tests.cs @@ -1,7 +1,4 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Elsa.Testing.Shared; +using Elsa.Testing.Shared; using Xunit; using Xunit.Abstractions; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariables/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariables/Tests.cs index 90f2aeb24..af3a831be 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariables/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariables/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; using Microsoft.Extensions.DependencyInjection; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Tests.cs index 6d2d02377..50a92c561 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Linq; -using System.Threading.Tasks; using Elsa.IntegrationTests.Scenarios.SetGetVariablesFromActivities.Workflows; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/DefaultRuntimeTests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/DefaultRuntimeTests.cs index 3514762ad..ff696c770 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/DefaultRuntimeTests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/DefaultRuntimeTests.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; using Elsa.IntegrationTests.Scenarios.WorkflowCancellation.Workflows; using Elsa.Mediator.HostedServices; using Elsa.Mediator.Options; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/ProtoActorTests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/ProtoActorTests.cs index f22f4ae89..e2bad0701 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/ProtoActorTests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/ProtoActorTests.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; using Elsa.Extensions; using Elsa.IntegrationTests.Scenarios.WorkflowCancellation.Workflows; using Elsa.Mediator.HostedServices; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/Workflows/BulkSuspendedWorkflow.cs b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/Workflows/BulkSuspendedWorkflow.cs index 35571771c..3777089c9 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/Workflows/BulkSuspendedWorkflow.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowCancellation/Workflows/BulkSuspendedWorkflow.cs @@ -1,5 +1,3 @@ -using System; -using System.Linq; using Elsa.Scheduling.Activities; using Elsa.Workflows; using Elsa.Workflows.Activities; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowOutputMapping/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowOutputMapping/Tests.cs index 4bf1f8763..623df9ec7 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowOutputMapping/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowOutputMapping/Tests.cs @@ -1,6 +1,4 @@ -using System; -using System.Threading.Tasks; -using Elsa.Testing.Shared; +using Elsa.Testing.Shared; using Xunit; using Xunit.Abstractions; diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowResults/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowResults/Tests.cs index 1047149aa..df8a5bb09 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowResults/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/WorkflowResults/Tests.cs @@ -1,5 +1,3 @@ -using System; -using System.Threading.Tasks; using Elsa.Testing.Shared; using Elsa.Workflows.Activities; using Elsa.Workflows.Contracts; diff --git a/test/integration/Elsa.IntegrationTests/Serialization/JsonSerialization/Tests.cs b/test/integration/Elsa.IntegrationTests/Serialization/JsonSerialization/Tests.cs index 76192a41d..b1e4dfb66 100644 --- a/test/integration/Elsa.IntegrationTests/Serialization/JsonSerialization/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Serialization/JsonSerialization/Tests.cs @@ -1,6 +1,3 @@ -using System; -using System.Collections.Generic; -using System.IO; using System.Text.Json; using System.Text.Json.Nodes; using Elsa.Testing.Shared; diff --git a/test/integration/Elsa.IntegrationTests/Serialization/Polymorphism/Models.cs b/test/integration/Elsa.IntegrationTests/Serialization/Polymorphism/Models.cs index 4550ab9ff..a0194203c 100644 --- a/test/integration/Elsa.IntegrationTests/Serialization/Polymorphism/Models.cs +++ b/test/integration/Elsa.IntegrationTests/Serialization/Polymorphism/Models.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using Elsa.Extensions; namespace Elsa.IntegrationTests.Serialization.Polymorphism; diff --git a/test/integration/Elsa.IntegrationTests/Serialization/Polymorphism/Tests.cs b/test/integration/Elsa.IntegrationTests/Serialization/Polymorphism/Tests.cs index d232247f3..24cd0c354 100644 --- a/test/integration/Elsa.IntegrationTests/Serialization/Polymorphism/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Serialization/Polymorphism/Tests.cs @@ -1,6 +1,4 @@ -using System.Collections.Generic; using System.Dynamic; -using System.IO; using System.Text.Json; using System.Text.Json.Serialization; using System.Text.Json.Serialization.Metadata; diff --git a/test/integration/Elsa.IntegrationTests/Serialization/SpecialPropertySerialization/Tests.cs b/test/integration/Elsa.IntegrationTests/Serialization/SpecialPropertySerialization/Tests.cs index cd9a27f23..28ab96648 100644 --- a/test/integration/Elsa.IntegrationTests/Serialization/SpecialPropertySerialization/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Serialization/SpecialPropertySerialization/Tests.cs @@ -1,7 +1,5 @@ using Elsa.Testing.Shared; using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; using System.Text.Json.Nodes; using Elsa.Workflows.Contracts; using Xunit; diff --git a/test/integration/Elsa.IntegrationTests/Serialization/VariableExpressions/Tests.cs b/test/integration/Elsa.IntegrationTests/Serialization/VariableExpressions/Tests.cs new file mode 100644 index 000000000..e9a4a6b31 --- /dev/null +++ b/test/integration/Elsa.IntegrationTests/Serialization/VariableExpressions/Tests.cs @@ -0,0 +1,40 @@ +using Elsa.Extensions; +using Elsa.Testing.Shared; +using Elsa.Workflows.Activities; +using Elsa.Workflows.Activities.Flowchart.Activities; +using Elsa.Workflows.Contracts; +using Elsa.Workflows.Management.Contracts; +using Elsa.Workflows.Memory; +using Microsoft.Extensions.DependencyInjection; +using Xunit; +using Xunit.Abstractions; + +namespace Elsa.IntegrationTests.Serialization.VariableExpressions; + +/// +/// Contains tests for variable expressions serialization. +/// +public class Tests +{ + private readonly IWorkflowSerializer _workflowSerializer; + private readonly IWorkflowBuilder _workflowBuilder; + + public Tests(ITestOutputHelper testOutputHelper) + { + var serviceProvider = new TestApplicationBuilder(testOutputHelper).Build(); + _workflowSerializer = serviceProvider.GetRequiredService(); + IWorkflowBuilderFactory workflowBuilderFactory = serviceProvider.GetRequiredService(); + _workflowBuilder = workflowBuilderFactory.CreateBuilder(); + } + + [Fact(DisplayName = "Variable types remain intact after serialization")] + public async Task Test1() + { + var workflow = await _workflowBuilder.BuildWorkflowAsync(); + var serialized = _workflowSerializer.Serialize(workflow); + var deserializedWorkflow = _workflowSerializer.Deserialize(serialized); + var rehydratedWriteLine = (WriteLine)((Flowchart)deserializedWorkflow.Root).Activities.ElementAt(0); + + Assert.IsType>(rehydratedWriteLine.Text.Expression!.Value); + } +} \ No newline at end of file diff --git a/test/integration/Elsa.IntegrationTests/Serialization/VariableExpressions/Workflows.cs b/test/integration/Elsa.IntegrationTests/Serialization/VariableExpressions/Workflows.cs new file mode 100644 index 000000000..3ccf39287 --- /dev/null +++ b/test/integration/Elsa.IntegrationTests/Serialization/VariableExpressions/Workflows.cs @@ -0,0 +1,24 @@ +using Elsa.Workflows; +using Elsa.Workflows.Activities; +using Elsa.Workflows.Activities.Flowchart.Activities; +using Elsa.Workflows.Contracts; + +namespace Elsa.IntegrationTests.Serialization.VariableExpressions; + +class SampleWorkflow : WorkflowBase +{ + protected override void Build(IWorkflowBuilder workflow) + { + var variable1 = workflow.WithVariable("Some Value"); + var writeLine1 = new WriteLine(variable1); + + workflow.Root = new Flowchart + { + Activities = + { + writeLine1 + }, + Start = writeLine1 + }; + } +} \ No newline at end of file diff --git a/test/integration/Elsa.IntegrationTests/Serialization/VariableTypes/Models.cs b/test/integration/Elsa.IntegrationTests/Serialization/VariableTypes/Models.cs index 8a1669886..a213b8045 100644 --- a/test/integration/Elsa.IntegrationTests/Serialization/VariableTypes/Models.cs +++ b/test/integration/Elsa.IntegrationTests/Serialization/VariableTypes/Models.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using Elsa.Workflows.Memory; namespace Elsa.IntegrationTests.Serialization.VariableTypes; diff --git a/test/integration/Elsa.IntegrationTests/Serialization/VariableTypes/Tests.cs b/test/integration/Elsa.IntegrationTests/Serialization/VariableTypes/Tests.cs index 0b072bcfa..82a750fa8 100644 --- a/test/integration/Elsa.IntegrationTests/Serialization/VariableTypes/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Serialization/VariableTypes/Tests.cs @@ -1,5 +1,4 @@ using System.Collections.ObjectModel; -using System.Linq; using Elsa.Testing.Shared; using Elsa.Workflows.Contracts; using Elsa.Workflows.Memory;