Implementing YAML serialization and updated samples

This commit is contained in:
Sipke Schoorstra 2018-10-16 08:18:53 +02:00
parent ac1d528b72
commit 1c2b92deb9
4 changed files with 23 additions and 18 deletions

View file

@ -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<ExpandoObject>(jsonString, expConverter);
var serializer = new SerializerBuilder().Build();
var yaml = serializer.Serialize(expandoObject);
return yaml;
var json = token.ToString(Formatting.None);
var expandoObject = JsonConvert.DeserializeObject<ExpandoObject>(json, expandoObjectConverter);
return serializer.Serialize(expandoObject);
}
public JToken FromString(string data)
{
var expandoObject = deserializer.Deserialize<ExpandoObject>(data);
var json = JsonConvert.SerializeObject(expandoObject);
return JToken.Parse(json);
}
public JToken FromString(string data) => JToken.Parse(data);
}
}

View file

@ -44,8 +44,8 @@ namespace Flowsharp.Samples.Console
.AddSingleton<FileBasedWorkflowProgramLongRunning>();
var serviceProvider = services.BuildServiceProvider();
var program = serviceProvider.GetRequiredService<AdditionWorkflowProgramLongRunning>();
//var program = serviceProvider.GetRequiredService<FileBasedWorkflowProgramLongRunning>();
//var program = serviceProvider.GetRequiredService<AdditionWorkflowProgramLongRunning>();
var program = serviceProvider.GetRequiredService<FileBasedWorkflowProgramLongRunning>();
await program.RunAsync(CancellationToken.None);
}

View file

@ -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<WorkflowExecutionContext> ReadAndResumeAsync(Workflow workflow, string argumentName, CancellationToken cancellationToken)

View file

@ -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