示例#1
0
        public void AttachBranch(IWorkflowBuilder branch)
        {
            if (Branches.Contains(branch))
            {
                return;
            }

            foreach (var step in branch.Steps)
            {
                var oldId = step.Id;
                AddStep(step);
                foreach (var step2 in branch.Steps)
                {
                    foreach (var outcome in step2.Outcomes)
                    {
                        if (outcome.NextStep == oldId)
                        {
                            outcome.NextStep = step.Id;
                        }
                    }
                }
            }

            Branches.Add(branch);
        }
示例#2
0
        public void AttachBranch(IWorkflowBuilder branch)
        {
            if (Branches.Contains(branch))
            {
                return;
            }

            var branchStart = LastStep + branch.LastStep + 1;

            foreach (var step in branch.Steps)
            {
                var oldId = step.Id;
                step.Id = oldId + branchStart;
                foreach (var step2 in branch.Steps)
                {
                    foreach (var outcome in step2.Outcomes)
                    {
                        if (outcome.NextStep == oldId)
                        {
                            outcome.NextStep = step.Id;
                        }
                    }

                    for (var i = 0; i < step2.Children.Count; i++)
                    {
                        if (step2.Children[i] == oldId)
                        {
                            step2.Children[i] = step.Id;
                        }
                    }
                }
            }

            foreach (var step in branch.Steps)
            {
                var oldId = step.Id;
                AddStep(step);
                foreach (var step2 in branch.Steps)
                {
                    foreach (var outcome in step2.Outcomes)
                    {
                        if (outcome.NextStep == oldId)
                        {
                            outcome.NextStep = step.Id;
                        }
                    }

                    for (var i = 0; i < step2.Children.Count; i++)
                    {
                        if (step2.Children[i] == oldId)
                        {
                            step2.Children[i] = step.Id;
                        }
                    }
                }
            }

            Branches.Add(branch);
        }
示例#3
0
 public void FillWithRecords(Table table, string columnName)
 {
     foreach (var item in table.AllRecords)
     {
         if (!Branches.Contains(item) && item.Record[columnName].Equals(value))
         {
             Branches.Add(item);
         }
     }
 }
 public bool Contains(Element item)
 {
     if (item is Branch)
     {
         return(Branches.Contains((Branch)item));
     }
     else if (item is Value)
     {
         return(Values.Contains((Value)item));
     }
     else
     {
         throw new NotSupportedException(String.Format("Abstract nodes of type '{0}' are not supported.",
                                                       item == null ? "null" : item.GetType().FullName));
     }
 }
示例#5
0
        public async Task UpdateBranchesAsync()
        {
            var previousBranch = Branch;

            Dictionary <string, int> branchStats = new Dictionary <string, int>();

            foreach (var repository in settings_.GetValidatedGitRepositories())
            {
                var branches = await GitHelper.GetBranchesAsync(repository);

                foreach (var branch in branches)
                {
                    if (branchStats.TryGetValue(branch, out int count))
                    {
                        branchStats[branch] = ++count;
                    }
                    else
                    {
                        branchStats[branch] = 1;
                    }
                }
            }

            Branches.Clear();


            Branches.Add(null);

            foreach (var branch in branchStats.OrderByDescending(b => b.Value).ThenBy(b => b.Key))
            {
                Branches.Add(branch.Key);
            }

            if (previousBranch != null && Branches.Contains(previousBranch))
            {
                Branch = previousBranch;
            }
            else
            {
                Branch = null;
            }
        }