diff --git a/src/Flowsharp.Core/Serialization/Formatters/YamlTokenFormatter.cs b/src/Flowsharp.Core/Serialization/Formatters/YamlTokenFormatter.cs index ff3196d5e..167eb0604 100644 --- a/src/Flowsharp.Core/Serialization/Formatters/YamlTokenFormatter.cs +++ b/src/Flowsharp.Core/Serialization/Formatters/YamlTokenFormatter.cs @@ -9,21 +9,29 @@ namespace Flowsharp.Serialization.Formatters { public class YamlTokenFormatter : ITokenFormatter { + private readonly ExpandoObjectConverter expandoObjectConverter; + private readonly Serializer serializer; + private readonly Deserializer deserializer; + public YamlTokenFormatter() { + expandoObjectConverter = new ExpandoObjectConverter(); + serializer = new SerializerBuilder().Build(); + deserializer = new DeserializerBuilder().Build(); } public string ToString(JToken token) { - var expConverter = new ExpandoObjectConverter(); - var jsonString = token.ToString(Formatting.None); - var expandoObject = JsonConvert.DeserializeObject(jsonString, expConverter); - var serializer = new SerializerBuilder().Build(); - var yaml = serializer.Serialize(expandoObject); - - return yaml; + var json = token.ToString(Formatting.None); + var expandoObject = JsonConvert.DeserializeObject(json, expandoObjectConverter); + return serializer.Serialize(expandoObject); + } + + public JToken FromString(string data) + { + var expandoObject = deserializer.Deserialize(data); + var json = JsonConvert.SerializeObject(expandoObject); + return JToken.Parse(json); } - - public JToken FromString(string data) => JToken.Parse(data); } } \ No newline at end of file diff --git a/src/Flowsharp.Samples.Console/Program.cs b/src/Flowsharp.Samples.Console/Program.cs index f4b0d3a41..24541a731 100644 --- a/src/Flowsharp.Samples.Console/Program.cs +++ b/src/Flowsharp.Samples.Console/Program.cs @@ -44,8 +44,8 @@ namespace Flowsharp.Samples.Console .AddSingleton(); var serviceProvider = services.BuildServiceProvider(); - var program = serviceProvider.GetRequiredService(); - //var program = serviceProvider.GetRequiredService(); + //var program = serviceProvider.GetRequiredService(); + var program = serviceProvider.GetRequiredService(); await program.RunAsync(CancellationToken.None); } diff --git a/src/Flowsharp.Samples.Console/Programs/FileBasedWorkflowProgram.cs b/src/Flowsharp.Samples.Console/Programs/FileBasedWorkflowProgram.cs index e8105ff8c..7caf4e137 100644 --- a/src/Flowsharp.Samples.Console/Programs/FileBasedWorkflowProgram.cs +++ b/src/Flowsharp.Samples.Console/Programs/FileBasedWorkflowProgram.cs @@ -21,10 +21,10 @@ namespace Flowsharp.Samples.Console.Programs public async Task RunAsync(CancellationToken cancellationToken) { var assembly = typeof(FileBasedWorkflowProgramLongRunning).Assembly; - var resource = assembly.GetManifestResourceStream("Flowsharp.Samples.Console.SampleWorkflow.json"); + var resource = assembly.GetManifestResourceStream("Flowsharp.Samples.Console.SampleWorkflow.yaml"); var resourceReader = new StreamReader(resource); - var json = await resourceReader.ReadToEndAsync(); - var workflow = serializer.Deserialize(json); + var data = await resourceReader.ReadToEndAsync(); + var workflow = serializer.Deserialize(data); var workflowContext = await workflowInvoker.InvokeAsync(workflow, null, cancellationToken); while (workflowContext.Workflow.Status == WorkflowStatus.Halted) @@ -34,7 +34,7 @@ namespace Flowsharp.Samples.Console.Programs workflowContext = await ReadAndResumeAsync(workflowContext.Workflow, "tryAgain", cancellationToken); } - System.Console.WriteLine(json); + System.Console.WriteLine(data); } private async Task ReadAndResumeAsync(Workflow workflow, string argumentName, CancellationToken cancellationToken) diff --git a/src/Flowsharp.Samples.Console/SampleWorkflow.yaml b/src/Flowsharp.Samples.Console/SampleWorkflow.yaml index e83442b5f..5a36d62b0 100644 --- a/src/Flowsharp.Samples.Console/SampleWorkflow.yaml +++ b/src/Flowsharp.Samples.Console/SampleWorkflow.yaml @@ -26,11 +26,8 @@ activities: syntax: JavaScript expression: >- var x = workflow.getVariable('x'); - var y = workflow.getVariable('y'); - var sum = parseInt(x) + parseInt(y); - x + ' + ' + y + ' = ' + sum; - id: 6 name: WriteLine