我是 Quartz 的新手,想用它来为使用 SQL Server Express 的客户端提供服务来调度 SQLServer 中的脚本。
我需要一个用户能够安排一个任务来运行,比如从特定日期开始每隔一周运行一次。例如:StartDate = 1/Jan/2013 12:00PM(星期二)并每 14 天重复一次。
在作业设置中,有 StartTime(日期时间)、IntervalUnit(秒、分钟、小时、日、周、年)和 RepeatsEvery(开始日期后触发的间隔数)。
例如:StartDate = "1/JAN/2013 12:00PM" 和 IntervalUnit = "DAY" 和 RepeatsEvery= 14 的设置将在每个第二个星期二下午 12:00 触发作业。如果 StartDate 已经过去,我需要在下一个开始日期触发该作业,例如:如果我今天(18/JAN/2013)启动服务,下一个开始日期将是 29/JAN/2013 12:00PM
我不知道如何使用日历触发器在 Quartz 中完成这项工作。这是 Quartz 内置的东西,还是我需要在启动时计算新的 StartTime?
假设我必须计算一个新的 StartTime,是否有任何内置函数或简洁的快捷方式,或者我是否需要为每个 IntervalUnit 提供一个类似的函数:
'Days
Dim diff As Integer
diff = Now.Subtract(.StartTime).TotalDays
Dim offset As Integer
offset = .RepeatsEvery - (diff Mod .RepeatsEvery)
offset = Now.AddDays(offset).Subtract(.StartTime).TotalDays 'Get the days from Start t preserve time of day
Start = .StartTime.AddDays(offset)