Beispiel #1
0
        private async Task <bool> DeleteCronJob(CronObject job)
        {
            if (!CronJobs.ContainsKey(job.JobName))
            {
                return(false);
            }
            await Schedular.PauseJob(job.CronJob.Key);

            await Schedular.DeleteJob(job.CronJob.Key);

            CronJobs.Remove(job.JobName);
            return(true);
        }
Beispiel #2
0
 private void Cron_OnCronTrigger(CronObject cronObject)
 {
     if (cronObject == null)
     {
         return;
     }
     // ReSharper disable once AssignNullToNotNullAttribute
     try
     {
         var cronObjectHelper = (CronObjectHelper)cronObject.Object;
         var task             = Activator.CreateInstance(cronObjectHelper.TaskType) as TaskBase;
         task?.ExecuteTask(cronObjectHelper.GroupName,
                           (bool)_serviceSettings.GetPropertyValue(ServiceSettings.GetSettingNameReport(task, cronObjectHelper.GroupName)),
                           (int)_serviceSettings.GetPropertyValue(ServiceSettings.GetSettingNameSendReportInterval(task, cronObjectHelper.GroupName)) * 60,
                           (System.Diagnostics.EventLogEntryType)_serviceSettings.GetPropertyValue(ServiceSettings.GetSettingNameReportInformationLevel(task, cronObjectHelper.GroupName)),
                           (uint)_serviceSettings.GetPropertyValue(ServiceSettings.GetSettingNameMaxErrorCount(task, cronObjectHelper.GroupName)));
     }
     catch (Exception e) { _serviceLogger.CreateLogRecord(e); }
 }
Beispiel #3
0
 private static void OnCronTrigger(CronObject cronobject)
 {
     using (var workspace = WorkspaceFactory.Create())
     {
         var trigger = workspace.Single <Trigger>(x => x.Id == ((Trigger)cronobject.Object).Id);
         if (trigger != null)
         {
             trigger.LastTrigger = DateTime.Now;
             workspace.CommitChanges();
             if (AppServices.ActiveAppScreen != AppScreens.Dashboard)
             {
                 RuleExecutor.NotifyEvent(RuleEventNames.TriggerExecuted, new { TriggerName = trigger.Name });
             }
         }
         else
         {
             cronobject.Stop();
         }
     }
 }
Beispiel #4
0
        public void UpdateCronObjects()
        {
            CloseTriggers();

            var triggers = Dao.Query <Trigger>();

            foreach (var trigger in triggers)
            {
                var dataContext = new CronObjectDataContext(new List <CronSchedule> {
                    CronSchedule.Parse(trigger.Expression)
                })
                {
                    Object      = trigger,
                    LastTrigger = trigger.LastTrigger
                };

                var cronObject = new CronObject(dataContext);
                cronObject.OnCronTrigger += OnCronTrigger;
                _cronObjects.Add(cronObject);
            }
            _cronObjects.ForEach(x => x.Start());
        }
Beispiel #5
0
        private CronObject CreateCronObject(Type newTaskType, string groupName, string cronExpression)
        {
            var cronSchedule  = CronSchedule.Parse(cronExpression);
            var cronSchedules = new List <CronSchedule> {
                cronSchedule
            };

            var dc = new CronObjectDataContext
            {
                Object = new CronObjectHelper()
                {
                    TaskType = newTaskType, GroupName = groupName
                },
                CronSchedules = cronSchedules,
                LastTrigger   = DateTime.Now
            };

            var cron = new CronObject(dc);

            cron.OnCronTrigger += Cron_OnCronTrigger;
            cron.OnThreadAbort += Cron_OnThreadAbort;
            return(cron);
        }
Beispiel #6
0
 private static void Cron_OnCronTrigger(CronObject cronObject)
 {
     SendRequest();
 }
Beispiel #7
0
        public static void StartServer()
        {
            try
            {
                // Startting HTTP server
                HttpServer = new PortalHttpServer(ServerPort);
                MainThread = new Thread(HttpServer.Listen);
                MainThread.Start();
                // Starting Cron Job
                var now = DateTime.Now;
                var cronSchedule = CronSchedule.Parse("* * * * *");
                var cronSchedules = new List<CronSchedule> { cronSchedule };
                var dc = new CronObjectDataContext
                {
                    Object = DateTime.Now,
                    CronSchedules = cronSchedules,
                    LastTrigger = now
                };
                Cron = new CronObject(dc);
                Cron.OnCronTrigger += Cron_OnCronTrigger;
                Cron.Start();
                // Set button text
                SetTextBtn(@"Stop");
                SetColorDisplay(Color.Aquamarine);

                WriteDisplay("Server Started on port: " + ServerPort);
            }
            catch (Exception)
            {
                WriteDisplay("Unable to start server");
                SetColorDisplay(Color.Tomato);
            }
        }
Beispiel #8
0
        private async Task <bool> ScheduleCronJob(CronObject message)
        {
            await Schedular.ScheduleJob(message.CronJob, message.CronTrigger);

            return(true);
        }
Beispiel #9
0
 private void Cron_OnThreadAbort(CronObject cronObject)
 {
     _serviceLogger.CreateLogRecord($"Thread aboreted. Task type {cronObject.Object}", System.Diagnostics.EventLogEntryType.Warning);
 }