Exemplo n.º 1
0
    protected void GV_List_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        //停止
        if (e.CommandName.Equals("StopTrigger"))
        {
            int          id           = int.Parse(e.CommandArgument.ToString());
            BatchTrigger batchTrigger = TheBatchTriggerMgr.LoadBatchTrigger(id);
            batchTrigger.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_PAUSE;
            TheBatchTriggerMgr.UpdateBatchTrigger(batchTrigger);
            ShowSuccessMessage("MasterData.Jobs.Trigger.StopSuccessfully", batchTrigger.BatchJobDetail.Name);
            this.DataBind();
        }
        //启动
        if (e.CommandName.Equals("StartTrigger"))
        {
            int          id           = int.Parse(e.CommandArgument.ToString());
            BatchTrigger batchTrigger = TheBatchTriggerMgr.LoadBatchTrigger(id);
            batchTrigger.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_INPROCESS;
            //int minuteOdd = DateTime.Now.Minute % batchTrigger.Interval;
            //string newDate = DateTime.Now.AddMinutes(batchTrigger.Interval - minuteOdd).ToString("yyyy-MM-dd hh:mm");
            //batchTrigger.NextFireTime = DateTime.Parse(newDate);

            TheBatchTriggerMgr.UpdateBatchTrigger(batchTrigger);
            ShowSuccessMessage("MasterData.Jobs.Trigger.StartSuccessfully", batchTrigger.BatchJobDetail.Name);
            this.DataBind();
        }
        //查看日志
        if (e.CommandName.Equals("ViewLog"))
        {
            int id = int.Parse(e.CommandArgument.ToString());
            this.ucLog.Visible = true;
            this.ucLog.InitPageParameter(id);
        }
    }
Exemplo n.º 2
0
 public JobRunContext(BatchTrigger trigger, BatchJobDetail jobDetail, JobDataMap jobDataMap, IWindsorContainer container)
 {
     this.trigger = trigger;
     this.jobDetail = jobDetail;
     this.jobDataMap = jobDataMap;
     this.container = container;
 }
Exemplo n.º 3
0
 public JobRunContext(BatchTrigger trigger, BatchJobDetail jobDetail, JobDataMap jobDataMap, IWindsorContainer container)
 {
     this.trigger    = trigger;
     this.jobDetail  = jobDetail;
     this.jobDataMap = jobDataMap;
     this.container  = container;
 }
Exemplo n.º 4
0
    public void InitPageParameter(int triggerId)
    {
        this.TriggerId = triggerId;
        BatchTrigger batchTrigger = TheBatchTriggerMgr.LoadBatchTrigger(triggerId);

        this.lbJobName.Text        = batchTrigger.BatchJobDetail.Name;
        this.lbJobDescription.Text = batchTrigger.BatchJobDetail.Description;
        this.tbStartDate.Text      = DateTime.Now.ToString("yyyy-MM-dd");
        this.tbEndDate.Text        = DateTime.Now.ToString("yyyy-MM-dd");
        DoSearch();
    }
Exemplo n.º 5
0
    protected void GV_BatchTrigger_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridViewRow  row          = this.GV_List.Rows[e.NewEditIndex];
        HiddenField  hfId         = (HiddenField)row.FindControl("hfId");
        BatchTrigger batchTrigger = TheBatchTriggerMgr.LoadBatchTrigger(int.Parse(hfId.Value));

        if (batchTrigger.Status == BusinessConstants.CODE_MASTER_STATUS_VALUE_INPROCESS)
        {
            ShowErrorMessage("MasterData.Jobs.Trigger.StopFirst");
            e.Cancel = true;
        }
    }
Exemplo n.º 6
0
    private void DataBind()
    {
        BatchTrigger batchTrigger = TheBatchTriggerMgr.LoadLeanEngineTrigger();

        if (batchTrigger != null)
        {
            this.tbPrevFireTime.Text   = batchTrigger.PreviousFireTime.HasValue ? batchTrigger.PreviousFireTime.Value.ToString("yyyy-MM-dd HH:mm") : string.Empty;
            this.tbNextFireTime.Text   = batchTrigger.NextFireTime.HasValue ? batchTrigger.NextFireTime.Value.ToString("yyyy-MM-dd HH:mm") : string.Empty;
            this.tbInterval.Text       = batchTrigger.Interval.ToString();
            this.lblIntervalType.Value = batchTrigger.IntervalType;
        }
    }
Exemplo n.º 7
0
 protected void GV_BatchTrigger_RowCreated(object sender, GridViewRowEventArgs e)
 {
     if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
     {
         com.Sconit.Control.CodeMstrDropDownList ddlIntervalType = (com.Sconit.Control.CodeMstrDropDownList)e.Row.FindControl("ddlIntervalType");
         if (e.Row.DataItem != null)
         {
             BatchTrigger batchTrigger = (BatchTrigger)e.Row.DataItem;
             ddlIntervalType.DataBind();
             ddlIntervalType.DefaultSelectedValue = batchTrigger.IntervalType;
         }
     }
 }
Exemplo n.º 8
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         BatchTrigger batchTrigger = TheBatchTriggerMgr.LoadLeanEngineTrigger();
         if (batchTrigger != null)
         {
             bool isPause = (batchTrigger.Status == BusinessConstants.CODE_MASTER_STATUS_VALUE_PAUSE);
             if (!isPause)
             {
                 StartEvent(sender, null);
             }
             this.InitialUI(!isPause);
         }
     }
 }
Exemplo n.º 9
0
 private void StartStopService(bool enable)
 {
     try
     {
         BatchTrigger batchTrigger = TheBatchTriggerMgr.LoadLeanEngineTrigger();
         if (batchTrigger != null)
         {
             batchTrigger.Status = enable ? BusinessConstants.CODE_MASTER_STATUS_VALUE_INPROCESS : BusinessConstants.CODE_MASTER_STATUS_VALUE_PAUSE;
             TheBatchTriggerMgr.UpdateBatchTrigger(batchTrigger);
             ShowSuccessMessage("MasterData.Jobs.Trigger.StopSuccessfully", batchTrigger.BatchJobDetail.Name);
         }
     }
     catch (BusinessErrorException ex)
     {
         ShowErrorMessage(ex);
     }
 }
Exemplo n.º 10
0
    protected void ODS_GV_BatchTrigger_OnUpdating(object source, ObjectDataSourceMethodEventArgs e)
    {
        BatchTrigger batchTrigger = (BatchTrigger)e.InputParameters[0];
        BatchTrigger oldTrigger   = TheBatchTriggerMgr.LoadBatchTrigger(batchTrigger.Id);

        batchTrigger.BatchJobDetail = oldTrigger.BatchJobDetail;
        batchTrigger.Name           = oldTrigger.Name;
        batchTrigger.Description    = oldTrigger.Description;

        GridViewRow row = this.GV_List.Rows[this.CurrentIndex];

        com.Sconit.Control.CodeMstrDropDownList ddlIntervalType = (com.Sconit.Control.CodeMstrDropDownList)row.FindControl("ddlIntervalType");
        if (ddlIntervalType.SelectedIndex != -1)
        {
            batchTrigger.IntervalType = ddlIntervalType.SelectedValue;
        }
        CurrentJob = oldTrigger.BatchJobDetail.Name;
    }
Exemplo n.º 11
0
    protected void GV_List_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            BatchTrigger batchTrigger = (BatchTrigger)e.Row.DataItem;
            // ((Label)e.Row.FindControl("lblName")).Text = batchTrigger.BatchJobDetail.Name;
            // ((Label)e.Row.FindControl("lblDescription")).Text = batchTrigger.BatchJobDetail.Description;

            if (batchTrigger.Status == BusinessConstants.CODE_MASTER_STATUS_VALUE_PAUSE)
            {
                e.Row.FindControl("lbtnStop").Visible  = false;
                e.Row.FindControl("lbtnStart").Visible = true;
            }
            if (batchTrigger.Status == BusinessConstants.CODE_MASTER_STATUS_VALUE_INPROCESS)
            {
                e.Row.FindControl("lbtnStop").Visible  = true;
                e.Row.FindControl("lbtnStart").Visible = false;
            }
        }
    }
Exemplo n.º 12
0
        private void Run(IWindsorContainer container, bool isLeanEngine, bool isReceiveWO)
        {
            if (isLeanEngine)
            {
                lelog.Info("----------------------------------Invincible's dividing line---------------------------------------");
                lelog.Info("BatchJobs run start.");
            }
            else if (isReceiveWO)
            {
                rwolog.Info("----------------------------------Invincible's dividing line---------------------------------------");
                rwolog.Info("BatchJobs run start.");
            }
            else
            {
                log.Info("----------------------------------Invincible's dividing line---------------------------------------");
                log.Info("BatchJobs run start.");
            }

            IList <BatchTrigger> tobeFiredTriggerList = this.batchTriggerMgr.GetTobeFiredTrigger();

            if (tobeFiredTriggerList != null && tobeFiredTriggerList.Count > 0)
            {
                foreach (BatchTrigger tobeFiredTrigger in tobeFiredTriggerList)
                {
                    bool isSuccess = true;
                    if (isLeanEngine && tobeFiredTrigger.Id != 2 && tobeFiredTrigger.Id != 23 && tobeFiredTrigger.Id != 51 && tobeFiredTrigger.Id != 54 && tobeFiredTrigger.Id != 55 && tobeFiredTrigger.Id != 56 && tobeFiredTrigger.Id != 7)
                    {
                        continue;
                    }

                    if (isReceiveWO && tobeFiredTrigger.Id != 57 && tobeFiredTrigger.Id != 50)
                    {
                        continue;
                    }

                    if (!isLeanEngine && !isReceiveWO && tobeFiredTrigger.Id != 8 && tobeFiredTrigger.Id != 16 && tobeFiredTrigger.Id != 20)
                    {
                        continue;
                    }

                    BatchJobDetail jobDetail = tobeFiredTrigger.BatchJobDetail;
                    BatchRunLog    runLog    = new BatchRunLog();
                    try
                    {
                        #region Job运行前处理
                        if (isLeanEngine)
                        {
                            lelog.Info("Start run job. JobId:" + jobDetail.Id + ", JobName:" + jobDetail.Name);
                        }
                        else if (isReceiveWO)
                        {
                            rwolog.Info("Start run job. JobId:" + jobDetail.Id + ", JobName:" + jobDetail.Name);
                        }
                        else
                        {
                            log.Info("Start run job. JobId:" + jobDetail.Id + ", JobName:" + jobDetail.Name);
                        }
                        runLog.BatchJobDetail = jobDetail;
                        runLog.BatchTrigger   = tobeFiredTrigger;
                        runLog.StartTime      = DateTime.Now;
                        runLog.Status         = "InProcess";
                        this.batchRunLogMgr.CreateBatchRunLog(runLog);
                        #endregion

                        #region 运行Job

                        JobDataMap dataMap = new JobDataMap();
                        #region Job参数获取
                        IList <BatchJobParameter> batchJobParameterList = this.batchJobParameterMgr.GetBatchJobParameter(jobDetail.Id);
                        if (batchJobParameterList != null && batchJobParameterList.Count > 0)
                        {
                            foreach (BatchJobParameter batchJobParameter in batchJobParameterList)
                            {
                                if (isLeanEngine)
                                {
                                    lelog.Debug("Set Job Parameter Name:" + batchJobParameter.ParameterName + ", Value:" + batchJobParameter.ParameterValue);
                                }
                                else if (isReceiveWO)
                                {
                                    rwolog.Debug("Set Job Parameter Name:" + batchJobParameter.ParameterName + ", Value:" + batchJobParameter.ParameterValue);
                                }
                                else
                                {
                                    log.Debug("Set Job Parameter Name:" + batchJobParameter.ParameterName + ", Value:" + batchJobParameter.ParameterValue);
                                }
                                dataMap.PutData(batchJobParameter.ParameterName, batchJobParameter.ParameterValue);
                            }
                        }
                        #endregion

                        #region Trigger参数获取
                        IList <BatchTriggerParameter> batchTriggerParameterList = this.batchTriggerParameterMgr.GetBatchTriggerParameter(tobeFiredTrigger.Id);
                        if (batchTriggerParameterList != null && batchTriggerParameterList.Count > 0)
                        {
                            foreach (BatchTriggerParameter batchTriggerParameter in batchTriggerParameterList)
                            {
                                if (isLeanEngine)
                                {
                                    lelog.Debug("Set Trigger Parameter Name:" + batchTriggerParameter.ParameterName + ", Value:" + batchTriggerParameter.ParameterValue);
                                }
                                else if (isReceiveWO)
                                {
                                    rwolog.Debug("Set Trigger Parameter Name:" + batchTriggerParameter.ParameterName + ", Value:" + batchTriggerParameter.ParameterValue);
                                }
                                else
                                {
                                    log.Debug("Set Trigger Parameter Name:" + batchTriggerParameter.ParameterName + ", Value:" + batchTriggerParameter.ParameterValue);
                                }
                                dataMap.PutData(batchTriggerParameter.ParameterName, batchTriggerParameter.ParameterValue);
                            }
                        }
                        #endregion

                        #region 初始化JobRunContext
                        JobRunContext jobRunContext = new JobRunContext(tobeFiredTrigger, jobDetail, dataMap, container);
                        #endregion

                        #region 调用Job



                        IJob job = container.Resolve <IJob>(jobDetail.ServiceName);
                        if (isLeanEngine)
                        {
                            lelog.Debug("Start run job: " + jobDetail.ServiceName);
                        }
                        else if (isReceiveWO)
                        {
                            rwolog.Debug("Start run job: " + jobDetail.ServiceName);
                        }
                        else
                        {
                            log.Debug("Start run job: " + jobDetail.ServiceName);
                        }
                        job.Execute(jobRunContext);
                        #endregion

                        #endregion

                        #region Job运行后处理
                        if (isLeanEngine)
                        {
                            lelog.Info("Job run successful. JobId:" + jobDetail.Id + ", JobName:" + jobDetail.Name);
                        }
                        else if (isReceiveWO)
                        {
                            rwolog.Info("Job run successful. JobId:" + jobDetail.Id + ", JobName:" + jobDetail.Name);
                        }
                        else
                        {
                            log.Info("Job run successful. JobId:" + jobDetail.Id + ", JobName:" + jobDetail.Name);
                        }
                        runLog.EndTime = DateTime.Now;
                        runLog.Status  = "Successful";
                        this.batchRunLogMgr.UpdateBatchRunLog(runLog);
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        try
                        {
                            this.batchTriggerMgr.CleanSession();
                            isSuccess = false;
                            if (isLeanEngine)
                            {
                                lelog.Error("Job run failure. JobId:" + jobDetail.Id + ", JobName:" + jobDetail.Name, ex);
                            }
                            else if (isReceiveWO)
                            {
                                rwolog.Error("Job run failure. JobId:" + jobDetail.Id + ", JobName:" + jobDetail.Name, ex);
                            }
                            else
                            {
                                log.Error("Job run failure. JobId:" + jobDetail.Id + ", JobName:" + jobDetail.Name, ex);
                            }
                            runLog.EndTime = DateTime.Now;
                            runLog.Status  = "Failure";
                            if (ex.Message != null && ex.Message.Length > 255)
                            {
                                runLog.Message = ex.Message.Substring(0, 255);
                            }
                            else
                            {
                                runLog.Message = ex.Message;
                            }
                            this.batchRunLogMgr.UpdateBatchRunLog(runLog);
                        }
                        catch (Exception ex1)
                        {
                            if (isLeanEngine)
                            {
                                lelog.Error("", ex1);
                            }
                            else if (isReceiveWO)
                            {
                                rwolog.Error("", ex1);
                            }
                            else
                            {
                                log.Error("", ex1);
                            }
                        }
                    }
                    finally
                    {
                        #region 更新BatchTrigger
                        try
                        {
                            BatchTrigger oldTobeFiredTrigger = this.batchTriggerMgr.LoadBatchTrigger(tobeFiredTrigger.Id);
                            oldTobeFiredTrigger.TimesTriggered++;
                            oldTobeFiredTrigger.PreviousFireTime = oldTobeFiredTrigger.NextFireTime;
                            if (oldTobeFiredTrigger.RepeatCount != 0 && oldTobeFiredTrigger.TimesTriggered >= oldTobeFiredTrigger.RepeatCount)
                            {
                                //关闭Trigger
                                if (isLeanEngine)
                                {
                                    lelog.Debug("Close Trigger:" + oldTobeFiredTrigger.Name);
                                }
                                else if (isReceiveWO)
                                {
                                    rwolog.Debug("Close Trigger:" + oldTobeFiredTrigger.Name);
                                }
                                else
                                {
                                    log.Debug("Close Trigger:" + oldTobeFiredTrigger.Name);
                                }
                                oldTobeFiredTrigger.Status       = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE;
                                oldTobeFiredTrigger.NextFireTime = null;
                            }
                            else
                            {
                                if (isSuccess)
                                {
                                    //设置下次运行时间
                                    if (isLeanEngine)
                                    {
                                        lelog.Debug("Set Trigger Next Start Time, Add:" + oldTobeFiredTrigger.Interval.ToString() + " " + oldTobeFiredTrigger.IntervalType);
                                    }
                                    else if (isReceiveWO)
                                    {
                                        rwolog.Debug("Set Trigger Next Start Time, Add:" + oldTobeFiredTrigger.Interval.ToString() + " " + oldTobeFiredTrigger.IntervalType);
                                    }
                                    else
                                    {
                                        log.Debug("Set Trigger Next Start Time, Add:" + oldTobeFiredTrigger.Interval.ToString() + " " + oldTobeFiredTrigger.IntervalType);
                                    }
                                    DateTime dateTimeNow = DateTime.Now;
                                    if (!oldTobeFiredTrigger.NextFireTime.HasValue)
                                    {
                                        oldTobeFiredTrigger.NextFireTime = dateTimeNow;
                                    }

                                    while (oldTobeFiredTrigger.NextFireTime.Value <= dateTimeNow)
                                    {
                                        if (oldTobeFiredTrigger.IntervalType == BusinessConstants.DATETIME_TYPE_YEAR)
                                        {
                                            oldTobeFiredTrigger.NextFireTime = oldTobeFiredTrigger.NextFireTime.Value.AddYears(oldTobeFiredTrigger.Interval);
                                        }
                                        else if (oldTobeFiredTrigger.IntervalType == BusinessConstants.DATETIME_TYPE_MONTH)
                                        {
                                            oldTobeFiredTrigger.NextFireTime = oldTobeFiredTrigger.NextFireTime.Value.AddMonths(oldTobeFiredTrigger.Interval);
                                        }
                                        else if (oldTobeFiredTrigger.IntervalType == BusinessConstants.DATETIME_TYPE_DAY)
                                        {
                                            oldTobeFiredTrigger.NextFireTime = oldTobeFiredTrigger.NextFireTime.Value.AddDays(oldTobeFiredTrigger.Interval);
                                        }
                                        else if (oldTobeFiredTrigger.IntervalType == BusinessConstants.DATETIME_TYPE_HOUR)
                                        {
                                            oldTobeFiredTrigger.NextFireTime = oldTobeFiredTrigger.NextFireTime.Value.AddHours(oldTobeFiredTrigger.Interval);
                                        }
                                        else if (oldTobeFiredTrigger.IntervalType == BusinessConstants.DATETIME_TYPE_MINUTE)
                                        {
                                            oldTobeFiredTrigger.NextFireTime = oldTobeFiredTrigger.NextFireTime.Value.AddMinutes(oldTobeFiredTrigger.Interval);
                                        }
                                        else if (oldTobeFiredTrigger.IntervalType == BusinessConstants.DATETIME_TYPE_SECOND)
                                        {
                                            oldTobeFiredTrigger.NextFireTime = oldTobeFiredTrigger.NextFireTime.Value.AddSeconds(oldTobeFiredTrigger.Interval);
                                        }
                                        else if (oldTobeFiredTrigger.IntervalType == BusinessConstants.DATETIME_TYPE_MILLISECOND)
                                        {
                                            oldTobeFiredTrigger.NextFireTime = oldTobeFiredTrigger.NextFireTime.Value.AddMilliseconds(oldTobeFiredTrigger.Interval);
                                        }
                                        else
                                        {
                                            throw new ArgumentException("invalid Interval Type:" + oldTobeFiredTrigger.IntervalType);
                                        }
                                    }
                                    if (isLeanEngine)
                                    {
                                        lelog.Debug("Trigger Next Start Time is set as:" + oldTobeFiredTrigger.NextFireTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                                    }
                                    else if (isReceiveWO)
                                    {
                                        rwolog.Debug("Trigger Next Start Time is set as:" + oldTobeFiredTrigger.NextFireTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                                    }
                                    else
                                    {
                                        log.Debug("Trigger Next Start Time is set as:" + oldTobeFiredTrigger.NextFireTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                                    }
                                }
                            }
                            this.batchTriggerMgr.UpdateBatchTrigger(oldTobeFiredTrigger);
                        }
                        catch (Exception ex)
                        {
                            if (isLeanEngine)
                            {
                                lelog.Error("Error occur when update batch trigger.", ex);
                            }
                            else if (isReceiveWO)
                            {
                                rwolog.Error("Error occur when update batch trigger.", ex);
                            }
                            else
                            {
                                log.Error("Error occur when update batch trigger.", ex);
                            }
                        }
                        #endregion
                    }
                }
            }
            else
            {
                if (isLeanEngine)
                {
                    lelog.Info("No job found may run in this batch.");
                }
                else if (isReceiveWO)
                {
                    rwolog.Info("No job found may run in this batch.");
                }
                else
                {
                    log.Info("No job found may run in this batch.");
                }
            }

            if (isLeanEngine)
            {
                lelog.Info("BatchJobs run end.");
            }
            else if (isReceiveWO)
            {
                rwolog.Info("BatchJobs run end.");
            }
            else
            {
                log.Info("BatchJobs run end.");
            }
        }
 public virtual void DeleteBatchTrigger(BatchTrigger entity)
 {
     entityDao.DeleteBatchTrigger(entity);
 }
 public virtual void UpdateBatchTrigger(BatchTrigger entity)
 {
     entityDao.UpdateBatchTrigger(entity);
 }
 public virtual void UpdateBatchTrigger(BatchTrigger entity)
 {
     Update(entity);
 }
Exemplo n.º 16
0
 public virtual void DeleteBatchTrigger(BatchTrigger entity)
 {
     entityDao.DeleteBatchTrigger(entity);
 }
Exemplo n.º 17
0
 public virtual void CreateBatchTrigger(BatchTrigger entity)
 {
     entityDao.CreateBatchTrigger(entity);
 }
Exemplo n.º 18
0
 public virtual void UpdateBatchTrigger(BatchTrigger entity)
 {
     entityDao.UpdateBatchTrigger(entity);
 }
Exemplo n.º 19
0
 public virtual void CreateBatchTrigger(BatchTrigger entity)
 {
     Create(entity);
 }
Exemplo n.º 20
0
 public virtual void UpdateBatchTrigger(BatchTrigger entity)
 {
     Update(entity);
 }
Exemplo n.º 21
0
 public virtual void DeleteBatchTrigger(BatchTrigger entity)
 {
     Delete(entity);
 }
 public virtual void CreateBatchTrigger(BatchTrigger entity)
 {
     Create(entity);
 }
Exemplo n.º 23
0
 public void UpdateBatchTrigger(BatchTrigger entity)
 {
     BatchTriggerMgr.UpdateBatchTrigger(entity);
 }
 public virtual void DeleteBatchTrigger(BatchTrigger entity)
 {
     Delete(entity);
 }
 public virtual void CreateBatchTrigger(BatchTrigger entity)
 {
     entityDao.CreateBatchTrigger(entity);
 }