2011-09-05 25 views
1

我創造在asp.net GUI界面中,用戶指定的時間來安排和將在運行作業在未來某個時候。是否有可能使用Quartz.Net與Spring.Net創建在MS SQL數據庫的工作與預定時間

在我的應用程序的工作是一個Person類(如下)的一個實例。在特定的時間,我想運行創建的人員實例的「submit()」方法。

例如

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對象的序列化版本,例如,計劃時間:2/2/10 12:12:11

我知道Quartz.Net可以在他們計劃的時間運行作業。但我不知道如何使用Quartz.Net與Spring.Net從DB拿起工作,在計劃的時間運行呢?

這可能嗎?如果是的話可以請你指導?

回答

2

有你需要兩個獨立的組件來實現,觸發和一些調查,根據您的表結構作業運行。像你想的是隻運行一次的作業到目前爲止,這聽起來和我f不需要添加cron表達式列並創建CronTrigger對象。

對於輪詢作業運行,你可以找到關於如何使用Spring定時器這裏的細節: http://static.springsource.org/spring/docs/1.2.9/reference/scheduling.html

的替代春天實現數據庫的輪詢。例如,創建一個SQL Server計劃作業,這是我們的做法。缺點是您需要將其設計爲在數據庫服務器關閉時錯過的作業。

數據庫的做法詳細介紹

這一設計假定只有一次計劃運行(添加重複您需要添加一個cron轉換步驟),並假設計劃做的工作可以通過數據庫得到正式拉開序幕。如果只能以編程方式進行,Spring是更好的解決方案。

  1. 添加「處理」到您的工作表
  2. 列創建一個運行每分鐘一個存儲過程(或其他)
  3. 該程序會在過去的處理沒有標明任何作業,踢他們關閉,然後將其標記爲已完成

相關:

How do I configure Quartz.NET host with Spring.NET

Running a Job only once Using Quartz

+0

我還是不明白,我怎麼會讓quartz.net輪詢DB和觸發預定的時間==當前時間是什麼時候? – InfoLearner

+0

更新的主要答案與更多細節。 –

+0

石英沒有做輪詢,它僅僅是用於創建計劃和觸發器的API。 –

相關問題