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