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