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); }
/// <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(); }
/// <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); }
protected override string GetScript() { return(DomainManager.GetDomain(this.DomainGUID).PreparationScript); }
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); } } }
/// <summary> ///重写该方法,得到时间戳 /// </summary> protected virtual DateTime GetTimeStamp() { return(DomainManager.GetDomain(m_domainGUID).TimeStamp); }