示例#1
0
        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();
        }
示例#2
0
        /// <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);
        }
示例#3
0
 private void RemoverDoContexto()
 {
     MonitoramentoProcessoHelper.RemoverMonitoramentoContexto(this);
 }