Моделирование системы уведомлений

Я пытаюсь смоделировать систему уведомлений, в которой событие происходит в течение определенного периода времени (дата начала и дата окончания). Если период времени превышен, пользователь должен либо обновить период времени, либо установить флаг, указывающий, что событие было i) отменено, ii) завершено или iii) закрыто. Если сегодня на один день позже запланированной даты завершения мероприятия, менеджер получает электронное письмо. Если два дня, менеджер и их руководитель по электронной почте. Если > двух дней, менеджер, его руководитель и владелец компании получают электронное письмо. Каждый день после этого он отправляет электронное письмо троим из них о том, что событие является просроченным. События можно планировать в любое время в будущем, поэтому процесс должен просто отслеживать, когда событие находится в ожидании, активно, просрочено (после даты окончания), отменено, закрыто или завершено.

Я начал создавать рабочий процесс как приложение службы рабочего процесса, размещенное в Windows Server AppFabric, потому что оказалось, что это лучший способ сохранить этот длительный рабочий процесс. Я также начал использовать WF State Machine Activity Pack CTP 1, так как это казалось лучшим способом моделирования этих различных состояний событий.

Я не уверен, как смоделировать этот процесс, а также заставить процесс сохраняться и продолжать работать в фоновом режиме, чтобы отслеживать состояние события и вести себя, как описано выше. Я думаю, что все состояния правильно смоделированы в машине состояний. Я все еще пытаюсь понять переходы из одного состояния в другое. Любое руководство приветствуется.

Смоделированный текущий конечный автомат


person Flea    schedule 07.04.2011    source источник


Ответы (1)


Конечные автоматы запускаются в пакетном режиме. На самом деле нечего «запускать», пока рабочий процесс сохраняется. Я подозреваю, что вы имеете в виду, как рабочий процесс «проснется» при превышении тайм-аута.

Ответ заключается в том, что действие Delay создаст надежный таймер. Служба управления рабочими процессами AppFabric периодически запрашивает уровень сохраняемости, есть ли экземпляры рабочих процессов, которые можно запустить, то есть экземпляры, в которых произошел сбой или у которых истек срок действия надежного таймера.

В конце концов таймер истечет, рабочий процесс будет загружен, а закладка «Отложенная активность» будет возобновлена.

person Ron Jacobs    schedule 07.04.2011
comment
Я наткнулся на примеры рабочего процесса (msdn.microsoft.com/en-us/library /dd483375.aspx) и экспериментировали с этим. Спасибо, Рон! - person Flea; 08.04.2011