Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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 }));
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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 }));
        }
Ejemplo n.º 9
0
        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 }));
        }
Ejemplo n.º 10
0
 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;
 }
Ejemplo n.º 11
0
        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 }));
        }
Ejemplo n.º 12
0
        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 }));
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
 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;
 }