基于LastUpdate的通知系统

时间:2012-11-13 00:36:11

标签: c#

在过去的几周里,我的任务是开发一个特定于我公司需求的票务系统。好吧,不是什么大不了的事。现在我处理的是一个有点棘手的问题,我完全无法完全理解。

基于故障单上次更新时间的通知系统。

好吧因为我们都知道在票务系统中我们有票,很多票..我们的每张票都有票“状态”,如“等待客户”,“等待发货”等。这些状态有所不同阈值IE:60分钟,120分钟..

基本上我有一个每两个小时运行一次的服务器应用程序。它循环遍历系统中的所有打开的票证,检查他们的票证状态和阈值,如果LastUpdate时间超出我的60分钟阈值,那么系统会发出一条通知,说明此票据未被处理,而某人需要掌握它。好吧,这意味着系统每运行两个小时就会检查时间,如果票证不符合其阈值,则会发送2级通知。同样的过程适用于通知3.

这种情况的问题是当周五到来时会发生什么?可能只有3张门票需要在周五营业结束时发送通知。然而,当星期一到来并且这个系统再次运行时,它会发现每个票据都不合规,这意味着我们很可能在人民邮箱中拥有超过100张票。这似乎是在日期时间之外运行的任何通知系统中的这种常见问题。

有什么建议吗?

1 个答案:

答案 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:你为什么不只是使用计划任务而只在工作时间运行它?