From 2c98ec883b21c42a3917f58d4cde50d6699953c8 Mon Sep 17 00:00:00 2001 From: Savin Popescu Date: Thu, 8 Dec 2022 14:50:34 +0200 Subject: [PATCH 1/2] Updated definition loader to evaluate children inputs --- .../Services/DefinitionLoader.cs | 24 ++++++++++++++++--- .../Steps/DynamicDataStep.cs | 16 +++++++++++++ .../stored-dynamic-definition.json | 18 ++++++++++++++ 3 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 test/WorkflowCore.TestAssets/Steps/DynamicDataStep.cs diff --git a/src/WorkflowCore.DSL/Services/DefinitionLoader.cs b/src/WorkflowCore.DSL/Services/DefinitionLoader.cs index ef7fadc9a..75804d8f7 100644 --- a/src/WorkflowCore.DSL/Services/DefinitionLoader.cs +++ b/src/WorkflowCore.DSL/Services/DefinitionLoader.cs @@ -398,12 +398,30 @@ void acn(IStepBody pStep, object pData, IStepExecutionContext pContext) } } - foreach (var child in subobj.Children()) - stack.Push(child); + foreach (var child in subobj.Children()) + { + var jobj = destObj.SelectToken(child.Path); + + if (jobj is JObject) + { + stack.Push(jobj as JObject); + } + else if (jobj is JArray) + { + foreach (var obj in jobj as JArray) + { + var jobj2 = destObj.SelectToken(obj.Path); + if (jobj2 is JObject) + { + stack.Push(jobj2 as JObject); + } + } + } + } } stepProperty.SetValue(pStep, destObj); - } + } return acn; } diff --git a/test/WorkflowCore.TestAssets/Steps/DynamicDataStep.cs b/test/WorkflowCore.TestAssets/Steps/DynamicDataStep.cs new file mode 100644 index 000000000..db58b9c54 --- /dev/null +++ b/test/WorkflowCore.TestAssets/Steps/DynamicDataStep.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json.Linq; +using WorkflowCore.Interface; +using WorkflowCore.Models; + +namespace WorkflowCore.TestAssets.Steps +{ + public class DynamicDataStep : StepBody + { + public JObject DynamicData { get; set; } + + public override ExecutionResult Run(IStepExecutionContext context) + { + return ExecutionResult.Next(); + } + } +} diff --git a/test/WorkflowCore.TestAssets/stored-dynamic-definition.json b/test/WorkflowCore.TestAssets/stored-dynamic-definition.json index 8c6a10dbe..93c8a3e34 100644 --- a/test/WorkflowCore.TestAssets/stored-dynamic-definition.json +++ b/test/WorkflowCore.TestAssets/stored-dynamic-definition.json @@ -83,8 +83,26 @@ { "Id": "Step4", "StepType": "WorkflowCore.TestAssets.Steps.Counter, WorkflowCore.TestAssets", + "NextStepId": "Step5", "Inputs": { "Value": "data[\"Counter6\"]" }, "Outputs": { "Counter6": "step.Value" } + }, + { + "Id": "Step5", + "StepType": "WorkflowCore.TestAssets.Steps.DynamicDataStep, WorkflowCore.TestAssets", + "Inputs": { + "DynamicData": { + "ComplexObject": { + "@Integer": "data[\"Counter1\"]", + "Array": [ + { + "@Computed": "data[\"Counter6\"]" + }, + "string" + ] + } + } + } } ] } \ No newline at end of file From eb507267c7cac8cef4267caefafbf615011b3270 Mon Sep 17 00:00:00 2001 From: Emanuel Oprea Date: Thu, 8 Dec 2022 15:08:07 +0200 Subject: [PATCH 2/2] Updated variable names --- .../Services/DefinitionLoader.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/WorkflowCore.DSL/Services/DefinitionLoader.cs b/src/WorkflowCore.DSL/Services/DefinitionLoader.cs index 75804d8f7..0d8fe1af4 100644 --- a/src/WorkflowCore.DSL/Services/DefinitionLoader.cs +++ b/src/WorkflowCore.DSL/Services/DefinitionLoader.cs @@ -400,20 +400,20 @@ void acn(IStepBody pStep, object pData, IStepExecutionContext pContext) foreach (var child in subobj.Children()) { - var jobj = destObj.SelectToken(child.Path); + var childObject = destObj.SelectToken(child.Path); - if (jobj is JObject) + if (childObject is JObject) { - stack.Push(jobj as JObject); + stack.Push(childObject as JObject); } - else if (jobj is JArray) + else if (childObject is JArray) { - foreach (var obj in jobj as JArray) + foreach (var item in childObject as JArray) { - var jobj2 = destObj.SelectToken(obj.Path); - if (jobj2 is JObject) + var elem = destObj.SelectToken(item.Path); + if (elem is JObject) { - stack.Push(jobj2 as JObject); + stack.Push(elem as JObject); } } }