当前位置:  开发笔记 > 后端 > 正文

设计问题:您将如何设计定期事件系统?

如何解决《设计问题:您将如何设计定期事件系统?》经验,为你挑选了1个好方法。

如果您的任务是构建支持重复事件的事件调度系统,您将如何做?如何删除定期活动时的处理方式?你怎么能看到未来事件何时发生?

即在创建活动时,您可以选择"每日重复"(或每周,每年等).

请回复一个设计.我已经习惯了Ruby/Rails,但是使用你想表达设计的任何东西.

我在接受采访时被问到这个问题,并且无法提出我喜欢的非常好的回复.

注意:这里已经被问到/已经回答了.但我希望得到一些更实用的细节,详情如下:

如果有必要能够对重复事件的一个实例进行评论或以其他方式添加数据,那该怎么办?

事件更改和删除如何工作?

你如何计算未来事件的发生时间?

Greg Ogle.. 10

我开始实现Martin Fowler概述的一些时态表达.这样可以确定计划项目何时应该实际发生.这是一种非常优雅的方式.我最终得到的只是文章中的内容.

下一个问题是弄清楚世界上如何存储表达式.另一个问题是当你读出表达式时,那些如何适应不那么动态的用户界面?有人谈到将表达式序列化为BLOB,但是很难走出表达式树以了解它的含义.

解决方案(在我的例子中)是存储适合用户界面将支持的有限数量的情况的参数,并从那里使用该信息动态生成时间表达式(可以在创建时进行序列化以进行优化).因此,Schedule类最终会有几个参数,如偏移量,开始日期,结束日期,星期几等......然后您可以生成Temporal表达式来完成艰苦的工作.

至于具有任务的实例,有一个"服务"可以生成N天的任务.由于这是与现有系统的集成,并且需要所有实例,因此这是有道理的.但是,像这样的API可以很容易地用于投影重复,而不存储所有实例.



1> Greg Ogle..:

我开始实现Martin Fowler概述的一些时态表达.这样可以确定计划项目何时应该实际发生.这是一种非常优雅的方式.我最终得到的只是文章中的内容.

下一个问题是弄清楚世界上如何存储表达式.另一个问题是当你读出表达式时,那些如何适应不那么动态的用户界面?有人谈到将表达式序列化为BLOB,但是很难走出表达式树以了解它的含义.

解决方案(在我的例子中)是存储适合用户界面将支持的有限数量的情况的参数,并从那里使用该信息动态生成时间表达式(可以在创建时进行序列化以进行优化).因此,Schedule类最终会有几个参数,如偏移量,开始日期,结束日期,星期几等......然后您可以生成Temporal表达式来完成艰苦的工作.

至于具有任务的实例,有一个"服务"可以生成N天的任务.由于这是与现有系统的集成,并且需要所有实例,因此这是有道理的.但是,像这样的API可以很容易地用于投影重复,而不存储所有实例.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有