下载的quartz.NET库中有两个解决方案 Quartz.server.2008.sln 和 quartz.2008.sln 。现在我必须设置重复工作。数据库中将有一个表格,其中将定义所有时间表(如月的第一个星期五,每月5个月,每个星期日上午12点......等)。我按计划执行了该方法。现在我如何使用quartz.net从数据库获取计划并设置执行方法?什么是正确的步骤?
答案 0 :(得分:3)
我认为您可以创建在后台运行的Windows服务。您可以从数据库中读取scheduleFromDatabase
变量,然后将其传递给Quartz。
这是来自控制台应用的一个小例子:
static void Main(string[] args)
{
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = schedFact.GetScheduler();
sched.Start();
JobDetail jobDetail = new JobDetail("myJob", null, typeof(HelloJob));
//read this string from database
string scheduleFromDatabase="0 11 16 ? * FRI,SUN";
CronTrigger trigger = new CronTrigger("trigger1", null, "myJob",
null,scheduleFromDatabase );
trigger.StartTimeUtc = DateTime.UtcNow;
trigger.Name = "myTrigger";
sched.ScheduleJob(jobDetail, trigger);
}
public class HelloJob:IJob
{
public void Execute(JobExecutionContext context)
{
Console.WriteLine(DateTime.Now.ToString());
//Call here your method!
}
}
这很有用:
答案 1 :(得分:2)
石英文档似乎确实假设每个人都知道基础知识并且只是在寻找细节。
希望以下步骤,以及Quartz文档和示例,您将能够启动项目。
步骤1:将Windows资源管理器打开到... \ Quartz.NET-1.0.3 \ database \ tables文件夹
第2步:执行适合您数据库的脚本
步骤3:将Windows资源管理器打开到... \ Quartz.NET-1.0.3 \ server \ bin \ 3.5 \ console文件夹
第4步:创建一个类库程序集并添加一个实现IJob接口的类
第5步:编辑quartz.config文件。我的下面。
################################################################################
# Added by Brad Bruce
# please refer to http://quartznet.sourceforge.net/tutorial/lesson_9.html before making changes
################################################################################
quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.OracleDelegate, Quartz
quartz.jobStore.tablePrefix = QRTZ_
quartz.jobStore.dataSource = myDS
quartz.dataSource.myDS.connectionString = Data Source=xe; User Id=quartz; Password=quartz;
quartz.dataSource.myDS.provider = OracleODP-20
quartz.jobStore.useProperties = true
步骤6:运行控制台服务器并验证虚拟作业是否正在运行
步骤7:将控制台项目复制到新项目
步骤8:修改控制台源以通过Quartz API安排作业。您将能够重复使用此项目来安排其他工作。
如果他们只添加一个项目来安排和管理工作,我认为Quartz.Net真的会起飞。