コード例 #1
0
        private void GetIntegrationInterval()
        {
            using (DataSet1TableAdapters.INTEGRATOR_LOGTableAdapter logTableAdapter = new DataSet1TableAdapters.INTEGRATOR_LOGTableAdapter())
            {
                endDate = DateTime.Now;
                endDate = endDate.AddSeconds(-delay);

                initDate = null;
                try
                {
                    initDate = logTableAdapter.GetLastIntegrationDate(seq);
                }
                catch (Exception ex)
                {
                    Logger.AddToFile(ex.ToString());
                }

                if (!initDate.HasValue)
                {
                    if (baseTime.HasValue && baseTime < endDate)
                    {
                        initDate = baseTime;
                    }
                    else
                    {
                        initDate = endDate.AddSeconds(-interval);
                    }
                }

                if (initDate.HasValue)
                {
                    if (initDate >= endDate)
                    {
                        initDate = endDate.AddSeconds(-interval);
                    }
                }
            }
        }
コード例 #2
0
        public static void Start(object obj)
        {
            while (true)
            {
                using (DataSet1TableAdapters.INTEGRATOR_INTEGRATIONTableAdapter integrationTableAdapter = new DataSet1TableAdapters.INTEGRATOR_INTEGRATIONTableAdapter())
                {
                    using (DataSet1TableAdapters.INTEGRATOR_LOGTableAdapter logTableAdapter = new DataSet1TableAdapters.INTEGRATOR_LOGTableAdapter())
                    {
                        using (DataSet1.INTEGRATOR_LOGDataTable logDataTable = new DataSet1.INTEGRATOR_LOGDataTable())
                        {
                            try
                            {
                                int    seq;
                                int    intTemp;
                                int    seqIntegration;
                                int    tries    = 0;
                                int    maxTries = 0;
                                string log;
                                string resultString = string.Empty;

                                logTableAdapter.UpdatePending();
                                logTableAdapter.FillByPending(logDataTable);
                                foreach (DataRow row in logDataTable.Rows)
                                {
                                    if (int.TryParse(row["SEQ"].ToString(), out intTemp))
                                    {
                                        seq = intTemp;
                                        if (int.TryParse(row["SEQ_INTEGRATION"].ToString(), out intTemp))
                                        {
                                            seqIntegration = intTemp;
                                            Integration integration = new Integration(seqIntegration);
                                            integration.GetIntegrationParameters();

                                            if (integration.paused)
                                            {
                                                continue;
                                            }

                                            maxTries = integration.maxTries;

                                            if (int.TryParse(row["TRIES"].ToString(), out intTemp))
                                            {
                                                tries = intTemp;
                                            }
                                            log = row["LOG"].ToString();

                                            if (tries >= maxTries)
                                            {
                                                log = IncrementLog(log, "O número máximo de tentativas foi excedido (" + tries + "/" + maxTries + ").");
                                                Logger.UpdateLog(seq, string.Empty, log, "X", true);
                                            }
                                            else
                                            {
                                                using (DataSet1TableAdapters.INTEGRATOR_WEBSERVICETableAdapter webserviceTableAdapter = new DataSet1TableAdapters.INTEGRATOR_WEBSERVICETableAdapter())
                                                {
                                                    using (DataSet1.INTEGRATOR_WEBSERVICEDataTable webserviceDataTable = new DataSet1.INTEGRATOR_WEBSERVICEDataTable())
                                                    {
                                                        try
                                                        {
                                                            webserviceTableAdapter.FillByIntegration(webserviceDataTable, seqIntegration);
                                                            foreach (DataRow webserviceRow in webserviceDataTable.Rows)
                                                            {
                                                                if (int.TryParse(webserviceRow["SEQ"].ToString(), out intTemp))
                                                                {
                                                                    WebService webservice = new WebService();
                                                                    webservice.seq = intTemp;
                                                                    webservice.url = webserviceRow["URL"].ToString();
                                                                    webservice.webservNamespace = webserviceRow["NAMESPACE"].ToString();
                                                                    webservice.method           = webserviceRow["METHOD"].ToString();
                                                                    webservice.logRow           = row;
                                                                    webservice.GetParameters();
                                                                    bool   parseError = false;
                                                                    string error      = string.Empty;

                                                                    webservice.Invoke();
                                                                    resultString = webservice.resultString;

                                                                    using (DataSet1TableAdapters.INTEGRATOR_PROCEDURETableAdapter procedureTableAdapter = new DataSet1TableAdapters.INTEGRATOR_PROCEDURETableAdapter())
                                                                    {
                                                                        using (DataSet1.INTEGRATOR_PROCEDUREDataTable procedureDataTable = new DataSet1.INTEGRATOR_PROCEDUREDataTable())
                                                                        {
                                                                            procedureTableAdapter.FillByWebservice(procedureDataTable, webservice.seq);

                                                                            foreach (DataRow procedureRow in procedureDataTable.Rows)
                                                                            {
                                                                                if (int.TryParse(procedureRow["SEQ"].ToString(), out intTemp))
                                                                                {
                                                                                    Procedure procedure = new Procedure();
                                                                                    procedure.seq   = intTemp;
                                                                                    procedure.owner = procedureRow["OWNER"].ToString();
                                                                                    procedure.name  = procedureRow["NAME"].ToString();
                                                                                    try
                                                                                    {
                                                                                        procedure.GetParameters(webservice.resultXML);
                                                                                    }
                                                                                    catch (Exception)
                                                                                    {
                                                                                        parseError = true;
                                                                                        try
                                                                                        {
                                                                                            error = webservice.resultXML.Descendants().Where(x => x.Name.ToString().ToLower().Contains("erro")).FirstOrDefault().Value;
                                                                                        }
                                                                                        catch (Exception)
                                                                                        {
                                                                                            //Bypass error
                                                                                        }
                                                                                    }
                                                                                    if (!parseError)
                                                                                    {
                                                                                        procedure.Execute();
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                    }

                                                                    if (parseError)
                                                                    {
                                                                        log = IncrementLog(log, "Erro ao interpretar retorno: " + error);
                                                                        Logger.UpdateLog(seq, resultString, log, "D", false);
                                                                    }
                                                                    else
                                                                    {
                                                                        log = IncrementLog(log, "SUCESSO!");
                                                                        Logger.UpdateLog(seq, resultString, log, "S", false);
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        catch (Exception ex)
                                                        {
                                                            log = IncrementLog(log, ex.ToString());
                                                            Logger.UpdateLog(seq, resultString, log, "F", false);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                Logger.AddToFile(ex.ToString());
                            }

                            Thread.Sleep(15 * 1000); //Aguarda antes de tentar novamente.
                        }
                    }
                }
            }
        }