我想以通用方式设计一个notofication系统,以便多个系统可以使用它。我说通用,因为现在需要发送电子邮件。但也许稍后它还需要发送推送通知,但是要发送给不同的人群。
以下是一些背景知识。
目前,我们有两个网站负责工作流程中的某个部分。例如:
Person A
添加到系统Person A
登录门户并完成个人资料Person A
的详细信息并批准。Person A
发出新请求,要求他提供某些文件,例如他的护照和证书副本以及其他类型的文件。Person A
可以在同一门户网站上传所请求文档的副本。他们今天也可以上传1份文件,几天后上传其余的证书。因此,基本上管理人员只能在请求的人员响应时继续执行此工作流程中的下一步。
有时,人们只是忘记回复或忘记完成文档上传。为此,我想创建一个通知系统。如果某个人在2天内没有完成他的个人资料/文件,那么我们的系统应该发送一封提醒电子邮件。
我们还运行第三个和第四个网站,这是工作流程的一部分。为此,同样的想法适用。但是例如Website 3
涉及公司的联系人。
所以,我真的很好奇如何建立这样的通用系统。
具体而言,每个网站是否应负责实施自己的通知客户?这似乎很容易让代码库失去同步。但与此同时,即使您构建了一个库,您仍然需要以某种方式处理HTML模板。
我不确定在哪里以及如何开始。如果这是一个单一的网站,它将是一个不同的故事,但同时在多个网站上实现它让我感到困惑。
答案 0 :(得分:1)
我将通知逻辑放在其中一个应用程序中(如果您预计它将来会增长,甚至是自己的项目),然后通过RESTful Web服务(可能使用Web API)将功能公开给其他应用程序。这样它共享相同的代码库(HTML模板),但仍然只是松散耦合。
答案 1 :(得分:1)
您通常所描述的是发布/订阅模式,提醒是一个单独的问题,我将在下面解决。如果您只有两个网站,您可能只是将HTTP请求从一个Web应用程序发送到另一个Web应用程序,以通知第二个系统有工作要做。但是,如果您需要多个Web应用程序参与,这很快就会变得复杂。
相反,我会使用PubSub系统(例如NServiceBus)。在此设置中,您将拥有一个中央服务器来协调事件并确定适当的响应。例如,当新用户注册时,消息将发布到PubSub服务器。在该服务器上有许多订阅者知道如何响应(创建新帐户,发送电子邮件,通知管理员等)。
首先,如果您只是通过电子邮件通知管理员,可能会有订阅者发送电子邮件,但稍后您可能会交换像SignalR这样的实时推送通知,例如@coirius建议。
至于提醒,我会在数据库中存储请求记录,然后有一个日常工作来检查未完成的请求。
答案 2 :(得分:0)
可能有所帮助的东西 - MS为WWF(Windows Workflow Foundation)提供了一个样本应用程序,用于人力资源管理,可能会给你一些想法。并不是说WF是解决方案 - 而是他们如何模仿这个过程。
答案 3 :(得分:-1)
我建议使用SignalR。构建实时Web应用程序是一个非常简单的库,我可以用几行代码轻松实现通知。