Exemplo n.º 1
0
        private void AddToDataAction(IESpace espace, ILink l, IDataAction action, String sname)
        {
            var lib             = espace.References.Single(a => a.Name == "FeatureToggle_Lib");
            var getToggleAction = (IServerActionSignature)lib.ServerActions.Single(a => a.Name == "FeatureToggle_IsOn");
            var keyParam        = getToggleAction.InputParameters.Single(s => s.Name == "FeatureToggleKey");
            var modParam        = getToggleAction.InputParameters.Single(s => s.Name == "ModuleName");
            var start           = action.GetAllDescendantsOfType <IStartNode>().Single();
            var assign          = action.GetAllDescendantsOfType <IAssignNode>().Single();
            var destname        = sname;

            if (l != null)
            {
                destname = GetDestinationName(l);
            }
            var startTarget = start.Target;

            var getToggle = action.CreateNode <IExecuteServerActionNode>().Below(start);

            getToggle.Action = getToggleAction;
            getToggle.SetArgumentValue(keyParam, $"Entities.FeatureToggles.FT_{espace.Name}_{destname}");
            getToggle.SetArgumentValue(modParam, "GetEntryEspaceName()");
            getToggle.Name = $"FT_{destname}_IsOn";

            var outputparam = action.CreateOutputParameter($"FT_{destname}");

            outputparam.DataType = espace.BooleanType;

            if (assign != null)
            {
                assign.CreateAssignment($"FT_{destname}", $"FT_{destname}_IsOn.IsOn");
                getToggle.Target = startTarget;
            }
            else
            {
                assign = action.CreateNode <IAssignNode>().Below(getToggle);
                assign.CreateAssignment($"FT_{destname}", $"FT_{destname}_IsOn.IsOn");
                getToggle.Target = assign;
                assign.Target    = startTarget;
            }

            start.Target = getToggle;
        }
Exemplo n.º 2
0
        private void CreateDataAction(IESpace espace, ILink l, IDataAction oninitaction, String sname)
        {
            var start     = oninitaction.CreateNode <IStartNode>();
            var getToggle = oninitaction.CreateNode <IExecuteServerActionNode>().Below(start);
            var end       = oninitaction.CreateNode <IEndNode>();

            var lib             = espace.References.Single(a => a.Name == "FeatureToggle_Lib");
            var getToggleAction = (IServerActionSignature)lib.ServerActions.Single(a => a.Name == "FeatureToggle_IsOn");

            getToggle.Action = getToggleAction;
            start.Target     = getToggle;

            var keyParam = getToggleAction.InputParameters.Single(s => s.Name == "FeatureToggleKey");
            var modParam = getToggleAction.InputParameters.Single(s => s.Name == "ModuleName");
            var destname = sname;

            if (l != null)
            {
                destname = GetDestinationName(l);
            }
            getToggle.SetArgumentValue(modParam, "GetEntryEspaceName()");
            getToggle.SetArgumentValue(keyParam, $"Entities.FeatureToggles.FT_{espace.Name}_{destname}");
            getToggle.Name = $"FT_{destname}_IsOn";

            var outputparam = oninitaction.CreateOutputParameter($"FT_{destname}");

            outputparam.DataType = espace.BooleanType;

            var assignVar = oninitaction.CreateNode <IAssignNode>().Below(getToggle);

            assignVar.CreateAssignment($"FT_{destname}", $"FT_{destname}_IsOn.IsOn");

            getToggle.Target = assignVar;
            end.Below(assignVar);
            assignVar.Target = end;
        }