[問題] 如何有效率的儲存Todo的Repeat資料

作者: InitialPower (InitialPower)   2016-04-01 11:26:39
各位高手好 目前在作的程式碼碰到一個問題
在實作類似行事曆中的 重複功能 的時候
要如何有效率的儲存所有狀況 以及 保留SQL搜尋的彈性
重複的狀況大致上有以下的類型
http://imgur.com/a/exD7T
1.每天重複一次
2.每週重複一次~數次, 使用者可自定
3.每月重複一次~數次, 使用者可自定
4.每年重複一次
5.其他狀況
下載了幾個Open Source的原始碼來參考, 不過似乎都沒有做到這部分
使用的框架為C# + ASP.Net MVC + Entity Framework
不知有沒有人可以提供建議, 先謝過了
作者: O187 (187cm)   2016-04-01 12:29:00
用內建排程的api
作者: InitialPower (InitialPower)   2016-04-01 14:06:00
感謝你的回應 你指的是類似Handfire之類的函數庫吧我的需求是儲存任務重複的各種可能性 而且會是多人使用 所以那種函數庫似乎不太適合
作者: Litfal (Litfal)   2016-04-01 21:46:00
原PO的問題是,如何用同樣的資料庫結構去存那些觸發與循環設定。不過你是為何要搜尋呢?
作者: InitialPower (InitialPower)   2016-04-02 01:32:00
這部份我是需要設計成 每日開始時搜尋當日會觸發的任務 並自動產生一個子任務 因此需要搜尋的功能
作者: Litfal (Litfal)   2016-04-02 05:43:00
我覺得,建立/修改設定或任務進行後,就去算下次觸發時間把這個觸發時間與關聯任務/工作加入另一個表這個觸發表就很單純,篩選就很簡單。而原本的設定表就可以保留複雜度與未來擴充性。不管怎麼樣的設定,都實作把工作和下次觸發時間丟到觸發表
作者: ssccg (23)   2016-04-03 04:10:00
用規則來描述觸發時間、可以對規則資料搜尋某天會觸發的這兩項是不能同時達成的,如樓上所說要分成規則跟觸發日期不過你說的每日搜尋當日會觸發的這個作法我是覺得很奇怪通常排程作法都是啟動時照規則算出下一次觸發時間,排進工作表,下一次執行時再算下下一次的時間,沒有在要執行時去對規則做搜尋的至於儲存規則的方式,就cron expression看起來很夠用
作者: InitialPower (InitialPower)   2016-04-06 13:37:00
感謝樓上兩位的回答 cron expression 看來是個不錯的選擇

Links booklink

Contact Us: admin [ a t ] ucptt.com