Моделирование системы уведомлений - PullRequest
1 голос
/ 07 апреля 2011

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

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

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

Current State Machine as Modelled

1 Ответ

0 голосов
/ 07 апреля 2011

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

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

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

...