Quartz.Net是一个开源的、非常灵活的作业调度框架,具体使用方法和教程:http://www.cnblogs.com/shanyou/archive/2007/08/25/quartznettutorial.html
虽然很优秀,但使用过程中没有找到一个合适的后台任务配置系统,有时是CronExpress的生成,看过:http://www.cronmaker.com/ 等但都不是特别合适,最好是能参考MSSQL里的作业调度来设计。
Extjs是最牛逼的RichClient前端开发框架,下面演示下基于Extjs+Quartz.Net开发的任务调度管理系统。
整个系统分:后台作业配置管理系统和Window本地服务组成
一、Quzrtz.Net后台作业配置管理系统界面
1. 作业通知组模块,一个作业的执行成功、失败、异常是非常有必要通知到管理员的,并且不同作业需要通知的管理员也不一样,所有这里我们单独设置了一个通知组模块,可以根据需要添加若干的通知服务URL,补充完整参数即可。作业执行过程中将会根据条件,向该URL中POST数据(作业ID,名称,结果等),对应的URL服务接收到数据,可做具体的操作,比如发送到短信、发送到内部即时通讯工具、发送到微信等等,这些需要企业内部单独实现。
2. 最重要的就是作业配置管理了,作业配置重要的主要是:
- 作业的服务URL,参数
- 作业的执行计划,如何产生CronExpress
- 作业的日志、通知级别
因为CronExpress比较强大和复杂,很多比较特殊的定时计划没有那么多精力去实现,所以提供了一个自定义CronExpress的功能,方便自己制定特殊的计划,同时为了检验是否是预期的计划时间,提供“验证表达式”功能,可以查看最近100条的执行计划,以便确认是正确的计划。
3. 作业执行完成,当然还需要做相应的日志显示,这个比较简单,直接将执行结果上传至后台系统中即可
二、Window 服务,任务执行者
任务执行者,说白了就是将服务器中配置的任务列表加入到Quartz.Net计划列表,然后靠Quartz定时去执行服务,那么客户端和服务端通信需要解决几个问题
- 做心跳线,定时检测服务器端的作业改动(如作业删除、作业变更了执行计划),改动需要迅速起效,无需重启window服务
- 考虑后台服务的多边形,尽量统一走webservice方式,不要直接读数据库
- 考虑调用服务的安全性,这些定时作业的url服务只能由Quartz.Net的Window服务调用,其他第三者调用应该屏蔽
后台服务已经做了标准的webservice接口,及时不用上述的管理后台,只需要提供相应的服务,对于window 服务也是可以用的,管理后台和服务做了很好的解耦。
需要源码或者技术支持的可联系我QQ:710782046