Пример #1
0
        private loaderResultsStruct runCallableLoaderMethod(XDocument loaderRecord)
        {
            string loaderSessionID = string.Empty;
            loaderResultsStruct selectReturn = null;
            bool ifRetry = true;
            int retryCounter = 0;
            bool isContingency = false;
            DateTime runStartTime = DateTime.Now;

            GenevaWfmInterface.GenevaSoap.Service webServ = new GenevaWfmInterface.GenevaSoap.Service();
            webServ.Url = m_genevaUrl;

            while (ifRetry)
            {
                try
                {
                    if (loaderSessionID.Equals(String.Empty))
                        loaderSessionID = webServ.StartCallableLoader(m_genevaPort, m_genevaHostName, m_genevaUid, m_genevaPassword);

                    selectReturn = webServ.RunCallableLoader(loaderSessionID, loaderRecord.ToString(), "-x -bvc -iu");

                    int recSuccess = 0;
                    int recFailure = 0;
                    foreach (loaderResultsVectorElement r in selectReturn.results)
                    {
                        if (r.status.Equals("Failure"))
                        {
                            _log.Error(r.message);
                            recFailure++;
                        }
                        else
                            recSuccess++;
                    }
                    _log.InfoFormat("Uploaded to Geneva: {0} records  successfully, {1} records  failed.", recSuccess, recFailure);
                    message = String.Format("Uploaded to Geneva: {0} records  successfully, {1} records  failed.", recSuccess, recFailure);

                    if (isContingency)
                        SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call succeeded.");

                    ifRetry = false;
                }
                catch (System.Web.Services.Protocols.SoapException wex)
                {
                    if (DateTime.Now.CompareTo(runStartTime.AddMinutes(minutesSoapRetry)) < 0)
                    {
                        isContingency = true;
                        SendMailMessage(listTo, listFrom, subject, wex.ToString());

                        _log.Error(wex.Message);
                        _log.ErrorFormat("Retrying {0}/{1} minutes", ++retryCounter, minutesSoapRetry);

                        Thread.Sleep(60000);
                    }
                    else
                    {
                        SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call timed out. Giving up now.");
                        message = "Geneva SOAP call timed out. Giving up now.";
                        ifRetry = false;
                    }
                }
                catch (Exception e)
                {
                    _log.Error(e.Message);
                    message = e.Message;
                    throw e;
                }
            }
            return selectReturn;
        }
Пример #2
0
        private object runReportSelectLiteral(string query)
        {
            object results = null;
            string runrepSessionID = string.Empty;
            bool ifRetry = true;
            int retryCounter = 0;
            bool isContingency = false;
            DateTime runStartTime = DateTime.Now;

            GenevaWfmInterface.GenevaSoap.Service webServ = new GenevaWfmInterface.GenevaSoap.Service();
            webServ.Url = m_genevaUrl;

            while (ifRetry)
            {
                try
                {
                    if (runrepSessionID.Equals(String.Empty))
                        runrepSessionID = webServ.StartCallableRunrep(m_genevaPort, m_genevaHostName, m_genevaUid, m_genevaPassword, "-f empty");
                    results = webServ.RunCallableRunrepRunSelectLiteral(runrepSessionID, query, "");
                    webServ.ShutdownCallableSession(runrepSessionID);

                    if (isContingency)
                    {
                        SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call succeeded.");
                        message = "Geneva SOAP call succeeded.";
                    }

                    ifRetry = false;
                }
                catch (System.Web.Services.Protocols.SoapException wex)
                {
                    if (DateTime.Now.CompareTo(runStartTime.AddMinutes(minutesSoapRetry)) < 0)
                    {
                        isContingency = true;
                        SendMailMessage(listTo, listFrom, subject, wex.ToString());

                        _log.Error(wex.Message);
                        _log.ErrorFormat("Retrying {0}/{1} minutes", ++retryCounter, minutesSoapRetry);
                        
                        Thread.Sleep(60000);
                    }
                    else
                    {
                        SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call timed out. Giving up now.");
                        message = "Geneva SOAP call timed out. Giving up now.";
                        ifRetry = false;
                    }
                }
                catch (Exception e)
                {
                    _log.Error(e.Message);
                    message = e.Message;
                    throw e;
                }
            }

            return results;
        }