Quartz.Net 作業排程後臺管理系統,基於Extjs

jackchain發表於2015-08-31

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

相關文章