Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何实现时间表调度的可定制规则?_Database_Algorithm_Database Design_Scheduled Tasks_Computer Science - Fatal编程技术网

Database 如何实现时间表调度的可定制规则?

Database 如何实现时间表调度的可定制规则?,database,algorithm,database-design,scheduled-tasks,computer-science,Database,Algorithm,Database Design,Scheduled Tasks,Computer Science,我正在研究这个库的实现,它有一个单一的用途:为重复事件制定灵活的计划 例如,一个用户希望将通知安排在“闰年10月的每个偶数周的周二晚上7点”发送。另一家则希望“每月13日上午6点”或“每周一、周二和周三上午7点”发送 我的问题很一般,或者说很抽象,可能涉及到一些谨慎的数学/计算机科学领域。我们可以使用整数时间戳上的简单算法来表示上面示例中的计划吗?哪些操作足以创建一种灵活的语言,其功能强大到足以表达几乎任何重复事件?我认为您需要支持简单布尔表达式的计算,即使用预定义谓词列表的布尔表达式(例如,i

我正在研究这个库的实现,它有一个单一的用途:为重复事件制定灵活的计划

例如,一个用户希望将通知安排在“闰年10月的每个偶数周的周二晚上7点”发送。另一家则希望“每月13日上午6点”或“每周一、周二和周三上午7点”发送


我的问题很一般,或者说很抽象,可能涉及到一些谨慎的数学/计算机科学领域。我们可以使用整数时间戳上的简单算法来表示上面示例中的计划吗?哪些操作足以创建一种灵活的语言,其功能强大到足以表达几乎任何重复事件?

我认为您需要支持简单布尔表达式的计算,即使用预定义谓词列表的布尔表达式(例如,
isLeapYear
isMonday
isEvenWeek
,等等)将它们与逻辑运算符AND、OR、NOT组合(并允许大括号更改优先级)。一旦有了一段能够计算布尔表达式的代码,剩下的就是定义适当数量的谓词

谓词可能有参数,例如
isDayOfMonth(x)
isHour(14)


在数据库中,您很可能会存储表达式的AST(抽象语法树),但也可以将表达式存储为字符串,这完全是您的选择。

我们可以使用整数时间戳上的简单算术来表示上面示例中的计划吗?
您可以添加一些示例吗。我可以猜测一下,但这只会导致讨论,而不是得到答案。
什么操作足以创建一种灵活的语言,其功能强大到足以表达几乎任何重复事件?
我不想说,但这是主观的。如果这是一个真实的世界体系,我向你保证,不管你在你的设计中投入了多少想法,一个用户在哪里会想出一个你没有考虑到并且最有可能有效的方案。谢谢你的回答!我相信这个模型可以工作,存储AST是个好主意!我想,可能存在一些书,参考资料,出版物与编程和格里戈里历法系统有关,你们地球人:)