У меня есть простой рабочий процесс Windows Workflow 4.5 (снимок экрана в конце сообщения), размещенный как служба WCF в IIS. Я настроил сохранение, используя хранилище SQL Server, предоставленное Microsoft.Почему рабочие процессы Windows не сохраняются после перезапуска сервера?
Рабочий процесс принимает идентификатор документа и логическое значение, указывающее, нужно ли ему приостанавливать и ждать активности человека (обзор человека). Если рабочий процесс должен ждать, он имеет операцию Receive(), которая коррелирует с идентификатором документа и паузами (что создает закладку за кулисами). Иначе он подходит к завершению и маршрутизирует документ.
Все работает отлично до тех пор, пока мы не перезагружаем сервер или не делаем что-то вроде утилизации пула приложений для этой службы. Поскольку я понимаю упорство, рабочий процесс должен сохраняться после настраиваемого периода «Время ожидания», например, встреченного, КОГДА ОЖИДАЕТСЯ ПОЛУЧИТЬ СООБЩЕНИЕ ... Я установил это значение на очень агрессивную секунду.
Однако в случаях, которые вы ожидаете в реальном мире для долговременного рабочего процесса, если мы имитируем сбои сервера, перезагружая или перерабатывая пул приложений, рабочие процессы, ожидающие с Receive(), никогда не отвечают. Предполагается ли, что мы делаем что-то особенное, чтобы «перезагрузить» рабочий процесс после восстановления сервера? Не коррелирует ли корреляция между рабочими процессами, которые сохраняются?
прием(), который никогда не срабатывает после перезагрузки сервера будет выделена желтым цветом в рабочем процессе ниже:
Поведение, которое вы пытаетесь описать с помощью «атомарного», называется ** отсутствующей зоной ** в WF. Например, см. Http://blogs.msmvps.com/theproblemsolver/2010/08/22/workflows-and-no-persist-zones/ или http://stackoverflow.com/questions/3475416/persist-activities-cannot- быть-содержащаяся-за-не-постоянства-блоков-ошибки – nodots