Exemple #1
0
        public void Run()
        {
            // Não roda caso o Nó seja uma "folha", ou seja, não tenha conexões
            if (!Connections.Any())
            {
                if (Print)
                {
                    PrintAtividadesEntrada();
                }
                return;
            }

            // Ordena a fila de entrada pela ordem de entrada na atividade
            FilaEntrada = FilaEntrada.OrderBy(x => x.Inicio).ToList();

            foreach (SItem item in FilaEntrada)
            {
                // Seleciona a próxima atividade (conexão) de acordo com um número aleatório gerado
                SConnection target = GetConnectionByProbability(rand.NextDouble());

                // Pega o tempo de processamento desse item e atualiza o mesmo
                var tempoProc = target.CalcTS();
                var newItem   = ProcessItem(new SItem {
                    Nome = item.Nome, Inicio = item.Inicio
                }, tempoProc);

                // Adiciona o item na lista de resultados
                Resultado.Add(newItem);

                // Adiciona o item na fila de entrada da próxima atividade
                target.Connection.FilaEntrada.Add(new SItem {
                    Inicio = newItem.Fim, Nome = newItem.Nome
                });
            }

            // Faz o Display das informações obtidas com a simulação da atividade
            if (Print)
            {
                PrintAtividadesResultado();
            }

            // Processa as connexões
            RunConnectedActivities();
        }
Exemple #2
0
 // Adiciona uma Conexão para a ativdade
 public void AddConnection(SConnection conn)
 {
     Connections.Add(conn);
     Connections = Connections.OrderBy(x => x.Probability).ToList();
 }