From cdef7d409deaea5ef2348d4a0c8c6520efb63aa6 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 25 Apr 2023 22:39:56 +0200 Subject: [PATCH] Update input JSON converter to also read its ID --- .../Serialization/Converters/InputJsonConverter.cs | 13 ++++++++++++- .../Elsa.Samples.JsonWorkflows/HelloWorld.json | 1 + .../console/Elsa.Samples.JsonWorkflows/Program.cs | 1 - 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/modules/Elsa.Workflows.Management/Serialization/Converters/InputJsonConverter.cs b/src/modules/Elsa.Workflows.Management/Serialization/Converters/InputJsonConverter.cs index 45fba661c..f314ef33a 100644 --- a/src/modules/Elsa.Workflows.Management/Serialization/Converters/InputJsonConverter.cs +++ b/src/modules/Elsa.Workflows.Management/Serialization/Converters/InputJsonConverter.cs @@ -39,7 +39,7 @@ public class InputJsonConverter : JsonConverter> if (!expressionElement.TryGetProperty("type", out var expressionTypeNameElement)) return default!; - + if (!expressionElement.TryGetProperty("value", out _)) return default!; @@ -49,10 +49,21 @@ public class InputJsonConverter : JsonConverter> if (expressionSyntaxDescriptor == null) return default!; + doc.RootElement.TryGetProperty("memoryReference", out var memoryReferenceElement); + + var memoryReferenceId = memoryReferenceElement.ValueKind == JsonValueKind.Undefined + ? default + : memoryReferenceElement.TryGetProperty("id", out var memoryReferenceIdElement) + ? memoryReferenceIdElement.GetString() + : default; + var context = new ExpressionConstructorContext(expressionElement, options); var expression = expressionSyntaxDescriptor.CreateExpression(context); var memoryBlockReference = expressionSyntaxDescriptor.CreateBlockReference(new BlockReferenceConstructorContext(expression)); + if (memoryBlockReference.Id == null!) + memoryBlockReference.Id = memoryReferenceId!; + return (Input)Activator.CreateInstance(typeof(Input), expression, memoryBlockReference)!; } diff --git a/src/samples/console/Elsa.Samples.JsonWorkflows/HelloWorld.json b/src/samples/console/Elsa.Samples.JsonWorkflows/HelloWorld.json index ec3bf36b0..8164f3a92 100644 --- a/src/samples/console/Elsa.Samples.JsonWorkflows/HelloWorld.json +++ b/src/samples/console/Elsa.Samples.JsonWorkflows/HelloWorld.json @@ -1,4 +1,5 @@ { + "id": "HelloWorld-v1", "definitionId": "11e2b350dae8485498c16d1ce3843829", "name": "Hello World", "root": { diff --git a/src/samples/console/Elsa.Samples.JsonWorkflows/Program.cs b/src/samples/console/Elsa.Samples.JsonWorkflows/Program.cs index 6f7fb5427..63916d9e5 100644 --- a/src/samples/console/Elsa.Samples.JsonWorkflows/Program.cs +++ b/src/samples/console/Elsa.Samples.JsonWorkflows/Program.cs @@ -1,6 +1,5 @@ using Elsa.Extensions; using Elsa.Testing.Shared; -using Elsa.Workflows.Core.Activities; using Elsa.Workflows.Core.Contracts; using Elsa.Workflows.Core.Models; using Microsoft.Extensions.DependencyInjection;