Example #1
0
 public void Run()
 {
     if (!FilaEntrada.Any() && NumberProcessed == NumeroConexoes)
     {
         RunConnectedActivities();
         return;
     }
     else if (!FilaEntrada.Any() || NumberProcessed < NumeroConexoes)
     {
         return;
     }
     FilaEntrada = FilaEntrada.OrderBy(x => x.Inicio).ToList();
     foreach (SItem item in FilaEntrada)
     {
         var tempo   = CalcularTS();
         var newItem = AddItemToFilaProcesso(new SItem {
             Nome = item.Nome, Inicio = item.Inicio
         }, tempo);
         Resultado.Add(newItem);
         sendToConnection(new SItem {
             Inicio = newItem.Fim, Nome = newItem.Nome
         });
     }
     if (Print)
     {
         //PrintAtividadesEntrada();
         PrintAtividadesResultado();
     }
     RunConnectedActivities();
 }
Example #2
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();
        }