[问题] 如何有效率的储存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