diff --git a/Elsa.sln b/Elsa.sln index 6b0a00c24..525608a7e 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -115,7 +115,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Testing.Shared", "src\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Workflows.Sinks", "src\modules\Elsa.Workflows.Sinks\Elsa.Workflows.Sinks.csproj", "{7F1FDA45-C731-4DCC-BFF6-403D4B857A93}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WorkflowFunctions", "src\samples\console\Elsa.Samples.WorkflowFunctions\Elsa.Samples.WorkflowFunctions.csproj", "{4782CA82-83B0-437E-8C97-636BB8B402EA}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Console.WorkflowFunctions", "src\samples\console\Elsa.Samples.Console.WorkflowFunctions\Elsa.Samples.Console.WorkflowFunctions.csproj", "{4782CA82-83B0-437E-8C97-636BB8B402EA}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.MyBackendApi", "src\samples\aspnet\Elsa.Samples.MyBackendApi\Elsa.Samples.MyBackendApi.csproj", "{1A37795B-EBAB-4A9F-8CF0-373DA3D4C64A}" EndProject diff --git a/src/modules/Elsa.Workflows.Core/Abstractions/WorkflowBase.cs b/src/modules/Elsa.Workflows.Core/Abstractions/WorkflowBase.cs index eee2b9e9c..6e4a0a5b9 100644 --- a/src/modules/Elsa.Workflows.Core/Abstractions/WorkflowBase.cs +++ b/src/modules/Elsa.Workflows.Core/Abstractions/WorkflowBase.cs @@ -69,7 +69,7 @@ public abstract class WorkflowBase : WorkflowBase /// protected override ValueTask AfterBuildAsync(IWorkflowBuilder builder, CancellationToken cancellationToken = default) { - var variables = builder.Variables ?? new List(); + var variables = builder.Variables; if(!variables.Contains(Result)) variables.Add(Result); diff --git a/src/modules/Elsa.Workflows.Core/Activities/Composite.cs b/src/modules/Elsa.Workflows.Core/Activities/Composite.cs index facbb565b..4b60cfcba 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Composite.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Composite.cs @@ -48,8 +48,9 @@ public abstract class Composite : Activity, IVariableContainer ConfigureActivities(context); // Register variables. - context.ExpressionExecutionContext.Memory.Declare(Variables); - + foreach (var variable in Variables) + variable.Set(context, variable.Value); + await context.ScheduleActivityAsync(Root, OnRootCompletedAsync); } diff --git a/src/modules/Elsa.Workflows.Core/Models/ActivityExecutionContext.cs b/src/modules/Elsa.Workflows.Core/Models/ActivityExecutionContext.cs index 4f14352b3..a9c6f4ff6 100644 --- a/src/modules/Elsa.Workflows.Core/Models/ActivityExecutionContext.cs +++ b/src/modules/Elsa.Workflows.Core/Models/ActivityExecutionContext.cs @@ -293,8 +293,8 @@ public class ActivityExecutionContext : IExecutionContext internal void IncrementExecutionCount() => _executionCount++; - private MemoryBlock? GetMemoryBlock(MemoryBlockReference locationBlockReference) => - ExpressionExecutionContext.Memory.TryGetBlock(locationBlockReference.Id, out var memoryBlock) - ? memoryBlock - : ParentActivityExecutionContext?.GetMemoryBlock(locationBlockReference); + private MemoryBlock? GetMemoryBlock(MemoryBlockReference locationBlockReference) + { + return ExpressionExecutionContext.TryGetBlock(locationBlockReference, out var memoryBlock) ? memoryBlock : default; + } } \ No newline at end of file diff --git a/src/samples/console/Elsa.Samples.WorkflowFunctions/Elsa.Samples.WorkflowFunctions.csproj b/src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Elsa.Samples.Console.WorkflowFunctions.csproj similarity index 100% rename from src/samples/console/Elsa.Samples.WorkflowFunctions/Elsa.Samples.WorkflowFunctions.csproj rename to src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Elsa.Samples.Console.WorkflowFunctions.csproj diff --git a/src/samples/console/Elsa.Samples.WorkflowFunctions/Program.cs b/src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Program.cs similarity index 95% rename from src/samples/console/Elsa.Samples.WorkflowFunctions/Program.cs rename to src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Program.cs index 025bbf711..96a13923d 100644 --- a/src/samples/console/Elsa.Samples.WorkflowFunctions/Program.cs +++ b/src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Program.cs @@ -1,4 +1,5 @@ using Elsa.Extensions; +using Elsa.Samples.Console.WorkflowFunctions.Workflows; using Elsa.Samples.WorkflowFunctions.Workflows; using Elsa.Workflows.Core.Contracts; using Microsoft.Extensions.DependencyInjection; diff --git a/src/samples/console/Elsa.Samples.WorkflowFunctions/Workflows/AddInputsWorkflow.cs b/src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Workflows/AddInputsWorkflow.cs similarity index 91% rename from src/samples/console/Elsa.Samples.WorkflowFunctions/Workflows/AddInputsWorkflow.cs rename to src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Workflows/AddInputsWorkflow.cs index 2211feafd..89f93c5f1 100644 --- a/src/samples/console/Elsa.Samples.WorkflowFunctions/Workflows/AddInputsWorkflow.cs +++ b/src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Workflows/AddInputsWorkflow.cs @@ -3,7 +3,7 @@ using Elsa.Workflows.Core.Abstractions; using Elsa.Workflows.Core.Activities; using Elsa.Workflows.Core.Contracts; -namespace Elsa.Samples.WorkflowFunctions.Workflows; +namespace Elsa.Samples.Console.WorkflowFunctions.Workflows; /// /// A simple workflow that takes two numbers as runtime workflow input and adds them together and returns the result as the workflow's result. diff --git a/src/samples/console/Elsa.Samples.WorkflowFunctions/Workflows/AddWorkflow.cs b/src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Workflows/AddWorkflow.cs similarity index 100% rename from src/samples/console/Elsa.Samples.WorkflowFunctions/Workflows/AddWorkflow.cs rename to src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Workflows/AddWorkflow.cs diff --git a/src/samples/console/Elsa.Samples.WorkflowFunctions/Workflows/SumInputsWorkflow.cs b/src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Workflows/SumInputsWorkflow.cs similarity index 86% rename from src/samples/console/Elsa.Samples.WorkflowFunctions/Workflows/SumInputsWorkflow.cs rename to src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Workflows/SumInputsWorkflow.cs index de059fd1c..100f4b022 100644 --- a/src/samples/console/Elsa.Samples.WorkflowFunctions/Workflows/SumInputsWorkflow.cs +++ b/src/samples/console/Elsa.Samples.Console.WorkflowFunctions/Workflows/SumInputsWorkflow.cs @@ -4,7 +4,7 @@ using Elsa.Workflows.Core.Activities; using Elsa.Workflows.Core.Contracts; using Elsa.Workflows.Core.Models; -namespace Elsa.Samples.WorkflowFunctions.Workflows; +namespace Elsa.Samples.Console.WorkflowFunctions.Workflows; /// /// A workflow that takes a list of numbers as runtime workflow input and returns the sum. @@ -14,15 +14,12 @@ public class SumInputsWorkflow : WorkflowBase protected override void Build(IWorkflowBuilder builder) { // Attach workflow variables. - var currentSum = new Variable(); - var currentValue = new Variable(); - - builder.WithVariable(currentSum); + var currentSum = builder.WithVariable(); + var currentValue = builder.WithVariable(); // Define the sum logic. builder.Root = new Sequence { - Variables = { currentValue }, Activities = { new ForEach(new Input>(context => context.GetInput("numbers")!))