Ejemplo n.º 1
0
        private SecurityDefinition[] BuildBusinessManagers(StepBuilder sb)
        {
            var s = sb.Security();

            return(s?.BusinessAdministrators.Select(a => new SecurityDefinition(a.Item1, a.Item2)).ToArray() ??
                   new SecurityDefinition[] {});
        }
Ejemplo n.º 2
0
        private SecurityDefinition[] BuildPotentialOwners(StepBuilder sb)
        {
            var s = sb.Security();

            return(s?.PotentialOwners.Select(a => new SecurityDefinition(a.Item1, a.Item2)).ToArray() ??
                   new SecurityDefinition[] {});
        }
Ejemplo n.º 3
0
        public LinkBuilder To(string id)
        {
            id.NotNull("id").NotEmptyString("id");
            if (_from != null && _from.Id == id)
            {
                throw new ArgumentException($"Step id:{id} cannot be linked to itself.");
            }
            Tuple <StepBuilder, StepTypeEnum> step;

            if (!_processBuilder.TryFindStep(id, out step))
            {
                throw new ArgumentException($"Step id:{id} does not exist");
            }
            _to = step.Item1;
            return(this);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Removes the specified step builder.
 /// </summary>
 /// <param name="stepBuilder">The step builder.</param>
 /// <returns></returns>
 internal bool Remove(StepBuilder stepBuilder)
 {
     if (_steps.Remove(stepBuilder.Id))
     {
         var outgoings = _links.Where(l => l.Key.Item1 == stepBuilder.Id).Select(l => l.Key).ToList();
         var incoming  = _links.Where(l => l.Key.Item2 == stepBuilder.Id).Select(l => l.Key).ToList();
         foreach (var k in outgoings)
         {
             _links.Remove(k);
         }
         foreach (var k in incoming)
         {
             _links.Remove(k);
         }
     }
     return(false);
 }
Ejemplo n.º 5
0
        public LinkBuilder From(string id)
        {
            id.NotNull("id").NotEmptyString("id");
            if (_to != null && _to.Id == id)
            {
                throw new ArgumentException($"Step id:{id} cannot be linked to itself.");
            }
            Tuple <StepBuilder, StepTypeEnum> step;

            if (!_processBuilder.TryFindStep(id, out step))
            {
                throw new ArgumentException($"Step id:{id} does not exist");
            }
            if (step.Item2 == StepTypeEnum.End)
            {
                throw new ArgumentException($"Step id:{id} is an end step and cannot have outgoing links");
            }
            _from = step.Item1;
            return(this);
        }
Ejemplo n.º 6
0
        private StepDefinition[] BuildStepDefinitions()
        {
            List <StepDefinition> steps = new List <StepDefinition>();

            foreach (StepContainer container in _steps.Values)
            {
                StepBuilder sb = container.Builder;
                if (sb.RequiredVars != null)
                {
                    StepDefinition sd = new StepDefinition(id: GenerateStepId(), stepId: sb.Id, description: sb.Description,
                                                           actions: sb.Actions.Select(a => new ActionDefinition(a.ActionName, a.ActionDescription, a.IsSkippable)).ToArray(),
                                                           name: sb.Name, isStart: container.StepType == StepTypeEnum.Start, isEnd: container.StepType == StepTypeEnum.End,
                                                           potentialOwners: BuildPotentialOwners(sb),
                                                           businessManagers: BuildBusinessManagers(sb),
                                                           onEntry: BuildScript(sb.OnEntry()),
                                                           onExit: BuildScript(sb.OnExit()),
                                                           varMaps: BuildVarMaps(sb.RequiredVars),
                                                           stepHandler: BuildStepHandler(sb.StepHandler));
                    steps.Add(sd);
                }
            }
            return(steps.ToArray());
        }
Ejemplo n.º 7
0
 internal StepContainer(StepBuilder builder, StepTypeEnum stepTypeEnum)
 {
     Builder  = builder;
     StepType = stepTypeEnum;
 }