我在asp.net中创建GUI界面,用户将在其中指定计划时间和将来某个时间运行的作业。
我的应用程序中的作业是Person类的实例(如下所示)。在指定的时间,我想运行创建的人员实例的“submit()”方法。
e.g。
public class Person
{
string User {get;set;}
public void Submit()
{
//create a text file with User entry
}
}
现在在MS SQL中,我有一个Jobs表。 Jobs表有ScheduledTime(DateTime),JobDetail(XML)列(其中JobDetail列存储Person对象的序列化版本,例如<Person User="TestUser"></Person>
,预定时间:2/2/10 12:12:11
我知道Quartz.Net可以在预定的时间运行作业。但我不知道如何使用Quartz.Net和Spring.Net从数据库中获取作业并在预定时间运行它们?
有可能吗?如果是这样,请指导?
答案 0 :(得分:2)
您需要实现两个独立的组件。触发器和轮询作业运行的东西。到目前为止,根据您的表结构,您可能希望只运行一次的作业,如果不是,则需要添加cron表达式列并创建CronTrigger对象。
要轮询要运行的作业,您可以在此处找到有关如何使用Spring计时器的详细信息: http://static.springsource.org/spring/docs/1.2.9/reference/scheduling.html
Spring的替代方法是在数据库中实现轮询器。例如,创建SQL Server计划作业,我们采用的方法。缺点是您需要将其设计为数据库服务器关闭时丢失的拾取作业。
数据库方法详情
此设计假设只运行一次计划(添加重复您需要添加一个cron转换步骤),并假定计划所做的工作可以由数据库启动。如果只能以编程方式执行,那么Spring是更好的解决方案。
相关: