Beispiel #1
0
        //获取一个执行的计划
        public cPlan GetSinglePlan(Int64 PlanID)
        {
            //判断计划文件是否存在,如果不存在则新建
            if (!IsExist())
            {
                NewIndexFile();
            }

            //判断计划是否重名,如果重名则需要进行名称修改
            cXmlIO   xmlConfig = new cXmlIO(Program.getPrjPath() + "tasks\\plan\\plan.xml");
            DataView d         = xmlConfig.GetData("Plans", "ID", PlanID.ToString());
            DataView t         = d[0].CreateChildView("Plan_Tasks")[0].CreateChildView("Tasks_Task");
            cPlan    p         = new cPlan();

            p.PlanID           = Int64.Parse(d[0].Row["ID"].ToString());
            p.PlanName         = d[0].Row["PlanName"].ToString();
            p.PlanRemark       = d[0].Row["PlanRemark"].ToString();
            p.PlanState        = int.Parse(d[0].Row["PlanState"].ToString());
            p.IsOverRun        = d[0].Row["IsOverRun"].ToString() == "True" ? true : false;
            p.IsDisabled       = d[0].Row["IsDisabled"].ToString() == "True" ? true : false;
            p.DisabledType     = int.Parse(d[0].Row["DisabledType"].ToString());
            p.DisabledTime     = int.Parse(d[0].Row["DisabledTime"].ToString());
            p.DisabledDateTime = DateTime.Parse(d[0].Row["DisabledDateTime"].ToString());
            p.RunTaskPlanType  = int.Parse(d[0].Row["RunTaskPlanType"].ToString());
            p.EnabledDateTime  = d[0].Row["EnabledDateTime"].ToString();
            p.RunOnesTime      = d[0].Row["RunOnesTime"].ToString();
            p.RunDayTime       = d[0].Row["RunDayTime"].ToString();
            p.RunAMTime        = d[0].Row["RunAMTime"].ToString();
            p.RunPMTime        = d[0].Row["RunPMTime"].ToString();
            p.RunWeeklyTime    = d[0].Row["RunWeeklyTime"].ToString();
            p.RunWeekly        = d[0].Row["RunWeekly"].ToString();
            p.RunTimeCount     = d[0].Row["RunTimeCount"].ToString();
            p.FirstRunTime     = d[0].Row["FirstRunTime"].ToString();
            p.RunInterval      = d[0].Row["RunInterval"].ToString();


            cTaskPlan tp;

            for (int i = 0; i < t.Count; i++)
            {
                tp             = new cTaskPlan();
                tp.RunTaskType = int.Parse(t[i].Row["RunTaskType"].ToString());
                tp.RunTaskName = t[i].Row["RunTaskName"].ToString();
                tp.RunTaskPara = t[i].Row["RunTaskPara"].ToString();
                p.RunTasks.Add(tp);
            }

            xmlConfig = null;
            return(p);
        }
        //��ȡһ��ִ�еļƻ�
        public cPlan GetSinglePlan(Int64 PlanID)
        {
            //�жϼƻ��ļ��Ƿ���ڣ�������������½�
            if (!IsExist())
                NewIndexFile();

            //�жϼƻ��Ƿ������������������Ҫ���������޸�
            cXmlIO xmlConfig = new cXmlIO(Program.getPrjPath() + "tasks\\plan\\plan.xml");
            DataView d= xmlConfig.GetData("Plans", "ID", PlanID.ToString ());
            DataView t = d[0].CreateChildView("Plan_Tasks")[0].CreateChildView("Tasks_Task");
            cPlan p = new cPlan();

            p.PlanID = Int64.Parse(d[0].Row["ID"].ToString());
            p.PlanName = d[0].Row["PlanName"].ToString();
            p.PlanRemark = d[0].Row["PlanRemark"].ToString();
            p.PlanState = int.Parse(d[0].Row["PlanState"].ToString());
            p.IsOverRun = d[0].Row["IsOverRun"].ToString() == "True" ? true : false;
            p.IsDisabled = d[0].Row["IsDisabled"].ToString() == "True" ? true : false;
            p.DisabledType = int.Parse(d[0].Row["DisabledType"].ToString());
            p.DisabledTime = int.Parse(d[0].Row["DisabledTime"].ToString());
            p.DisabledDateTime = DateTime.Parse(d[0].Row["DisabledDateTime"].ToString());
            p.RunTaskPlanType = int.Parse(d[0].Row["RunTaskPlanType"].ToString());
            p.EnabledDateTime = d[0].Row["EnabledDateTime"].ToString();
            p.RunOnesTime =d[0].Row["RunOnesTime"].ToString();
            p.RunDayTime = d[0].Row["RunDayTime"].ToString();
            p.RunAMTime = d[0].Row["RunAMTime"].ToString();
            p.RunPMTime = d[0].Row["RunPMTime"].ToString();
            p.RunWeeklyTime = d[0].Row["RunWeeklyTime"].ToString();
            p.RunWeekly = d[0].Row["RunWeekly"].ToString();
            p.RunTimeCount = d[0].Row["RunTimeCount"].ToString();
            p.FirstRunTime = d[0].Row["FirstRunTime"].ToString();
            p.RunInterval = d[0].Row["RunInterval"].ToString();

            cTaskPlan tp;
            for (int i = 0; i < t.Count; i++)
            {
                tp = new cTaskPlan();
                tp.RunTaskType =int.Parse ( t[i].Row["RunTaskType"].ToString());
                tp.RunTaskName = t[i].Row["RunTaskName"].ToString();
                tp.RunTaskPara = t[i].Row["RunTaskPara"].ToString();
                p.RunTasks.Add(tp);
            }

            xmlConfig = null;
            return p;
        }
 public cAddRunTaskEventArgs(cTaskPlan RTask)
 {
     m_RunTask = RTask;
 }
        private Int64 SaveTaskPlan()
        {
            cPlan NewPlan = new cPlan();

            Int64 Nid = GetNewID();

            if (Nid == 0)
            {
                throw new cSoukeyException(rm.GetString ("Error21"));
            }

            NewPlan.PlanID = Nid;
            NewPlan.PlanName = this.txtPlanName.Text;
            NewPlan.PlanRemark = this.txtPlanDemo.Text;

            //ϵͳ�Զ��жϵ�ǰ�����״̬
            if (this.cboxIsDisabled.Checked == true)
            {
                if (this.raNumber.Checked == true)
                {
                    if (this.DisabledRunNum.Value == 1 && DateTime.Compare(DateTime.Now,this.RunOnceTime.Value) > 0)
                        NewPlan.PlanState =(int) cGlobalParas.PlanState.Disabled;
                    else
                        NewPlan.PlanState = (int)cGlobalParas.PlanState.Enabled;

                }
                else if (this.raDateTime.Checked == true)
                {
                    if (DateTime.Compare(DateTime.Now, this.DisabledDateTime.Value) < 0)
                        NewPlan.PlanState = (int)cGlobalParas.PlanState.Disabled;
                    else
                        NewPlan.PlanState = (int)cGlobalParas.PlanState.Enabled;
                }
            }
            else
            {
                NewPlan.PlanState = (int)cGlobalParas.PlanState.Enabled;
            }

            if (this.cboxIsRun.Checked == true)
                NewPlan.IsOverRun = true;
            else
                NewPlan.IsOverRun = false;

            if (this.cboxIsDisabled.Checked ==true )
                NewPlan.IsDisabled =true ;
            else
                NewPlan .IsDisabled =false ;

            if (this.raNumber.Checked ==true )
                NewPlan.DisabledType =(int) cGlobalParas.PlanDisabledType.RunTime ;
            else if (this.raDateTime .Checked ==true )
                NewPlan.DisabledType =(int) cGlobalParas.PlanDisabledType .RunDateTime ;

            NewPlan.DisabledTime =int.Parse (this.DisabledRunNum .Value.ToString () );
            NewPlan.DisabledDateTime = this.DisabledDateTime.Value;

            cTaskPlan tp;
            for (int i = 0; i < this.listTask.Items.Count; i++)
            {
                tp = new cTaskPlan();
                tp.RunTaskType = cGlobalParas.ConvertID(this.listTask.Items[i].Text);

                if (cGlobalParas.ConvertID(this.listTask.Items[i].Text)==(int)cGlobalParas.RunTaskType.DataTask )
                    tp.RunTaskName = cGlobalParas.ConvertID ( this.listTask.Items[i].SubItems[1].Text.ToString()).ToString ();
                else
                    tp.RunTaskName =this.listTask.Items[i].SubItems[1].Text.ToString();

                tp.RunTaskPara = this.listTask.Items[i].SubItems[2].Text.ToString();

                NewPlan.RunTasks.Add(tp);
            }

            if (this.raOneTime.Checked == true)
                NewPlan.RunTaskPlanType = (int) cGlobalParas.RunTaskPlanType.Ones;
            else if (this.raDay.Checked == true)
            {
                if (this.raRunones.Checked == true)
                    NewPlan.RunTaskPlanType = (int)cGlobalParas.RunTaskPlanType.DayOnes;
                else if (this.raRuntwice.Checked == true)
                    NewPlan.RunTaskPlanType = (int)cGlobalParas.RunTaskPlanType.DayTwice;
            }
            else if (this.raWeekly.Checked == true)
            {
                NewPlan.RunTaskPlanType = (int)cGlobalParas.RunTaskPlanType.Weekly;
            }
            else if (this.raCustom.Checked == true)
            {
                NewPlan.RunTaskPlanType = (int)cGlobalParas.RunTaskPlanType.Custom;
            }

            NewPlan.EnabledDateTime = this.EnabledDate.Value.ToLongDateString ();
            NewPlan.RunOnesTime = this.RunOnceTime.Value.ToString () ;
            NewPlan.RunDayTime = this.RunDayOnesTime.Value.ToLongTimeString();
            NewPlan.RunAMTime = this.RunDayTwice1Time.Value.ToLongTimeString();
            NewPlan.RunPMTime = this.RunDayTwice2Time.Value.ToLongTimeString();
            NewPlan.RunWeeklyTime = this.RunWeeklyTime.Value.ToLongTimeString();
            NewPlan.FirstRunTime = this.FirstRunTime.Value.ToLongTimeString();
            NewPlan.RunInterval = this.udRunInterval.Value.ToString();

            string runWeekly = "";

            if (this.cboxSunday.Checked ==true )
                runWeekly ="0";
            if (this.cboxMonday.Checked == true)
                runWeekly += ",1";
            if (this.cboxTuesday.Checked == true)
                runWeekly += ",2";
            if (this.cboxWednesday.Checked == true)
                runWeekly += ",3";
            if (this.cboxThursday.Checked == true)
                runWeekly += ",4";
            if (this.cboxFriday.Checked == true)
                runWeekly += ",5";
            if (this.cboxSturday.Checked == true)
                runWeekly += ",6";

            NewPlan.RunWeekly = runWeekly;

            cPlans p = new cPlans();

            if (this.FormState == cGlobalParas.FormState.New )
            {
                p.InsertPlan(NewPlan);
            }
            else if (this.FormState == cGlobalParas.FormState.Edit)
            {
                p.EditPlan(NewPlan);
            }

            p = null;

            return Nid;
        }
        public void AddTask(cTaskPlan task)
        {
            m_runningTasks.Enqueue(task);

            RunTask();
        }
        //�������ⲿ����
        //�����Ҫִ�е����������Ҫִ�У��������
        //ѹ��ִ�е����������
        public void CheckPlan()
        {
            //���¼��ؼƻ��ڼ��ֹ���мƻ�������
            if (m_IsReloading == false)
            {
                cTaskPlan tPlan;

                for (int i = 0; i < m_runTasks.Count; i++)
                {
                    //��Ч�ļƻ��������жϣ��ƻ���״̬��ִ��ʱ����ά��

                    if (m_runTasks[i].PlanState ==(int) cGlobalParas.PlanState.Enabled)
                    {
                        if (DateTime.Compare(DateTime.Now, DateTime.Parse(m_runTasks[i].EnabledDateTime)) < 0)
                        {
                            //��ʾ��δ����Чʱ�䣬�����ô�����ļ��
                            continue;
                        }

                        if (m_runTasks[i].PlanRunTime == "" || m_runTasks[i].PlanRunTime == null)
                        {
                            m_runTasks[i].PlanRunTime = m_runTasks[i].NextRunTime;
                        }
                        else
                        {
                            double douTime = TimeSpan.Parse(DateTime.Now.Subtract(DateTime.Parse(m_runTasks[i].PlanRunTime)).ToString()).TotalSeconds;

                            //��ʾ�´����е�ʱ���Ѿ����ˣ�����δ����5���ӣ��������5���ӣ���Ĭ��ϵͳû��ִ�д�����
                            //�Ƿ��ٴ�ִ�������ò���������IsOverRun
                            if (douTime > 0 && douTime < 300)
                            {
                                //������ѹ���������

                                for (int j = 0; j < m_runTasks[i].RunTasks.Count; j++)
                                {
                                    //�ڴ���Ҫ���³�ʼ��ִ����������ݣ���Ҫ��Ҫ���Ӽƻ���ID�ͼƻ�������
                                    tPlan = new cTaskPlan();

                                    tPlan.PlanID = m_runTasks[i].PlanID.ToString();
                                    tPlan.PlanName = m_runTasks[i].PlanName;
                                    tPlan.RunTaskType = m_runTasks[i].RunTasks[j].RunTaskType;
                                    tPlan.RunTaskName = m_runTasks[i].RunTasks[j].RunTaskName;
                                    tPlan.RunTaskPara = m_runTasks[i].RunTasks[j].RunTaskPara;

                                    e_AddRunTaskEvent(this, new cAddRunTaskEventArgs(tPlan));
                                }

                                m_runTasks[i].PlanRunTime = m_runTasks[i].NextRunTime;

                            }
                        }
                    }
                }
            }
        }
        //���ؼƻ�,���ؼƻ���ʱ����Ҫ�Լƻ���״̬����ά��
        private void IniCheckPlan()
        {
            try
            {
                cXmlIO xmlConfig = new cXmlIO(Program.getPrjPath() + "tasks\\plan\\plan.xml");

                DataView d = xmlConfig.GetData("descendant::Plans");

                if (d == null)
                {
                    return;
                }

                cPlan p;

                for (int i = 0; i < d.Count; i++)
                {
                    p = new cPlan();

                    if (int.Parse(d[i].Row["PlanState"].ToString()) == (int)cGlobalParas.PlanState.Enabled)
                    {
                        p.PlanID = Int64.Parse(d[i].Row["ID"].ToString());
                        p.PlanName = d[i].Row["PlanName"].ToString();
                        p.PlanState = int.Parse(d[i].Row["PlanState"].ToString());
                        p.IsOverRun = d[i].Row["IsOverRun"].ToString() == "True" ? true : false;
                        p.IsDisabled = d[i].Row["IsDisabled"].ToString() == "True" ? true : false;
                        p.DisabledType = int.Parse(d[i].Row["DisabledType"].ToString());
                        p.DisabledTime = int.Parse(d[i].Row["DisabledTime"].ToString());
                        p.DisabledDateTime = DateTime.Parse(d[i].Row["DisabledDateTime"].ToString());
                        p.RunTaskPlanType = int.Parse(d[i].Row["RunTaskPlanType"].ToString());
                        p.EnabledDateTime = d[i].Row["EnabledDateTime"].ToString();
                        p.RunOnesTime = d[i].Row["RunOnesTime"].ToString();
                        p.RunDayTime = d[i].Row["RunDayTime"].ToString();
                        p.RunAMTime = d[i].Row["RunAMTime"].ToString();
                        p.RunPMTime = d[i].Row["RunPMTime"].ToString();
                        p.RunWeeklyTime = d[i].Row["RunWeeklyTime"].ToString();
                        p.RunWeekly = d[i].Row["RunWeekly"].ToString();
                        p.RunTimeCount = d[i].Row["RunTimeCount"].ToString();
                        p.FirstRunTime = d[i].Row["FirstRunTime"].ToString();
                        p.RunInterval = d[i].Row["RunInterval"].ToString();

                        cTaskPlan tp;
                        DataView t = d[i].CreateChildView("Plan_Tasks")[0].CreateChildView("Tasks_Task");

                        for (int j = 0; j < t.Count; j++)
                        {
                            tp = new cTaskPlan();
                            tp.RunTaskType = int.Parse(t[j].Row["RunTaskType"].ToString());
                            tp.RunTaskName = t[j].Row["RunTaskName"].ToString();
                            tp.RunTaskPara = t[j].Row["RunTaskPara"].ToString();
                            p.RunTasks.Add(tp);
                        }

                        m_runTasks.Add(p);
                    }
                }

                p = null;

                xmlConfig = null;

                //�Զ�ά���ƻ�״̬
                AutoState();
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }
        //�����������ִ���¼�
        private void TriggerRun()
        {
            //����ʧ�ܻ��dzɹ���Ҫ���д������Ĵ���
            if (m_pTaskData.IsTrigger == true && m_pTaskData.TriggerType == ((int)cGlobalParas.TriggerType.PublishedRun).ToString())
            {
                cRunTask rt = new cRunTask();
                rt.RunSoukeyTaskEvent += this.onRunSoukeyTask;

                cTaskPlan p;

                for (int i = 0; i < m_pTaskData.TriggerTask.Count; i++)
                {
                    p = new cTaskPlan();

                    p.RunTaskType = m_pTaskData.TriggerTask[i].RunTaskType;
                    p.RunTaskName = m_pTaskData.TriggerTask[i].RunTaskName;
                    p.RunTaskPara = m_pTaskData.TriggerTask[i].RunTaskPara;

                    rt.AddTask(p);
                }

                rt.RunSoukeyTaskEvent -= this.onRunSoukeyTask;
                rt = null;

            }
        }