From e3efec75b00c90d5b34f64b8dcb21966fcaa5953 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Wed, 18 Oct 2023 19:23:36 +0200 Subject: [PATCH] Copy local output variables to attached output variables --- .../WorkflowDefinitionActivity.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/modules/Elsa.Workflows.Management/Activities/WorkflowDefinitionActivity/WorkflowDefinitionActivity.cs b/src/modules/Elsa.Workflows.Management/Activities/WorkflowDefinitionActivity/WorkflowDefinitionActivity.cs index f63244dfc..5039991d2 100644 --- a/src/modules/Elsa.Workflows.Management/Activities/WorkflowDefinitionActivity/WorkflowDefinitionActivity.cs +++ b/src/modules/Elsa.Workflows.Management/Activities/WorkflowDefinitionActivity/WorkflowDefinitionActivity.cs @@ -128,6 +128,25 @@ public class WorkflowDefinitionActivity : Composite, IInitializable context.WorkflowExecutionContext.TransientProperties.Remove(nameof(CompleteCompositeSignal)); } + // Copy any collected outputs into the synthetic properties. + foreach (var outputDescriptor in targetContext.ActivityDescriptor.Outputs) + { + // Create a local scope variable for each output property. + var variable = new Variable + { + Id = outputDescriptor.Name, + Name = outputDescriptor.Name + }; + + // Use the variable to read the value from the memory. + var value = variable.Get(targetContext); + + // Assign the value to the output synthetic property. + var output = SyntheticProperties.TryGetValue(outputDescriptor.Name, out var outputValue) ? (Output?)outputValue : default; + targetContext.Set(output, value); + } + + // Complete this activity with the signal value. await targetContext.CompleteActivityAsync(completeCompositeSignal?.Value); }