在过去的几周里,我的任务是开发一个特定于我公司需求的票务系统。好吧,不是什么大不了的事。现在我处理的是一个有点棘手的问题,我完全无法完全理解。
基于故障单上次更新时间的通知系统。
好吧因为我们都知道在票务系统中我们有票,很多票..我们的每张票都有票“状态”,如“等待客户”,“等待发货”等。这些状态有所不同阈值IE:60分钟,120分钟..
基本上我有一个每两个小时运行一次的服务器应用程序。它循环遍历系统中的所有打开的票证,检查他们的票证状态和阈值,如果LastUpdate时间超出我的60分钟阈值,那么系统会发出一条通知,说明此票据未被处理,而某人需要掌握它。好吧,这意味着系统每运行两个小时就会检查时间,如果票证不符合其阈值,则会发送2级通知。同样的过程适用于通知3.
这种情况的问题是当周五到来时会发生什么?可能只有3张门票需要在周五营业结束时发送通知。然而,当星期一到来并且这个系统再次运行时,它会发现每个票据都不合规,这意味着我们很可能在人民邮箱中拥有超过100张票。这似乎是在日期时间之外运行的任何通知系统中的这种常见问题。
有什么建议吗?
答案 0 :(得分:1)
编辑:现在我知道它是一个C#应用程序..
当您的申请决定是否发送通知时..首先,检查是否是周末:
if (DateTime.Now.DayOfWeek != DayOfWeek.Saturday && DateTime.Now.DayOfWeek != DayOfWeek.Sunday)
// start sending notifications.
或者,你可以这样做:
if (TimeSpanElapsedToSendNotificationFor(thisItem)) {
if (isWeekend()) {
thisItem.LastUpdate.AddDays(2);
persist(thisItem); // update the DB
return;
}
// send notification here..
}
因此,首先检查是否已经过了所需的通知时间。如果它有..仔细检查它是否是周末..如果它是..在这个项目的LastUpdate属性上添加2天然后退出该功能。如果是工作日,它将继续处理。使用第二种方法,除非在周末添加,否则在第二次运行中,您的第一次检查将为假,除非它们在周末添加。
PS:你为什么不只是使用计划任务而只在工作时间运行它?