public void Executar(Model.Integracao integracao) { var configuracao = integracao.IntegracaoParaRest(); configuracao.Mapeamentos = MapearParaAdapter(integracao.Mapeamento); configuracao.MapeamentosQueryString = MapearParaAdapter(integracao.MapeamentoQueryString); configuracao.MapeamentoRetorno = MapearParaAdapter(integracao.MapeamentoRetorno); try { if (integracao.Consumidor) { Consumidor(integracao, configuracao); } else { Executor(integracao, configuracao); } } catch (Exception ex) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = ex.Message; entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 2; //1 Sucesso 2 Erro new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", integracao.Nome, ex.Message, ex.ToString())); } if (integracao.DestinoID > 0) { new Integracao().Executar(integracao.DestinoID, true); } }
public int AtualizarHorarioDeExecucao(Model.Integracao entIntegracao) { List <IDbDataParameter> lst = new List <IDbDataParameter>(); lst.Add((IDbDataParameter)database.CreateParameter("p_integracaoID", entIntegracao.ID)); lst.Add((IDbDataParameter)database.CreateParameter("p_hora", entIntegracao.DataHoraUltimaExecucao)); return(new SQLHelper(false, "SP_INT_UP_HORABYINTEGRACAOID", lst).NonQuery()); }
private void ExecutaItemFila(Model.Integracao ent, Model.Fila fila, Selia.Integrador.Adapter.WebService.Config objConfig, List <Selia.Integrador.Adapter.Util.Mapeamento.Entidade> MapeamentoEntrada) { try { Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.WebService().Executar(objConfig, fila.Conteudo); Model.LogFila entLogFila = new Model.LogFila(); if (!string.IsNullOrEmpty(objResult.ParametrosEnvio)) { entLogFila.Conteudo = objResult.ParametrosEnvio; } entLogFila.Conteudo = objResult.ParametrosEnvio; entLogFila.ConteudoFila = fila.Conteudo; entLogFila.ChavePrimaria = fila.ChavePrimaria; entLogFila.ChaveSecundaria = fila.ChaveSecundaria; entLogFila.LogIntegracao.ID = fila.LogIntegracaoID; entLogFila.FilaID = fila.ID; entLogFila.IntegracaoID = ent.ID; if (!string.IsNullOrEmpty(objResult.Mensagem)) { entLogFila.ConteudoRetorno = objResult.Mensagem; } if (objResult.TipoMensagem == Selia.Integrador.Adapter.Resultado.Tipo.Sucesso) { new BS.Fila().Excluir(fila.ID); if (ent.Destino != null) { new BS.Fila().ProcessarFila(objResult, ent, MapeamentoEntrada); } } else { new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); if (!string.IsNullOrEmpty(ent.AcaoReturnoErro)) { } } new BS.LogFila().Inserir(entLogFila); } catch (Exception ex) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = ex.Message; entLogIntegracao.Integracao = ent; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", ent.Nome, ex.Message, ex.StackTrace)); } }
private void Consumidor(Model.Integracao integracao, Selia.Integrador.Adapter.Rest.Config configuracao) { int maxDegreeOfParallelism = integracao.NivelParalelismo; Parallel.ForEach(integracao.Fila, new ParallelOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism }, (fila) => { ExecutaItemFila(integracao, fila, configuracao); }); }
public bool ExecucaoNoHorario(Model.Integracao integracao) { bool Retorno = false; if (integracao.ExecucaoMinutos > 0) { //ServiceLog.LogWarning(String.Format("{0} - Execução minutos:{1}. {2}", integracao.Nome, integracao.ExecucaoMinutos, DateTime.Now.ToString())); if (integracao.DataHoraUltimaExecucao == null || integracao.DataHoraUltimaExecucao.AddMinutes(Convert.ToDouble(integracao.ExecucaoMinutos)) < DateTime.Now) { Retorno = true; } } else if (integracao.ExecucaoHorarios != null) { string[] horarios = integracao.ExecucaoHorarios.Split(Char.Parse(";")); //ServiceLog.LogWarning(String.Format("{0} - Execução horários:{1}. {2}", integracao.Nome, integracao.ExecucaoHorarios, DateTime.Now.ToString())); foreach (string item in horarios) { if (!string.IsNullOrEmpty(item.Trim())) { string[] horario = item.Split(char.Parse(":")); int hora = int.Parse(horario[0]); int minutos = 00; if (horario.Length > 1) { minutos = int.Parse(horario[1]); } DateTime dtaExecucao = Convert.ToDateTime(DateTime.Now.ToShortDateString() + " " + hora + ":" + minutos); //ServiceLog.LogWarning(String.Format("{0} - Data Execução:{1}. {2}. Data última execução:{3}", integracao.Nome, dtaExecucao, DateTime.Now.ToString(), integracao.DataHoraUltimaExecucao.ToString())); if ((integracao.DataHoraUltimaExecucao <= dtaExecucao) && (DateTime.Now >= dtaExecucao)) { //ServiceLog.LogWarning(String.Format("{0} - Dentro do IF - Data Execução:{1}. {2}. Data última execução:{3}", integracao.Nome, dtaExecucao, DateTime.Now.ToString(), integracao.DataHoraUltimaExecucao.ToString())); Retorno = true; } if (Retorno) { break; } } } } return(Retorno); }
public static Selia.Integrador.Adapter.Rest.Config IntegracaoParaRest(this Model.Integracao integracao) { var ret = new Selia.Integrador.Adapter.Rest.Config(); var rest = ((Model.Interface.Rest)integracao.Interface.Item); ret.Rest = rest; ret.AcaoFinal = integracao.AcaoFinal; ret.AcaoInicial = integracao.AcaoInicial; ret.ElementoSeparador = integracao.ElementoRegistro; ret.AcaoCabecalho = integracao.AcaoCabecalho; ret.NodesNaoUtilizados = integracao.NodesNaoUtilizados; return(ret); }
public void Executar(int integracaoId, bool ignoreTime) { Model.Integracao ent = null; lock (lockObject) { ent = ConsultarUnicaIntegracaoParaExecucao(integracaoId); System.Threading.Thread.Sleep(50); } if (ent != null) { if (ignoreTime || ExecucaoNoHorario(ent)) { //ServiceLog.LogInfo(String.Format("Iniciando: {0}", ent.Nome)); try { if (ent.Interface.Item.GetType() == typeof(Model.Interface.ArquivoTexto)) { new Interface.ArquivoText().Executar(ent); } else if (ent.Interface.Item.GetType() == typeof(Model.Interface.WebService)) { new Interface.WebService().Executar(ent); } else if (ent.Interface.Item.GetType() == typeof(Model.Interface.DB)) { new Interface.DB().Executar(ent); } else if (ent.Interface.Item.GetType() == typeof(Model.Interface.Rest)) { new Interface.Rest().Executar(ent); } } catch (Exception ex) { //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1}", ent.Nome, ex.ToString())); } ent.DataHoraUltimaExecucao = DateTime.Now; AtualizarHorarioDeExecucao(ent); //ServiceLog.LogInfo(String.Format("Finalizando: {0}", ent.Nome)); } this.EmUso(integracaoId, false); } }
public void Executar(Model.Integracao ent, XmlDocument Fila = null) { Selia.Integrador.Adapter.WebService.Config objConfig = PreencherEntWebService(ent); if (ent.Consumidor) { Consumidor(objConfig, ent); } else { Executor(objConfig, ent, Fila); } if (ent.DestinoID > 0) { new Integracao().Executar(ent.DestinoID, true); } }
public Selia.Integrador.Adapter.WebService.Config PreencherEntWebService(Model.Integracao ent) { var item = ((Model.Interface.WebService)ent.Interface.Item); Selia.Integrador.Adapter.WebService.Config objConfig = new Selia.Integrador.Adapter.WebService.Config(); objConfig.Url = item.Url; objConfig.Metodo = item.Metodo; objConfig.Login = item.Login; objConfig.Senha = item.Senha; objConfig.ElementoSeparador = ent.ElementoRegistro; objConfig.ExecucaoInicial = ent.AcaoInicial; objConfig.ExecucaoFinal = ent.AcaoFinal; objConfig.Action = item.Action; objConfig.ConnectionString = ent.ConnectionString; objConfig.Mapeamentos = MapearParaAdapter(ent.Mapeamento); return(objConfig); }
private void Executor(Model.Integracao integracao, Selia.Integrador.Adapter.Rest.Config configuracao) { try { Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.Rest().Executar(configuracao); if (objResult.TipoMensagem == Selia.Integrador.Adapter.Resultado.Tipo.Sucesso) { new BS.Fila().ProcessarFila(objResult, integracao, configuracao.Mapeamentos); } else { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = objResult.Mensagem; entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1}", integracao.Nome, objResult.Mensagem)); } } catch (Selia.Integrador.Utils.Exceptions.HttpRestRetornoException exIntegradoRetorno) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = string.Format("{0} - {1}", exIntegradoRetorno.Message, exIntegradoRetorno.InformacaoAdicional); entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 2; //1 Sucesso 2 Erro new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", integracao.Nome, exIntegradoRetorno.Message, exIntegradoRetorno.ToString())); } catch (Exception ex) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = ex.Message; entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", integracao.Nome, ex.Message, ex.StackTrace)); } }
public int AtualizarHorarioDeExecucao(Model.Integracao entIntegracao) { return(new Selia.Integrador.DAL.Integracao().AtualizarHorarioDeExecucao(entIntegracao)); }
public List <Model.Integracao> PreencherSimples(DataTable dt) { List <Model.Integracao> lst = new List <Model.Integracao>(); foreach (DataRow row in dt.Rows) { Model.Integracao ent = new Model.Integracao(); if (row["ID"] != DBNull.Value) { ent.ID = Convert.ToInt32(row["ID"].ToString()); } if (row["AdapterID"] != DBNull.Value) { ent.Adapter = new Model.Adapter(); ent.Adapter.ID = Convert.ToInt32(row["AdapterID"].ToString()); } if (row["DataHoraUltimaExecucao"] != DBNull.Value) { ent.DataHoraUltimaExecucao = Convert.ToDateTime(row["DataHoraUltimaExecucao"].ToString()); } if (row["EmUso"] != DBNull.Value) { ent.EmUso = row["EmUso"].ToString() == "0" ? false : true; } if (row["ExecucaoHorarios"] != DBNull.Value) { ent.ExecucaoHorarios = row["ExecucaoHorarios"].ToString(); } if (row["ExecucaoMinutos"] != DBNull.Value) { ent.ExecucaoMinutos = Convert.ToInt32(row["ExecucaoMinutos"]); } if (row["Nome"] != DBNull.Value) { ent.Nome = row["Nome"].ToString(); } if (row["ElementoRegistro"] != DBNull.Value) { ent.ElementoRegistro = row["ElementoRegistro"].ToString(); } if (row["PKPrimaria"] != DBNull.Value) { ent.PKPrimaria = row["PKPrimaria"].ToString(); } if (row["PKSecundaria"] != DBNull.Value) { ent.PKSecundaria = row["PKSecundaria"].ToString(); } if (row["Status"] != DBNull.Value) { ent.Status = row["Status"].ToString() == "0" ? false : true; } if (row["AcaoInicial"] != DBNull.Value) { ent.AcaoInicial = row["AcaoInicial"].ToString(); } if (row["AcaoFinal"] != DBNull.Value) { ent.AcaoFinal = row["AcaoFinal"].ToString(); } if (row["AcaoEnfileiramento"] != DBNull.Value) { ent.AcaoEnfileiramento = row["AcaoEnfileiramento"].ToString(); } if (row["DestinoID"] != DBNull.Value) { ent.DestinoID = Convert.ToInt32(row["DestinoID"].ToString()); ent.Destino = new Model.Integracao(); ent.Destino = new Selia.Integrador.DAL.Integracao().ConsultarIntegracaoSimples(Convert.ToInt32(row["DestinoID"])); ent.Destino.LogIntegracao = new Selia.Integrador.DAL.LogIntegracao().ConsultarSimples(ent.ID).Where(c => c.Status == 1).ToList(); ent.Destino.QtdErros = new Selia.Integrador.DAL.LogFila().ConsultarQtdErros(ent.ID); ent.Destino.PaiID = ent.ID; } else { ent.Destino = new Model.Integracao(); var LogIntegracoes = new Selia.Integrador.DAL.LogIntegracao().ConsultarSimples(ent.ID).Where(c => c.Status == 1); if (LogIntegracoes.ToList().Count > 0) { ent.Destino.LogIntegracao = LogIntegracoes.ToList(); } ent.Destino.QtdErros = new Selia.Integrador.DAL.LogFila().ConsultarQtdErros(ent.ID); ent.Destino.PaiID = ent.ID; } if (row["Consumidor"] != DBNull.Value) { ent.Consumidor = row["Consumidor"].ToString() == "0" ? false : true; } if (ent.LogIntegracao == null) { ent.LogIntegracao = new List <Model.LogIntegracao>(); } if (ent.LogFila == null) { ent.LogFila = new List <Model.LogFila>(); } lst.Add(ent); } return(lst); }
public void Executar(Model.Integracao ent) { Selia.Integrador.Adapter.ArquivoTexto.Config objConfig = new Selia.Integrador.Adapter.ArquivoTexto.Config(); var item = ((Model.Interface.ArquivoTexto)ent.Interface.Item); objConfig.FTP = item.FTP; objConfig.Login = item.Login; objConfig.Senha = item.Senha; objConfig.Url = item.Url; objConfig.Delimitador = item.Delimitador; objConfig.Diretorio = item.Diretorio; objConfig.Encoding = item.Encoding; objConfig.ElementoSeparador = ent.ElementoRegistro; objConfig.AcaoInicial = ent.AcaoInicial; objConfig.AcaoFinal = ent.AcaoFinal; objConfig.AcaoEnfileiramento = ent.AcaoEnfileiramento; objConfig.Mapeamentos = MapearParaAdapter(ent.Mapeamento); objConfig.ConnectionString = ent.ConnectionString; if (ent.Consumidor) { foreach (Model.Fila fila in ent.Fila) { try { Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.ArquivoTexto().Executar(objConfig, fila.Conteudo, ent.ID); Model.LogFila entLogFila = new Model.LogFila(); entLogFila.ConteudoFila = fila.Conteudo; entLogFila.ChavePrimaria = fila.ChavePrimaria; entLogFila.ChaveSecundaria = fila.ChaveSecundaria; entLogFila.LogIntegracao.ID = fila.LogIntegracaoID; entLogFila.IntegracaoID = ent.ID; entLogFila.FilaID = fila.ID; if (!string.IsNullOrEmpty(objResult.Mensagem)) { entLogFila.ConteudoRetorno = objResult.Mensagem; } new BS.LogFila().Inserir(entLogFila); if (objResult.TipoMensagem == Selia.Integrador.Adapter.Resultado.Tipo.Sucesso) { new BS.Fila().Excluir(fila.ID); if (ent.Destino != null) { ent.AcaoInicial = ent.Destino.AcaoInicial; ent.AcaoFinal = ent.Destino.AcaoFinal; ent.AcaoEnfileiramento = ent.Destino.AcaoEnfileiramento; ent.ElementoRegistro = ent.Destino.ElementoRegistro; ent.PKPrimaria = ent.Destino.PKPrimaria; objResult.ElementoSeparador = ent.Destino.ElementoRegistro; objConfig.Mapeamentos = MapearParaAdapter(ent.Mapeamento); new BS.Fila().ProcessarFila(objResult, ent, null); } } else { new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); } } catch (Exception ex) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = ex.Message; entLogIntegracao.Integracao = ent; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", ent.Nome, ex.Message, ex.StackTrace)); } } } else { try { Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.ArquivoTexto().Executar(objConfig); if (!string.IsNullOrEmpty(objResult.Mensagem)) { if (objResult.TipoMensagem == Selia.Integrador.Adapter.Resultado.Tipo.Sucesso) { if (ent.Destino != null) { ent.AcaoInicial = ent.Destino.AcaoInicial; ent.AcaoFinal = ent.Destino.AcaoFinal; ent.AcaoEnfileiramento = ent.Destino.AcaoEnfileiramento; ent.ElementoRegistro = ent.Destino.ElementoRegistro; ent.PKPrimaria = ent.Destino.PKPrimaria; objResult.ElementoSeparador = ent.Destino.ElementoRegistro; objConfig.Mapeamentos = MapearParaAdapter(ent.Mapeamento); new BS.Fila().ProcessarFila(objResult, ent, null); } } else { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = objResult.Mensagem; entLogIntegracao.Integracao = ent; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1}", ent.Nome, objResult.Mensagem)); } } } catch (Exception ex) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = ex.Message; entLogIntegracao.Integracao = ent; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", ent.Nome, ex.Message, ex.StackTrace)); } } }
public List <Model.Integracao> Preencher(DataTable dt) { List <Model.Integracao> lst = new List <Model.Integracao>(); foreach (DataRow row in dt.Rows) { Model.Integracao ent = new Model.Integracao(); if (row["ID"] != DBNull.Value) { ent.ID = Convert.ToInt32(row["ID"].ToString()); } if (row["AdapterID"] != DBNull.Value) { ent.Adapter = new Model.Adapter(); ent.Adapter.ID = Convert.ToInt32(row["AdapterID"].ToString()); } if (row["DataHoraUltimaExecucao"] != DBNull.Value) { ent.DataHoraUltimaExecucao = Convert.ToDateTime(row["DataHoraUltimaExecucao"].ToString()); } if (row["EmUso"] != DBNull.Value) { ent.EmUso = row["EmUso"].ToString() == "0" ? false : true; } if (row["ExecucaoHorarios"] != DBNull.Value) { ent.ExecucaoHorarios = row["ExecucaoHorarios"].ToString(); } if (row["ExecucaoMinutos"] != DBNull.Value) { ent.ExecucaoMinutos = Convert.ToInt32(row["ExecucaoMinutos"]); } //consultar no objeto para não alterar a procedure, menos impacto var mapeamento = new Selia.Integrador.DAL.Mapeamento().Consultar(ent.ID); ent.Mapeamento = mapeamento.Where(w => w.BitMapRetorno == false && w.BitQueryString == false).ToList(); ent.MapeamentoQueryString = mapeamento.Where(w => w.BitMapRetorno == false && w.BitQueryString == true).ToList(); ent.MapeamentoRetorno = mapeamento.Where(w => w.BitMapRetorno == true).ToList(); if (row["InterfaceID"] != DBNull.Value) { ent.Interface = new Model.Interface(); if (ent.Adapter.Tipo == Model.Adapter.TipoAdapter.DB) { ent.Interface.Item = new Selia.Integrador.DAL.Interface.DB().Consultar(Convert.ToInt32(row["InterfaceID"].ToString())); } else if (ent.Adapter.Tipo == Model.Adapter.TipoAdapter.ArquivoTexto) { ent.Interface.Item = new Selia.Integrador.DAL.Interface.ArquivoTexto().Consultar(Convert.ToInt32(row["InterfaceID"].ToString())); } else if (ent.Adapter.Tipo == Model.Adapter.TipoAdapter.WebService) { ent.Interface.Item = new Selia.Integrador.DAL.Interface.WebService().Consultar(Convert.ToInt32(row["InterfaceID"].ToString())); } else if (ent.Adapter.Tipo == Model.Adapter.TipoAdapter.Rest) { ent.Interface.Item = new Selia.Integrador.DAL.Interface.Rest().Consultar(Convert.ToInt32(row["InterfaceID"].ToString())); } } if (row["Nome"] != DBNull.Value) { ent.Nome = row["Nome"].ToString(); } if (row["ElementoRegistro"] != DBNull.Value) { ent.ElementoRegistro = row["ElementoRegistro"].ToString(); } if (row["PKPrimaria"] != DBNull.Value) { ent.PKPrimaria = row["PKPrimaria"].ToString(); } if (row["PKSecundaria"] != DBNull.Value) { ent.PKSecundaria = row["PKSecundaria"].ToString(); } if (row["Status"] != DBNull.Value) { ent.Status = row["Status"].ToString() == "0" ? false : true; } if (row["AcaoInicial"] != DBNull.Value) { ent.AcaoInicial = row["AcaoInicial"].ToString(); } if (row["AcaoFinal"] != DBNull.Value) { ent.AcaoFinal = row["AcaoFinal"].ToString(); } if (row["AcaoEnfileiramento"] != DBNull.Value) { ent.AcaoEnfileiramento = row["AcaoEnfileiramento"].ToString(); } if (row["ACAOCABECALHO"] != DBNull.Value) { ent.AcaoCabecalho = row["ACAOCABECALHO"].ToString(); } if (row["ACAORETURNOERRO"] != DBNull.Value) { ent.AcaoReturnoErro = row["ACAORETURNOERRO"].ToString(); } if (row["DestinoID"] != DBNull.Value) { ent.DestinoID = Convert.ToInt32(row["DestinoID"].ToString()); ent.Destino = new Model.Integracao(); ent.Destino = new Selia.Integrador.DAL.Integracao().ConsultarIntegracaoID(Convert.ToInt32(row["DestinoID"])); //ent.Destino.LogIntegracao = new Selia.Integrador.DAL.LogIntegracao().Consultar(ent.ID); } if (row["Consumidor"] != DBNull.Value) { ent.Consumidor = row["Consumidor"].ToString() == "0" ? false : true; } if (row["NODESNAOUTILIZADOS"] != DBNull.Value) { ent.NodesNaoUtilizados = row["NODESNAOUTILIZADOS"].ToString(); } if (row["NivelParalelismo"] != DBNull.Value) { ent.NivelParalelismo = Convert.ToInt32(row["NivelParalelismo"]); } else { ent.NivelParalelismo = 1; } if (ent.Adapter.Tipo == Model.Adapter.TipoAdapter.DB) { ent.ConnectionString = ((Model.Interface.DB)ent.Interface.Item).ConnectionString; } if (ent.LogIntegracao == null) { ent.LogIntegracao = new List <Model.LogIntegracao>(); } ent.Fila = new Selia.Integrador.DAL.Fila().ConsultarByStatus(ent.ID, 1); lst.Add(ent); } return(lst); }
public void ProcessarFila(Selia.Integrador.Adapter.Resultado objResult, Model.Integracao ent, List <Selia.Integrador.Adapter.Util.Mapeamento.Entidade> Mapeamentos) { List <XmlElement> lste = new List <XmlElement>(); foreach (XmlElement xmle in objResult.RespostaXmlSeparada) { Selia.Integrador.Adapter.Util.Mapeamento web = new Selia.Integrador.Adapter.Util.Mapeamento(); XmlNode root = xmle; web.ExecutarMapeamentoDePara(Mapeamentos, root); XmlDocument doc = new XmlDocument(); if (!string.IsNullOrEmpty(web.XmlDeEntrada.ToString())) { doc.LoadXml(web.XmlDeEntrada.ToString()); } lste.Add((XmlElement)doc.DocumentElement); } objResult.RespostaXmlSeparada = lste; Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = objResult.RespostaXmlCompleta.InnerXml; entLogIntegracao.QtdRegistros = objResult.RespostaXmlSeparada.Count; entLogIntegracao.Integracao = ent; int LogIntegracaoID = new BS.LogIntegracao().Inserir(entLogIntegracao); if (objResult.TipoMensagem == Selia.Integrador.Adapter.Resultado.Tipo.Sucesso) { if (ent.Destino != null) { BS.Fila filaBS = new BS.Fila(); foreach (XmlElement xmle in objResult.RespostaXmlSeparada) { string primaryKey = filaBS.ConsultaPrimaryKey(ent, xmle); string secondaryKey = filaBS.ConsultaSecondaryKey(ent, xmle); if (!filaBS.VerificaDuplicidade(ent, primaryKey, secondaryKey)) { Model.Fila entFila = new Model.Fila(); entFila.Conteudo = (xmle).ParentNode.InnerXml; entFila.Integracao.ID = ent.ID; entFila.DataCriacao = DateTime.Now; entFila.Status = Model.Fila.TipoStatus.Sucesso; entFila.LogIntegracaoID = LogIntegracaoID; entFila.IntegracaoDestino.ID = ent.Destino.ID; entFila.ChavePrimaria = primaryKey; entFila.ChaveSecundaria = secondaryKey; if (!string.IsNullOrEmpty(ent.AcaoEnfileiramento)) { List <object> lst = new List <object>(); lst.Add(entFila); lst.Add(ent.Mapeamento); lst.Add(xmle); entFila = (Model.Fila) new Selia.Integrador.Utils.Generic.Invoke().Exec(ent.AcaoEnfileiramento.Split(';')[0], ent.AcaoEnfileiramento.Split(';')[1], lst, ent.ConnectionString); } if (entFila != null) { filaBS.Inserir(entFila); } } } //Pega o ultimo elemento da fila para o mapeamento de retorno if (objResult.RespostaXmlSeparada != null && objResult.RespostaXmlSeparada.Count > 0) { if (ent.MapeamentoRetorno != null && ent.MapeamentoRetorno.Count > 0) { var ultimoElementoFila = objResult.RespostaXmlSeparada.Last(); foreach (var mapeamentoRetorno in ent.MapeamentoRetorno) { var mapeamento = new Util.Mapeamento.Entidade() { De = mapeamentoRetorno.De, Valor = mapeamentoRetorno.Valor, Acao = mapeamentoRetorno.Acao, Para = mapeamentoRetorno.Para }; var valor = new Util.Mapeamento().ObterValorNodeXml(mapeamento, ultimoElementoFila); //atualiza o valor do pai new Selia.Integrador.DAL.Mapeamento().AtualizarValor(mapeamentoRetorno.PaiID, valor); } } } } } }
public bool VerificaDuplicidade(Model.Integracao ent, string primaryKey, string secondaryKey) { return(this.ConsultarByChavePrimaria(ent.Destino.ID, primaryKey, secondaryKey).Count() > 0); }
public string ConsultaSecondaryKey(Model.Integracao ent, XmlElement xml) { return(ConsultaKey(xml, ent.PKSecundaria, true)); }
public string ConsultaPrimaryKey(Model.Integracao ent, XmlElement xml) { return(ConsultaKey(xml, ent.PKPrimaria, false)); }
private void ExecutaItemFila(Model.Integracao integracao, Model.Fila fila, Selia.Integrador.Adapter.Rest.Config configuracao) { var integracaoID = integracao.ID; string conteudoFila = null; try { var xmlFila = new XmlDocument(); xmlFila.LoadXml(fila.Conteudo); conteudoFila = fila.Conteudo; Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.Rest().Executar(configuracao, xmlFila); Model.LogFila logFila = new Model.LogFila(); logFila.Conteudo = objResult.ParametrosEnvio; logFila.ConteudoFila = fila.Conteudo; logFila.ChavePrimaria = fila.ChavePrimaria; logFila.ChaveSecundaria = fila.ChaveSecundaria; logFila.LogIntegracao.ID = fila.LogIntegracaoID; logFila.RespostaSemTratamento = objResult.RespostaSemTratamento; logFila.FilaID = fila.ID; logFila.IntegracaoID = integracao.ID; if (objResult.RespostaXmlCompleta != null) { logFila.ConteudoRetorno = objResult.RespostaXmlCompleta.InnerXml; } if (objResult.TipoMensagem == Selia.Integrador.Adapter.Resultado.Tipo.Sucesso) { new BS.Fila().Excluir(fila.ID); if (integracao.Destino != null) { new BS.Fila().ProcessarFila(objResult, integracao, configuracao.Mapeamentos); } } else { new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); } new BS.LogFila().Inserir(logFila); } catch (Selia.Integrador.Utils.Exceptions.HttpRestRetornoException exIntegradoRetorno) { Model.LogFila logFila = new Model.LogFila(); logFila.ChavePrimaria = fila.ChavePrimaria; logFila.ChaveSecundaria = fila.ChaveSecundaria; logFila.LogIntegracao.ID = fila.LogIntegracaoID; logFila.FilaID = fila.ID; logFila.ConteudoFila = fila.Conteudo; logFila.Conteudo = exIntegradoRetorno.ParamentroEnvio; logFila.RespostaSemTratamento = "Connection: " + ConnectionMonitor.Monitor.Instance.GetStatus() + " ** " + exIntegradoRetorno.RetornoNaoTratado; logFila.ConteudoRetorno = exIntegradoRetorno.RetornoTratado; logFila.IntegracaoID = integracao.ID; new BS.LogFila().Inserir(logFila); new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = string.Format("{0} - Valor de entrada:{1}", exIntegradoRetorno.ToString(), exIntegradoRetorno.InformacaoAdicional); entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 2; //1 Sucesso 2 Erro new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", integracao.Nome, exIntegradoRetorno.Message, exIntegradoRetorno.ToString())); } catch (Selia.Integrador.Utils.Exceptions.HttpRestException exIntegrador) { new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); Model.LogFila logFila = new Model.LogFila(); logFila.ChavePrimaria = fila.ChavePrimaria; logFila.ChaveSecundaria = fila.ChaveSecundaria; logFila.LogIntegracao.ID = fila.LogIntegracaoID; logFila.FilaID = fila.ID; logFila.ConteudoFila = fila.Conteudo; logFila.Conteudo = exIntegrador.ParamentroEnvio; logFila.RespostaSemTratamento = "Connection: " + ConnectionMonitor.Monitor.Instance.GetStatus() + " ** " + exIntegrador.RetornoNaoTratado; logFila.ConteudoRetorno = exIntegrador.RetornoTratado; logFila.IntegracaoID = integracao.ID; new BS.LogFila().Inserir(logFila); new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); if (!string.IsNullOrEmpty(integracao.AcaoReturnoErro)) { List <object> parametros = new List <object>(); parametros.Add(fila.ID); parametros.Add(fila); parametros.Add(exIntegrador.InformacaoAdicional); new Selia.Integrador.Utils.Generic.Invoke().Exec(integracao.AcaoReturnoErro.Split(';')[0], integracao.AcaoReturnoErro.Split(';')[1], parametros); } else { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = exIntegrador.Message; entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 2; //1 Sucesso 2 Erro new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", integracao.Nome, exIntegrador.Message, exIntegrador.ToString())); } } }
public void Executar(Model.Integracao ent) { Selia.Integrador.Adapter.DB.Config objConfig = new Selia.Integrador.Adapter.DB.Config(); var item = ((Model.Interface.DB)ent.Interface.Item); objConfig.StoredProcedure = item.StoredProcedure; objConfig.ConnectionString = item.ConnectionString; objConfig.ElementoSeparador = ent.ElementoRegistro; objConfig.ExecucaoFinal = ent.AcaoFinal; objConfig.Mapeamentos = MapearParaAdapter(ent.Mapeamento); objConfig.ExecucaoInicial = ent.AcaoInicial; objConfig.ExecucaoEnfileiramento = ent.AcaoEnfileiramento; objConfig.DataBaseNameFactory = item.DataBaseNameFactory; if (ent.Consumidor) { foreach (Model.Fila fila in ent.Fila) { try { Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.DB().Executar(objConfig, fila.Conteudo, ent.Destino != null); Model.LogFila entLogFila = new Model.LogFila(); entLogFila.ConteudoFila = fila.Conteudo; entLogFila.Conteudo = fila.Conteudo; entLogFila.ChavePrimaria = fila.ChavePrimaria; entLogFila.ChaveSecundaria = fila.ChaveSecundaria; entLogFila.LogIntegracao.ID = fila.LogIntegracaoID; entLogFila.FilaID = fila.ID; entLogFila.IntegracaoID = ent.ID; if (!string.IsNullOrEmpty(objResult.Mensagem)) { entLogFila.ConteudoRetorno = objResult.Mensagem; } new BS.LogFila().Inserir(entLogFila); if (objResult.TipoMensagem == Selia.Integrador.Adapter.Resultado.Tipo.Sucesso) { if (objResult.RespostaXmlCompleta != null && objResult.RespostaXmlSeparada != null && objResult.RespostaXmlSeparada.Count > 0) { new BS.Fila().ProcessarFila(objResult, ent, null); } new BS.Fila().Excluir(fila.ID); } else { new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); } } catch (Exception ex) { //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", ent.Nome, ex.Message, ex.StackTrace)); } } if (ent.Destino != null) { new BS.Integracao().Executar(ent.Destino.ID); } } else { try { List <Selia.Integrador.Adapter.Util.Mapeamento.Entidade> maps = MapearParaAdapter(ent.Mapeamento); foreach (Model.Interface.DB.ParametroDB Param in item.Parametros) { objConfig.Mapeamentos.Add(new Selia.Integrador.Adapter.Util.Mapeamento.Entidade() { Para = Param.De, Valor = Param.Para }); } Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.DB().Executar(objConfig); new BS.Fila().ProcessarFila(objResult, ent, maps); } catch (Exception ex) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = ex.Message; entLogIntegracao.Integracao = ent; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", ent.Nome, ex.Message, ex.StackTrace)); } } //if (ent.DestinoID > 0) //{ // new IntegracaoNova().Executar(ent.DestinoID, true); //} }
private void Executor(Selia.Integrador.Adapter.WebService.Config objConfig, Model.Integracao ent, XmlDocument Fila = null) { try { var item = ((Model.Interface.WebService)ent.Interface.Item); List <Selia.Integrador.Adapter.Util.Mapeamento.Entidade> maps = objConfig.Mapeamentos; objConfig.Mapeamentos = new List <Selia.Integrador.Adapter.Util.Mapeamento.Entidade>(); foreach (Model.Interface.WebService.ParametroWS param in item.Parametros) { objConfig.Mapeamentos.Add(new Selia.Integrador.Adapter.Util.Mapeamento.Entidade() { Para = param.De, Valor = param.Para }); } objConfig.DataHoraUltimaExecucao = ent.DataHoraUltimaExecucao; Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.WebService().Executar(objConfig, Fila); new BS.Fila().ProcessarFila(objResult, ent, maps); } catch (Exception ex) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = ex.Message; entLogIntegracao.Integracao = ent; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", ent.Nome, ex.Message, ex.StackTrace)); } }
public void Consumidor(Selia.Integrador.Adapter.WebService.Config objConfig, Model.Integracao ent) { List <Selia.Integrador.Adapter.Util.Mapeamento.Entidade> MapeamentoEntrada = new List <Selia.Integrador.Adapter.Util.Mapeamento.Entidade>(); if (ent.Destino != null) { MapearParaAdapter(ent.Destino.Mapeamento); } int maxDegreeOfParallelism = ent.NivelParalelismo; Parallel.ForEach(ent.Fila, new ParallelOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism }, (fila) => { ExecutaItemFila(ent, fila, objConfig, MapeamentoEntrada); }); }