///保存运行的任务,主要是保存当前运行的状态 ///任务保存需要同时保存taskrun.xml,主要是保存采集数量 ///注意,如果进行暂存后,任务的链接地址会发生变化,因为在任务新建时,任务链接地址有可能带有一定得参数 ///但任务一旦开始执行,带有参数的网址就会进行解析,同时是按照解析后的网址进行是否采集的标识,所以,再次 ///保存后,链接地址会很多 public void Save() { string FileName = Program.getPrjPath() + "tasks\\run\\task" + this.TaskID + ".xml"; string runFileindex = Program.getPrjPath() + "tasks\\taskrun.xml"; //开始保存文件 string tXml = ""; for (int i = 0; i < m_TaskData.Weblink.Count; i++) { tXml += "<WebLink>"; tXml += "<Url>" + cTool.ReplaceTrans(m_TaskData.Weblink[i].Weblink.ToString()) + "</Url>"; tXml += "<IsNag>" + m_TaskData.Weblink[i].IsNavigation + "</IsNag>"; //tXml += "<IsOppPath>" + m_TaskData.Weblink[i].IsOppPath + "</IsOppPath>"; //tXml += "<NagRule>" + cTool.ReplaceTrans(m_TaskData.Weblink[i].NagRule) + "</NagRule>"; tXml += "<IsNextPage>" + m_TaskData.Weblink[i].IsNextpage + "</IsNextPage>"; tXml += "<NextPageRule>" + cTool.ReplaceTrans(m_TaskData.Weblink[i].NextPageRule) + "</NextPageRule>"; tXml += "<IsGathered>" + (int)m_TaskData.Weblink[i].IsGathered + "</IsGathered>"; //保存采集地地址是否需要导航 //插入此网址的导航规则 if (m_TaskData.Weblink[i].IsNavigation == true) { tXml += "<NavigationRules>"; for (int j = 0; j < m_TaskData.Weblink[i].NavigRules.Count; j++) { tXml += "<Rule>"; tXml += "<Url>" + cTool.ReplaceTrans(m_TaskData.Weblink[i].NavigRules[j].Url) + "</Url>"; tXml += "<Level>" + m_TaskData.Weblink[i].NavigRules[j].Level + "</Level>"; tXml += "<NagRule>" + cTool.ReplaceTrans(m_TaskData.Weblink[i].NavigRules[j].NavigRule) + "</NagRule>"; tXml += "</Rule>"; } tXml += "</NavigationRules>"; } tXml += "</WebLink>"; } cXmlIO cxml = new cXmlIO(FileName); cxml.DeleteNode("WebLinks"); cxml.InsertElement("Task", "WebLinks", tXml); cxml.Save(); cxml = null; cxml = new cXmlIO(runFileindex); cxml.EditTaskrunValue(this.TaskID.ToString(), cGlobalParas.TaskState.Stopped, this.GatheredUrlCount.ToString(), this.GatheredTrueUrlCount.ToString(), this.GatherErrUrlCount.ToString(), this.GatheredTrueErrUrlCount.ToString(), this.TrueUrlCount.ToString()); cxml.Save(); cxml = null; }
/// 重置采集任务为未启动状态 internal void ResetTaskData() { // 停止任务 //Stop(); m_TaskData.GatheredUrlCount = 0; m_TaskData.GatherErrUrlCount = 0; m_TaskData.GatheredTrueUrlCount = 0; m_TaskData.GatheredTrueErrUrlCount = 0; //修改taskrun文件中,此文件索引的采集地址和出错地址为0 string runFileindex = Program.getPrjPath() + "tasks\\taskrun.xml"; cXmlIO cxml = new cXmlIO(runFileindex); cxml = new cXmlIO(runFileindex); //还原数据需要将实际需要采集的网址数量初始化为UrlCount cxml.EditTaskrunValue(this.TaskID.ToString(), cGlobalParas.TaskState.UnStart, "0", "0", "0", "0", m_TaskData.UrlCount.ToString()); cxml.Save(); cxml = null; string tXml = ""; for (int i = 0; i < m_TaskData.Weblink.Count; i++) { tXml += "<WebLink>"; tXml += "<Url>" + cTool.ReplaceTrans(m_TaskData.Weblink[i].Weblink.ToString()) + "</Url>"; tXml += "<IsNag>" + m_TaskData.Weblink[i].IsNavigation + "</IsNag>"; tXml += "<IsNextPage>" + m_TaskData.Weblink[i].IsNextpage + "</IsNextPage>"; tXml += "<NextPageRule>" + cTool.ReplaceTrans(m_TaskData.Weblink[i].NextPageRule) + "</NextPageRule>"; tXml += "<IsGathered>" + (int)cGlobalParas.UrlGatherResult.UnGather + "</IsGathered>"; if (m_TaskData.Weblink[i].IsNavigation == true) { tXml += "<NavigationRules>"; for (int j = 0; j < m_TaskData.Weblink[i].NavigRules.Count; j++) { tXml += "<Rule>"; tXml += "<Url>" + m_TaskData.Weblink[i].NavigRules[j].Url + "</Url>"; tXml += "<Level>" + m_TaskData.Weblink[i].NavigRules[j].Level + "</Level>"; tXml += "<NagRule>" + m_TaskData.Weblink[i].NavigRules[j].NavigRule + "</NagRule>"; tXml += "</Rule>"; } tXml += "</NavigationRules>"; } tXml += "</WebLink>"; m_TaskData.Weblink[i].IsGathered = (int)cGlobalParas.UrlGatherResult.UnGather; } string FileName = Program.getPrjPath() + "tasks\\run\\task" + m_TaskData.TaskID + ".xml"; cXmlIO cxml1 = new cXmlIO(FileName); cxml1.DeleteNode("WebLinks"); cxml1.InsertElement("Task", "WebLinks", tXml); cxml1.Save(); cxml1 = null; //删除临时存储的采集数据xml文件 string tmpFileName = m_TaskData.SavePath + "\\" + m_TaskData.TaskName + "-" + m_TaskData.TaskID + ".xml"; if (File.Exists(tmpFileName)) { File.Delete(tmpFileName); } Task.cTaskRun t = new Task.cTaskRun(); t.LoadSingleTask(m_TaskData.TaskID); m_TaskData.UrlCount = t.GetUrlCount(0); t = null; //m_TaskData.TaskSplitData.Clear (); //m_IsDataInitialized = false; }