private ITrigger getTrigger(JobDataMap jobDataMap, string cronExpression) { return TriggerBuilder.Create() .WithCronSchedule(cronExpression, x => x.WithMisfireHandlingInstructionDoNothing()) .UsingJobData(jobDataMap) .Build(); }
public void ScheduleJob(RiverContext riverContext) { var jobData = new JobDataMap(); jobData.Put("riverContext", riverContext); IJobDetail job = JobBuilder.Create<RiverJob>() .WithIdentity(riverContext.Name) // name "myRiver", group "river" .SetJobData(jobData) .Build(); var triggerBuilder = TriggerBuilder.Create() .WithIdentity(riverContext.Name) .ForJob(riverContext.Name); //, "group1") if(!String.IsNullOrWhiteSpace(riverContext.Cron)) triggerBuilder.WithCronSchedule(riverContext.Cron); else triggerBuilder.StartNow(); var trigger = triggerBuilder.Build(); if (_scheduler.CheckExists(new JobKey(riverContext.Name))) _scheduler.DeleteJob(new JobKey(riverContext.Name)); _scheduler.ScheduleJob(job, trigger); }
public void StartSample() { // construct a scheduler factory ISchedulerFactory schedFact = new StdSchedulerFactory(); // get a scheduler IScheduler sched = schedFact.GetScheduler(); sched.Start(); // define the job and tie it to our HelloJob class JobDataMap newJobDataMap = new JobDataMap {{"myStateData", new List<DateTimeOffset>()}}; IJobDetail job = JobBuilder.Create<StateJob>() .WithIdentity("myJob", "group1") .SetJobData(newJobDataMap) .Build(); // Trigger the job to run now, and then every 5 seconds ITrigger trigger = TriggerBuilder.Create() .WithIdentity("myTrigger", "group1") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInSeconds(5) .RepeatForever()) .Build(); sched.ScheduleJob(job, trigger); }
public void Start() { Console.WriteLine("Starting scheduler..."); var scheduler = schedulerFactory.GetScheduler(); // define the job and ask it to run var map = new JobDataMap(); map.Put("msg", "Some message!"); var job = JobBuilder.Create<HelloJob>() .WithIdentity("localJob", "default") .UsingJobData(map).RequestRecovery(true).Build(); ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("remotelyAddedTrigger", "default") .WithCronSchedule("/5 * * ? * *") .StartAt(DateTimeOffset.UtcNow) .ForJob(job) .Build(); if (!scheduler.CheckExists(job.Key)) { scheduler.ScheduleJob(job, trigger); } scheduler.Start(); }
public void AddRepeatingJob(Type aType, string aName, string aGroup, int aSecondsToSleep, params JobItem[] aItems) { JobKey key = new JobKey(aName, aGroup); if (Scheduler.GetJobDetail(key) != null) { Log.Error("AddRepeatingJob(" + aType.Name + ", " + aName + ", " + aGroup + ") already exists"); return; } Log.Info("AddRepeatingJob(" + aType.Name + ", " + aName + ", " + aGroup + ", " + aSecondsToSleep + ")"); _scheduledJobs.Add(key); var data = new JobDataMap(); foreach (JobItem item in aItems) { data.Add(item.Key, item.Value); } IJobDetail job = JobBuilder.Create(aType) .WithIdentity(key) .UsingJobData(data) .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity(aName, aGroup) .WithSimpleSchedule(x => x.WithIntervalInSeconds(aSecondsToSleep).RepeatForever()) .Build(); Scheduler.ScheduleJob(job, trigger); }
void AcceptActionOnExecute(object sender, SimpleActionExecuteEventArgs simpleActionExecuteEventArgs) { var currentObject = simpleActionExecuteEventArgs.CurrentObject; var jobDataMap = new JobDataMap(); GetDataMapMemberInfos(TypesInfo.FindTypeInfo(currentObject.GetType())).Each(MapItsValue(jobDataMap, currentObject)); var jobDetail = ((IJobDetail)View.CurrentObject); jobDetail.JobDataMap = jobDataMap; }
public IJobDetail GetJob(string jobName, string groupName) { IScheduler sched = quartzInstance.GetQuartzScheduler(); JobDataMap jdm = new JobDataMap(); return sched.GetJobDetail(new JobKey(jobName, groupName)); }
/// <summary> /// Builds a Quartz Job for a specified <see cref="Rock.Model.ServiceJob">Job</see> /// </summary> /// <param name="job">The <see cref="Rock.Model.ServiceJob"/> to create a Quarts Job for.</param> /// <returns>A object that implements the <see cref="Quartz.IJobDetail"/> interface</returns> public IJobDetail BuildQuartzJob( ServiceJob job ) { // build the type object, will depend if the class is in an assembly or the App_Code folder Type type = null; if ( job.Assembly == string.Empty || job.Assembly == null ) { type = BuildManager.GetType( job.Class, false ); } else { string thetype = string.Format( "{0}, {1}", job.Class, job.Assembly ); type = Type.GetType( thetype ); } // load up job attributes (parameters) job.LoadAttributes(); JobDataMap map = new JobDataMap(); foreach ( KeyValuePair<string, List<Rock.Model.AttributeValue>> attrib in job.AttributeValues ) { map.Add( attrib.Key, attrib.Value[0].Value ); } // create the quartz job object IJobDetail jobDetail = JobBuilder.Create( type ) .WithDescription( job.Id.ToString() ) .WithIdentity( new Guid().ToString(), job.Name ) .UsingJobData( map ) .Build(); return jobDetail; }
protected override void InitScheduler(IScheduler scheduler) { // construct job info IJobDetail jobDetail = JobBuilder.Create<HelloJob>().WithIdentity("myJob").StoreDurably(true).Build(); // fire every minute for two occurances ITrigger trigger = TriggerBuilder.Create() .WithSimpleSchedule(s => s.WithIntervalInMinutes(1).WithRepeatCount(2)) .StartNow() .WithIdentity("myTrigger") .Build(); scheduler.ScheduleJob(jobDetail, trigger); // construct job info IJobDetail jobDetail2 = JobBuilder.Create<HelloJob>().WithIdentity("myJob2").Build(); // fire every hour ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity("myTrigger2") .WithSimpleSchedule(s => s.WithIntervalInMinutes(1).WithRepeatCount(2)) .StartNow() .Build(); scheduler.ScheduleJob(jobDetail2, trigger2); ITrigger trigger3 = TriggerBuilder.Create() .WithIdentity("myTrigger3") .WithSimpleSchedule(s => s.WithIntervalInMinutes(5).WithRepeatCount(5)) .ForJob("myJob2") .StartNow() .Build(); scheduler.ScheduleJob(trigger3); // construct job info JobDataMap jobDataMap = new JobDataMap { {"key1", "value1"}, {"key2", "value2"}, {"key3", 1l}, {"key4", 1d} }; IJobDetail jobDetail4 = JobBuilder.Create<HelloJob>() .WithIdentity("myJob4", "MyOwnGroup") .UsingJobData(jobDataMap) .Build(); // fire every hour ITrigger trigger4 = TriggerBuilder.Create() .WithIdentity("myTrigger4", jobDetail4.Key.Group) .WithSimpleSchedule(s => s.WithIntervalInMinutes(1).WithRepeatCount(1)) .StartNow() .Build(); scheduler.ScheduleJob(jobDetail4, trigger4); scheduler.PauseJob(jobDetail4.Key); scheduler.PauseTrigger(trigger3.Key); scheduler.Start(); }
private JobDataMap BuildDailyJobDataMap() { JobDataMap JobDataMap = new JobDataMap(); JobDataMap.Add("DailySample", (bool)chkWIPSample.EditValue); JobDataMap.Add("DailyQC", (bool)chkWIPQC.EditValue); JobDataMap.Add("DailySubcon", (bool)chkWIPSubcon.EditValue); return JobDataMap; }
public static ScheduledTaskStatus ScheduleNow(int UserFlagId) { var taskData = new JobDataMap() { { "UserFlagId", UserFlagId } }; var instance = new UserFlagDeleteTask(); return instance.ScheduleTask(taskData); }
public static ScheduledTaskStatus ScheduleNow(int JobQueueId) { JobDataMap taskData = new JobDataMap() { { "JobQueueId", JobQueueId } }; var instance = new JobQueueDeleteTask(); return instance.ScheduleTask(taskData); }
public void Update(JobDataMap map, bool isReadonly = true) { this.DataMap = map; this.KVS = new BindableCollection<KeyValuePair<string, object>>(map.Cast<KeyValuePair<string, object>>()); this.IsReadonly = isReadonly; this.NotifyOfPropertyChange(() => this.KVS); this.NotifyOfPropertyChange(() => this.IsReadonly); }
public override void SetObjectProperties(object obj, JobDataMap data) { base.SetObjectProperties(obj, data); if (obj is SendMessageJob) { (obj as SendMessageJob).Bus = _bus; } }
private JobDataMap getJobData() { _logger.Info("Preparing Advantic Measure Loader Job Data"); JobDataMap result = new JobDataMap(); result.Put("ConfigurationProvider", _configProvider); result.Put("AdvanticMeasureService", _advanticMeasureService); result.Put("AdvanticSignalService", _advanticSignalService); _logger.Info("Done preparing Advantic Measure Loader Job Data"); return result; }
/// <summary> /// Schedules the Task to Begin based on the Trigger including the DataMap /// </summary> /// <param name="Trigger">Trigger for the Task</param> /// <param name="DataMap">DataMap passed into the executing Task</param> /// <returns></returns> protected ScheduledTaskStatus ScheduleTask(TriggerBuilder Trigger, JobDataMap DataMap) { if (Trigger == null) Trigger = TriggerBuilder.Create(); // Defaults to Start Immediately if (DataMap != null) Trigger = Trigger.UsingJobData(DataMap); return ScheduledTasks.RegisterTask(this, Trigger); }
static void Main(string[] args) { Console.WriteLine("Starting scheduler..."); var properties = new NameValueCollection(); properties["quartz.scheduler.instanceName"] = "RemoteServerTestScheduler"; // set thread pool infoD:\Projects\QuartzMaster\QuartzMaster.TestServerHost\Program.cs properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz"; properties["quartz.threadPool.threadCount"] = "5"; properties["quartz.threadPool.threadPriority"] = "Normal"; // set remoting expoter properties["quartz.scheduler.exporter.type"] = "Quartz.Simpl.RemotingSchedulerExporter, Quartz"; properties["quartz.scheduler.exporter.port"] = "500"; properties["quartz.scheduler.exporter.bindName"] = "QuartzScheduler"; properties["quartz.scheduler.exporter.channelType"] = "tcp"; var schedulerFactory = new StdSchedulerFactory(properties); scheduler = schedulerFactory.GetScheduler(); // define the job and ask it to run var map = new JobDataMap(); map.Put("msg", "Some message!"); map.Put("msg 2", "Some message 2!"); map.Put("msg 3", "Some message 3!"); var job = new JobDetail("localJob", "default", typeof(NoOpJob)) { JobDataMap = map }; var job2 = new JobDetail("localJob 2", "default", typeof(NoOpJob)) { JobDataMap = map }; var trigger2 = new SimpleTrigger("Simple Trigger", "default", "localJob 2", "default", DateTime.Now, DateTime.Now.AddMinutes(10), SimpleTrigger.RepeatIndefinitely, new TimeSpan(0, 0, 45)); var trigger = new CronTrigger("remotelyAddedTrigger", "default", "localJob", "default", DateTime.UtcNow, null, "/5 * * ? * *"); var trigger3 = new SimpleTrigger("remotelyAddedTriggerB", "default", "localJob", "default", DateTime.Now, DateTime.Now.AddMinutes(10), SimpleTrigger.RepeatIndefinitely, new TimeSpan(0, 0, 45)); // schedule the job scheduler.ScheduleJob(job, trigger3); scheduler.ScheduleJob(job2, trigger2); scheduler.Start(); Console.WriteLine("Scheduler has been started."); Console.WriteLine("Press any key to stop scheduler"); Console.ReadKey(); scheduler.Shutdown(); }
public static ScheduledTaskStatus ScheduleSync(IEnumerable<ADManagedGroup> ManagedGroups) { if (ManagedGroups == null) throw new ArgumentNullException("ManagedGroups"); JobDataMap taskData = new JobDataMap() { {"ManagedGroups", ManagedGroups.ToList() } }; var instance = new ADManagedGroupsSyncTask(); return instance.ScheduleTask(taskData); }
public static ScheduledTaskStatus ScheduleSync(ADManagedGroup ManagedGroup) { if (ManagedGroup == null) throw new ArgumentNullException("ManagedGroup"); JobDataMap taskData = new JobDataMap() { {"ManagedGroups", new List<ADManagedGroup> { ManagedGroup } } }; var instance = new ADManagedGroupsSyncTask(); return instance.ScheduleTask(taskData); }
public static ScheduledTaskStatus ScheduleNow(DeviceImportContext Context) { if (Context == null) throw new ArgumentNullException("Context"); // Build Data Map var task = new DeviceImportApplyTask(); JobDataMap taskData = new JobDataMap() { { JobDataMapContext, Context } }; // Schedule Task return task.ScheduleTask(taskData); }
static void Main(string[] args) { log4net.GlobalContext.Properties["LogName"] = "TriggerFishDemo"; log4net.Config.XmlConfigurator.Configure(); Container.Install(new TriggerFishDemoServiceContainerInstaller()); var jobData = new JobDataMap(); jobData.Add("JobName", "Aquarium.TriggerFish"); jobData.Add("JobDescription", "TriggerFish Demo - run a job on a customized schedule"); TriggerFishSetupFactory.SetupService<FeedingTimeJob>(jobData, new FeedingTimeTriggers()); }
public static DeviceExportTaskContext ScheduleNow(DeviceExportOptions Options) { // Build Context var context = new DeviceExportTaskContext(Options); // Build Data Map var task = new DeviceExportTask(); JobDataMap taskData = new JobDataMap() { { JobDataMapContext, context} }; // Schedule Task context.TaskStatus = task.ScheduleTask(taskData); return context; }
public static ScheduledTaskStatus UninstallPlugin(PluginManifest Manifest, bool UninstallData) { if (ScheduledTasks.GetTaskStatuses(typeof(InstallPluginTask)).Where(s => s.IsRunning).Count() > 0) throw new InvalidOperationException("A plugin is already being Uninstalled"); if (ScheduledTasks.GetTaskStatuses(typeof(UpdatePluginTask)).Where(s => s.IsRunning).Count() > 0) throw new InvalidOperationException("A plugin is being Updated"); if (ScheduledTasks.GetTaskStatuses(typeof(InstallPluginTask)).Where(s => s.IsRunning).Count() > 0) throw new InvalidOperationException("A plugin is being Installed"); var taskData = new JobDataMap() { { "PluginManifest", Manifest }, { "UninstallData", UninstallData } }; var instance = new UninstallPluginTask(); return instance.ScheduleTask(taskData); }
private void InitializePrerequisites(JobDataMap dataMap) { try { this.queryBuilder = (IQueryBuilder)dataMap[QueryBuilderArgumentName]; this.queryExecutor = (IQueryExecutor)dataMap[QueryExecutorArgumentName]; this.processingStrategyFactory = (IProcessingStrategyFactory)dataMap[ProcessingStrategyFactoryArgumentName]; this.logger.Info("Initialized prerequisites for database synchronization."); } catch (Exception ex) { this.logger.FatalFormat("Initializing prerequisites failed: {0}", ex); throw ex; } }
private JobDataMap getJobData() { _logger.Info("Preparing Measures EXIM Loader Job Data"); JobDataMap result = new JobDataMap(); result.Put("MeasureService", _service); result.Put("ConfigurationProvider", _configProvider); result.Put("FtpClient", _ftpClient); result.Put("MeasureFileExtracter", _measureFileExtracter); result.Put("PlantPowerService", _plantPowerService); result.Put("PlantPowerFileExtracter", _plantPowerFileExtracter); result.Put("PlantService", _plantService); _logger.Info("Done preparing Measures EXIM Loader Job Data"); return result; }
public static void Start(HttpMonitor monitor) { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); var jobDataMap = new JobDataMap(); jobDataMap.Add("monitor", monitor); IJobDetail job = JobBuilder.Create<ReportJob>().SetJobData(jobDataMap).Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity(monitor.Name, monitor.Group) .WithSimpleSchedule(t => t.WithIntervalInSeconds(monitor.MonitoringFrequency) .RepeatForever()) .Build(); scheduler.ScheduleJob(job, trigger); LogHelper.PureLog(string.Format("{0}:已开启【{1}】\r\n", DateTime.Now, monitor.Name), string.Format("StartMonitorLog_{0}.txt", DateTime.Now.ToString("yyyyMMdd"))); }
public void IntervalScheduleTriggerTest() { Debug.WriteLine("------- Scheduling Jobs -------------------"); var semHandle = new EventWaitHandle(false, EventResetMode.AutoReset); // Set the job run time. DateTime rangeStart = DateTime.UtcNow; DateTime runTime = rangeStart.AddSeconds(1); var runSchedule = new IntervalSchedule(TimeSpan.FromMilliseconds(500), TimeSpan.Zero, rangeStart); // Define the job and tie it to our HelloJob class. JobDataMap jobDataMap = new JobDataMap((IDictionary<string, object>)new Dictionary<string, object> { { "SemHandle", semHandle } }); IJobDetail job = JobBuilder.Create<HelloJob>() .WithDescription("job1") .WithIdentity("job1", "group1") .UsingJobData(jobDataMap) .Build(); // Trigger the job to run on the set time. ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithItinerarySchedule(runSchedule, rangeStart) .Build(); // Tell Quartz to schedule the job using our trigger. sched.ScheduleJob(job, trigger); var firstEvent = runSchedule.GetRange(rangeStart, DateTime.MaxValue).First(); Debug.WriteLine(string.Format("{0} will start at: {1}", job.Description, firstEvent.StartTime.ToString("r"))); // Start up the scheduler. sched.Start(); Debug.WriteLine("------- Started Scheduler -----------------"); // Wait long enough so that the scheduler as an opportunity to // run the job. Debug.WriteLine("------- Waiting a few seconds... -------------"); // Wait for job to signal 5 times. for (int i = 0; i < 5; i++) { Assert.IsTrue(semHandle.WaitOne(5000)); } }
/// <summary> /// Builds a Quartz Job for a specified <see cref="Rock.Model.ServiceJob">Job</see> /// </summary> /// <param name="job">The <see cref="Rock.Model.ServiceJob"/> to create a Quarts Job for.</param> /// <returns>A object that implements the <see cref="Quartz.IJobDetail"/> interface</returns> public IJobDetail BuildQuartzJob( ServiceJob job ) { // build the type object, will depend if the class is in an assembly or the App_Code folder Type type = null; if ( string.IsNullOrWhiteSpace(job.Assembly) ) { // first try to load the job type from the App_Code folder type = BuildManager.GetType( job.Class, false ); if (type == null) { // if it couldn't be loaded from the app_code folder, look in Rock.dll string thetype = string.Format( "{0}, {1}", job.Class, this.GetType().Assembly.FullName ); type = Type.GetType( thetype ); } } else { // if an assembly is specified, load the type from that string thetype = string.Format( "{0}, {1}", job.Class, job.Assembly ); type = Type.GetType( thetype ); } // load up job attributes (parameters) job.LoadAttributes(); JobDataMap map = new JobDataMap(); foreach ( var attrib in job.AttributeValues ) { map.Add( attrib.Key, attrib.Value.Value ); } // create the quartz job object IJobDetail jobDetail = JobBuilder.Create( type ) .WithDescription( job.Id.ToString() ) .WithIdentity( job.Guid.ToString(), job.Name ) .UsingJobData( map ) .Build(); return jobDetail; }
static void Main(string[] args) { Console.WriteLine("Starting scheduler..."); var properties = new NameValueCollection(); properties["quartz.scheduler.instanceName"] = "RemoteServerSchedulerClient"; // set thread pool info properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz"; properties["quartz.threadPool.threadCount"] = "5"; properties["quartz.threadPool.threadPriority"] = "Normal"; // set remoting expoter properties["quartz.scheduler.exporter.type"] = "Quartz.Simpl.RemotingSchedulerExporter, Quartz"; properties["quartz.scheduler.exporter.port"] = "555"; properties["quartz.scheduler.exporter.bindName"] = "QuartzScheduler"; properties["quartz.scheduler.exporter.channelType"] = "tcp"; var schedulerFactory = new StdSchedulerFactory(properties); var scheduler = schedulerFactory.GetScheduler(); var map = new JobDataMap(); map.Put("msg", "Some message!"); var job = JobBuilder.Create<PrintMessageJob>() .WithIdentity("localJob", "default") .UsingJobData(map) .Build(); var trigger = TriggerBuilder.Create() .WithIdentity("remotelyAddedTrigger", "default") .ForJob(job) .StartNow() .WithCronSchedule("/5 * * ? * *") .Build(); // schedule the job scheduler.ScheduleJob(job, trigger); scheduler.Start(); Console.WriteLine("Scheduler has been started."); }
public void ScheduleJob() { IJobDetail iJob = JobBuilder.Create<HelloWorld>() .WithIdentity("myJob", "group1") .Build(); JobDataMap map = new JobDataMap(); map.Put("msg", "Your remotely added job has executed!"); ITrigger tgr = TriggerBuilder.Create() .WithIdentity("myTrigger", "group1") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInSeconds(10) .WithRepeatCount(3)) .Build(); //Add to Scheduler Scheduler.ScheduleJob(iJob, tgr); }
/// <summary> /// Replace the <see cref="IJobDetail" />'s <see cref="JobDataMap" /> with the /// given <see cref="JobDataMap" />. /// </summary> /// <param name="newJobDataMap"></param> /// <returns></returns> public JobBuilder SetJobData(JobDataMap newJobDataMap) { jobDataMap = newJobDataMap; return(this); }
public IServiceCollectionTriggerConfigurator UsingJobData(JobDataMap newJobDataMap) { triggerBuilder.UsingJobData(newJobDataMap); return(this); }
/// <summary> /// Replace the <see cref="IJobDetail" />'s <see cref="JobDataMap" /> with the /// given <see cref="JobDataMap" />. /// </summary> /// <param name="newJobDataMap"></param> /// <returns></returns> public JobBuilder SetJobData(JobDataMap?newJobDataMap) { jobDataMap = newJobDataMap ?? throw new ArgumentNullException(nameof(newJobDataMap)); return(this); }
/// <summary> /// Add all the data from the given <see cref="JobDataMap" /> to the /// <see cref="IJobDetail" />'s <see cref="JobDataMap" />. /// </summary> ///<returns>the updated JobBuilder</returns> /// <seealso cref="IJobDetail.JobDataMap" /> public JobBuilder UsingJobData(JobDataMap newJobDataMap) { jobDataMap.PutAll(newJobDataMap); return(this); }