Ejemplo n.º 1
0
        private void ProcessBeforDisposedFailureTask(BaseVBAScriptTask basetask)
        {
            //将Log写入数据库
            basetask.DoDBLogging();

            //更新统计信息
            DomainManager.GetDomain(basetask.DomainGUID).IncreaseTotalTask();
            DomainManager.GetDomain(basetask.DomainGUID).IncreaseRunningTime(basetask.RunningTime);
            DomainManager.GetDomain(basetask.DomainGUID).IncreaseErrorTime(basetask.ErrorTime);
        }
        public override List <ITask> NextTasks()
        {
            List <ITask> ltask = base.NextTasks();
            Domain       d     = DomainManager.GetDomain(m_domainGUID);

            if (d != null)
            {
                ltask.Add(new LocalStorageVBAScriptTask(m_domainGUID, m_taskchainGUID, m_vbaobjs));
                m_vbaobjs = null;
            }
            return(ltask);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 构造函数(输入站点DomainGUID, 任务链TaskChainGUID, IVBAObject数组对象)
 /// </summary>
 public RemotePreparationVBAScriptTask(string dGUID, string tcGUID, Dictionary <string, IVBAObject> vobjs) : base(dGUID, tcGUID, vobjs)
 {
     if (vobjs == null)
     {
         m_vbaobjs = GetVBAObjectForNewTaskChain(DomainManager.GetDomain(dGUID));
     }
     else
     if (vobjs.Count == 0)
     {
         m_vbaobjs = GetVBAObjectForNewTaskChain(DomainManager.GetDomain(dGUID));
     }
 }
        public Domain GetDomain(string domainGUID)
        {
            Domain d = DomainManager.GetDomain(domainGUID);

            if (d == null)
            {
                throw new NullReferenceException(domainGUID + "不存在!");
            }
            else
            {
                return(d);
            }
        }
 /// <summary>
 /// 构造函数(输入站点DomainGUID, IVBAObject数组对象)
 /// </summary>
 public LocalPreparationVBAScriptTask(string dGUID, Dictionary <string, IVBAObject> vobjs) : base(dGUID, vobjs)
 {
     if (vobjs == null)
     {
         m_vbaobjs = GetVBAObjectForNewTaskChain(DomainManager.GetDomain(dGUID));
     }
     else
     if (vobjs.Count == 0)
     {
         m_vbaobjs = GetVBAObjectForNewTaskChain(DomainManager.GetDomain(dGUID));
     }
     m_taskchainGUID = Guid.NewGuid().ToString();
 }
Ejemplo n.º 6
0
        /// <summary>
        /// 构造函数(输入站点domainGUID, 将自动从站点中抽取PreparationScript)
        /// </summary>
        public RemotePreparationVBAScriptTask(string domainGUID)
        {
            Domain d = DomainManager.GetDomain(domainGUID);

            if (d != null)
            {
                m_domainGUID    = d.DomainGUID;
                m_script        = d.PreparationScript;
                m_vbaobjs       = GetVBAObjectForNewTaskChain(d);
                m_taskchainGUID = Guid.NewGuid().ToString();
                m_timestamp     = GetTimeStamp();
            }
            else
            {
                throw new Exception("Invalid DomainGUID: " + domainGUID);
            }
        }
 protected override string GetScript()
 {
     return(DomainManager.GetDomain(this.DomainGUID).StorageScript);
 }
Ejemplo n.º 8
0
 protected override string GetScript()
 {
     return(DomainManager.GetDomain(this.DomainGUID).PreparationScript);
 }
Ejemplo n.º 9
0
        protected void ScriptThreadRunner()
        {
            //实现BeforeTask事件
            if (BeforeScript != null)
            {
                BeforeScript(this, null);
            }

            try
            {
                //Log开始
                GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " start...[running time: " + m_runningtime.ToString() + "] [at " + System.Net.Dns.GetHostName() + "]");

                //执行脚本,带空脚本处理
                if (m_script != null && m_script != "")
                {
                    m_engine.Run();
                }

                //关闭引擎
                EngineClose();

                //从VBATask中得到Task状态
                VBATaskStatus ts = (m_vbaobjs["Task"] as VBATask).CurrentVBATaskStatus;
                switch (ts)
                {
                case VBATaskStatus.Failure:
                    GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " fail...");
                    m_taskstatus = TaskStatus.Failure;
                    break;

                case VBATaskStatus.RestartADSL:
                    //重置ADSL(Client)
                    if (ADSLFactory.Reconnect())
                    {
                        GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " restart ADSL...succeed!");
                        m_taskstatus = TaskStatus.Restart;
                    }
                    else
                    {
                        GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " restarting ADSL failed... setting this task failure!");
                        m_taskstatus = TaskStatus.Failure;
                    }
                    break;

                case VBATaskStatus.Ready:
                    m_taskstatus = TaskStatus.Succeed;
                    GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " succeed...");
                    break;

                case VBATaskStatus.Error:
                    m_taskstatus = TaskStatus.Error;
                    GetLogger().LogListLog(VBALogLevelFlag.Error, this.Name + " set error by customer...");
                    break;

                case VBATaskStatus.Close:
                    m_taskstatus = TaskStatus.Succeed;
                    GetLogger().LogListLog(VBALogLevelFlag.Warn, this.Name + " close whole domain!");
                    Domain d = DomainManager.GetDomain(m_domainGUID);
                    if (d.Enable)
                    {
                        d.Enable = false;
                    }
                    break;

                case VBATaskStatus.TurnToNext:
                    m_taskstatus = TaskStatus.Succeed;
                    GetLogger().LogListLog(VBALogLevelFlag.Warn, this.Name + " close and turn to next domain!");
                    Domain dd = DomainManager.GetDomain(m_domainGUID);
                    if (dd.Enable || dd.Priority == DomainPriority.OneTime)
                    {
                        DomainManager.TurnToNextDomain(m_domainGUID);
                    }
                    break;

                default:
                    m_taskstatus = TaskStatus.Succeed;
                    GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " succeed...");
                    break;
                }
            }
            catch (Exception e)
            {
                if (m_IsClosing)
                {
                    log.Warn(this.Name + " closed by force...");
                    GetLogger().LogListLog(VBALogLevelFlag.Warn, this.Name + " closed...");
                    m_taskstatus = TaskStatus.Closing;
                }
                else
                {
                    GetLogger().LogListLog(VBALogLevelFlag.Error, this.Name + " runtime error..." + ParserErrorString(e));
                    log.Error(this.Name + " runtime error: ", e);
                    m_errortime++;
                    m_taskstatus = TaskStatus.Error;
                }
            }
            finally
            {
                //实现AfterTask事件
                if (AfterScript != null)
                {
                    AfterScript(this, null);
                }
            }
        }
Ejemplo n.º 10
0
 /// <summary>
 ///重写该方法,得到时间戳
 /// </summary>
 protected virtual DateTime GetTimeStamp()
 {
     return(DomainManager.GetDomain(m_domainGUID).TimeStamp);
 }