2015-02-03 3 views
2

Я занимаюсь разработкой API Rest с помощью узла расслоения плотных, Монго и выразить как технология. Мои модели включают пользователей, места проведения и т. Д. Кроме того, у каждого пользователя есть состояния. Примерами состояний могут быть, когда пользователь регистрирует первое состояние «new_user», через неделю состояние должно быть «first_week_user» и т. Д.Что такое правильный шаблон проектирования для системы отправки/уведомления API?

Целью этих состояний является уведомление пользователя в соответствии с его или ее состоянием. Например, если пользователь, как картинка, и пользователь находится на первой неделе (у него есть состояние «first_week»), поэтому ему следует отправить электронное письмо. Я сейчас на стадии проектирования, поэтому я хочу знать, должен ли кто-то сталкиваться с тем же вопросом раньше.

Дизайн, который я имею в виду, чтобы положить notification_profile внутри объекта пользователя и используя хрон для проверки состояния и действия дня и в соответствии с этим отправлять электронные письма/уведомления толчка.

Как вы думаете? Есть ли лучший вариант? например У меня может быть API-адрес электронной почты и очередь сообщений электронной почты, попадающих в этот API. Вы знаете, где я могу найти информацию о шаблонах проектирования, стоящих перед этой проблемой?

Большое спасибо за помощь.

ответ

0

Без дополнительной информации это звучит так, как будто вам нужен шаблон Observer.

По сути, ваш Email компонента будет подписаться на like(photo photo) событие каждого Person объекта, а также выполнить работу по электронной почте, отправить немедленно, или запланировать задание для запуска позже, как часть пакета.

0

Один из способов указать переходы состояния будет представлять собой иерархический конечный автомат. См. http://www.eventhelix.com/realtimemantra/hierarchicalstatemachine.htm#.VNJIflXF--o и http://en.wikipedia.org/wiki/UML_state_machine

У меня нет хорошего примера node.js, но here's a C# implementation, который также включает в себя концепцию синхронизированных событий. По сути, конечный автомат отслеживает NextTimedEventAt, поэтому вы можете эффективно извлечь его из базы данных в нужное время, чтобы запустить событие, основанное на времени.

Действия происходят при переходах состояния: при входе в состояние или выходе из состояния.

Смежные вопросы