internal MonitoramentoProcesso(string descricao, string mensagemAtual, long progressoMaximo, long handleUsuario, long handleRotina, string tabelaRotina, MethodBase localChamada, bool instanciaAutomatica, bool progressoAutomatico, bool pegarOcorrenciasNaTabelaInformada = true) { this.GerouCriticas = false; this.TabelaRotina = tabelaRotina; this.HandleRotina = handleRotina; this.PegarOcorrenciasNaTabelaInformada = pegarOcorrenciasNaTabelaInformada; this.ProgressoMaximo = progressoMaximo; this.MensagemAtual = mensagemAtual; this.Descricao = descricao; this.MonitoramentoPai = MonitoramentoProcessoHelper.Current; this.LocalChamada = MonitoramentoProcessoHelper.FormatarLocalChamada(localChamada); this.InstanciaAutomatica = instanciaAutomatica; this.HandleRegistro = 0; this.OcorrenciaConcatenar = String.Empty; this.ArquivoLogs = null; this.ProgressoAutomatico = progressoAutomatico; if (ContextoAcessoHelper.Current != null) { this.ChaveCorrelacao = ContextoAcessoHelper.Current.ChaveCorrelacao; } if (this.MonitoramentoPai != null) { this.HandleProcessoPai = MonitoramentoPai.HandleRegistro; } ProgressoAtual = 0; UsuarioExecucao = handleUsuario; HostExecucao = Environment.MachineName; UsuarioAbortar = 0; HostAbortar = String.Empty; OcorrenciaFinal = String.Empty; MonitoramentoProcessoHelper.ChecarTimeout(); }
/// <summary> /// Carrega um monitoramento existente com base no handle do registro da SIS_PROCESSO /// </summary> /// <param name="ProcedureInvoker">Instância de IProcedureInvoker</param> /// <param name="HandleUsuario">Handle do usuário corrente</param> /// <param name="idProcesso">Handle do registro da SIS_PROCESSO</param> /// <param name="repositorioRegistroProcesso">Instância do repositório da SIS_PROCESSO</param> /// <param name="pegarOcorrenciasNaTabelaInformada">Indica se deve pegar as ocorrências diretamente na tabela informada</param> /// <returns>Instância da entidade responsável pelo monitoramento</returns> public static IMonitoramentoProcesso CarregarMonitoramentoExistente(long HandleUsuario, long idProcesso, bool pegarOcorrenciasNaTabelaInformada = true) { if (logDebug) { logger.DebugFormat("CarregarMonitoramentoExistente"); logger.DebugFormat(String.Format("HandleUsuario: {0}", HandleUsuario)); logger.DebugFormat(String.Format("idProcesso: {0}", idProcesso)); } //***** ESTA GAMBIARRA FOI DESENVOLVIDA PARA SOLUCIONAR TEMPORARIAMENTE UM PROBLEMA! =D ******// int tentativa = 0; while (tentativa < 3) { try { MonitoramentoProcesso monitoramento = new MonitoramentoProcesso(HandleUsuario, null); // TODO: Pegar local monitoramento.PegarOcorrenciasNaTabelaInformada = pegarOcorrenciasNaTabelaInformada; monitoramento.InstanciaAutomatica = false; monitoramento.HandleRegistro = idProcesso; monitoramento.RecarregarDoBanco(); MonitoramentoProcessoHelper.ForcarMonitoramentoContexto(monitoramento); return(monitoramento); } catch (Exception Ex) { tentativa++; Thread.Sleep(150); if (tentativa >= 3) { logger.ErrorFormat(MethodInfo.GetCurrentMethod().Name); logger.ErrorFormat(String.Format("HandleUsuario: {0}", HandleUsuario)); logger.ErrorFormat(String.Format("idProcesso: {0}", idProcesso)); logger.ErrorFormat(String.Format("Erro: {0}", Ex.ToString())); throw new Exception("Erro ao carregar monitoramento processo: " + Ex.ToString()); } } } return(null); }
private void RemoverDoContexto() { MonitoramentoProcessoHelper.RemoverMonitoramentoContexto(this); }