private Activity ParseCore <T>(JsonElement node, CompositeActivityParser compositeParser) { var values = node.GetProperty("values").GetString(); var valueName = node.GetProperty("valueName").GetString(); var bodyExists = node.TryGetProperty("body", out var bodyNode); var @foreach = new ForEach <T> { DisplayName = ActivityParseUtil.GetDisplayName(node), Values = new CSharpValue <IEnumerable <T> >(values) }; var activityAction = new ActivityAction <T> { Argument = new DelegateInArgument <T>(valueName) }; if (bodyExists) { activityAction.Handler = compositeParser.Parse(bodyNode); } @foreach.Body = activityAction; return(@foreach); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var displayName = ActivityParseUtil.GetDisplayName(node); var branchesNodeExists = node.TryGetProperty("branches", out var branchesNode); node.TryGetProperty("completionCondition", out var completionConditionProperty); var parallel = new Parallel() { DisplayName = displayName, CompletionCondition = new CSharpValue <bool>(completionConditionProperty.GetString()), }; foreach (var variable in ActivityParseUtil.ParseVariables(node, typeInfoProvider)) { parallel.Variables.Add(variable); } if (branchesNodeExists) { foreach (var branchNode in branchesNode.EnumerateArray()) { parallel.Branches.Add(compositeParser.Parse(branchNode)); } } return(parallel); }
private Activity ParseSwitchCore <T>(JsonElement node, CompositeActivityParser compositeParser) { var defaultNodeExists = node.TryGetProperty("default", out var defaultNode); var casesNodeExists = node.TryGetProperty("cases", out var casesNode); var @switch = new Switch <T> { DisplayName = ActivityParseUtil.GetDisplayName(node), Expression = new CSharpValue <T>(node.GetProperty("expression").GetString()) }; if (defaultNodeExists) { @switch.Default = compositeParser.Parse(defaultNode); } if (casesNodeExists) { foreach (var caseNode in casesNode.EnumerateArray()) { var key = caseNode.GetProperty("key").GetString(); var value = compositeParser.Parse(caseNode.GetProperty("value")); @switch.Cases.Add(new KeyValuePair <T, Activity>(ValueFromText <T>(key), value)); } } return(@switch); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var activitiesNodeExists = node.TryGetProperty("activities", out var activitiesNode); var sequence = new Sequence { DisplayName = ActivityParseUtil.GetDisplayName(node), }; if (activitiesNodeExists) { var activities = activitiesNode.EnumerateArray() .Select(compositeParser.Parse); foreach (var activity in activities) { sequence.Activities.Add(activity); } } foreach (var v in ActivityParseUtil.ParseVariables(node, typeInfoProvider)) { sequence.Variables.Add(v); } return(sequence); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var typeName = node.GetProperty("type").GetString(); var type = typeInfoProvider.Find(typeName); var coreMethod = _coreMethod !.MakeGenericMethod(type); return((Activity)coreMethod.Invoke(this, new object[] { node })); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var trace = new Trace { DisplayName = ActivityParseUtil.GetDisplayName(node), Text = new CSharpValue <string>(node.GetProperty("text").GetString()) }; return(trace); }
public Activity Parse(JsonElement machineNode, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var machine = new StateMachine(); var results = machineNode.GetProperty("states").EnumerateArray() .Select(s => ParseState(s, typeInfoProvider, compositeParser)) .ToDictionary(p => p.Id, p => p); var initialState = machineNode.GetProperty("initialState").GetString(); machine.InitialState = results[initialState !].State;
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var mirrorBase = node.GetProperty("mirrorBase").GetString(); var tenantId = node.GetProperty("tenantId").GetString(); var modelKey = node.GetProperty("modelKey").GetString(); var filter = node.GetProperty("filter").GetString(); filter = MirrorExpressionHelper.BuildCSharpExpression(filter); var result = node.GetProperty("result").GetString(); return((Activity)_methodInfo.Invoke(this, new object[] { mirrorBase, tenantId, modelKey, filter, result })); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var mirrorBase = node.GetProperty("mirrorBase").GetString(); var tenantId = node.GetProperty("tenantId").GetString(); var modelKey = node.GetProperty("modelKey").GetString(); var modelType = typeInfoProvider.Find(modelKey); var model = node.GetProperty("model").GetString(); var result = node.GetProperty("result").GetString(); var methodInfo = _methodInfo !.MakeGenericMethod(modelType); return((Activity)methodInfo.Invoke(this, new object[] { mirrorBase, tenantId, modelKey, model, result })); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var pick = new Pick {DisplayName = ActivityParseUtil. GetDisplayName(node)}; var branchesNodeExists = node.TryGetProperty("branches", out var branchesNode); if (branchesNodeExists) { foreach (var branchNode in branchesNode.EnumerateArray()) { pick.Branches.Add(ParsePickBranch(branchNode, typeInfoProvider, compositeParser)); } } return pick; }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var typeName = node.GetProperty("type").GetString(); var type = typeInfoProvider.Find(typeName); if (type == null) { throw new Exception($"can not find type name {typeName}"); } var coreMethod = _coreMethod !.MakeGenericMethod(type); return((Activity)coreMethod !.Invoke(this, new object[] { node, compositeParser })); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var inputType = typeInfoProvider.Find(node.GetProperty("inType").GetString()); var outputType = typeInfoProvider.Find(node.GetProperty("outType").GetString()); var argumentsExits = node.TryGetProperty("arguments", out var argumentsNode); var arguments = argumentsExits ? argumentsNode.GetString() : null; var code = node.GetProperty("code").GetString(); var displayName = ActivityParseUtil.GetDisplayName(node); var result = node.GetProperty("result").GetString(); var methodInfo = _methodInfo !.MakeGenericMethod(inputType, outputType); return((Activity)methodInfo.Invoke(this, new object[] { displayName, code, result, arguments })); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var resultExists = node.TryGetProperty("result", out var resultNode); var userTask = new UserTask() { DisplayName = ActivityParseUtil.GetDisplayName(node), Name = node.GetProperty("name").GetString(), }; if (resultExists) { userTask.Result = new OutArgument <string>(new CSharpReference <string>(resultNode.GetString())); } return(userTask); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var @while = new While { DisplayName = ActivityParseUtil.GetDisplayName(node), Condition = new CSharpValue <bool>(node.GetProperty("condition").GetString()) }; var bodyExists = node.TryGetProperty("body", out var bodyNode); if (bodyExists) { @while.Body = compositeParser.Parse(bodyNode); } foreach (var v in ActivityParseUtil.ParseVariables(node, typeInfoProvider)) { @while.Variables.Add(v); } return(@while); }
public Activity Parse(JsonElement node, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var thenNodeExists = node.TryGetProperty("then", out var thenNode); var elseNodeExists = node.TryGetProperty("else", out var elseNode); var @if = new If { DisplayName = ActivityParseUtil.GetDisplayName(node), Condition = new CSharpValue <bool>(node.GetProperty("condition").GetString()), }; if (thenNodeExists) { @if.Then = compositeParser.Parse(thenNode); } if (elseNodeExists) { @if.Else = compositeParser.Parse(elseNode); } return(@if); }
private PickBranch ParsePickBranch(JsonElement branchNode, ITypeInfoProvider typeInfoProvider, CompositeActivityParser compositeParser) { var displayName = ActivityParseUtil. GetDisplayName(branchNode); var triggerNode = branchNode.GetProperty("trigger"); var actionNodeExists = branchNode.TryGetProperty("action", out var actionNode); var branch = new PickBranch { DisplayName = displayName, Trigger = compositeParser. Parse(triggerNode), Action = actionNodeExists ? null : compositeParser. Parse(actionNode), }; foreach (var variable in ActivityParseUtil.ParseVariables(branchNode, typeInfoProvider)) { branch.Variables.Add(variable); } return branch; }