У меня есть служба рабочего процесса, которая связывает процесс Workflow Foundation 4 с базой данных приложения, в которой хранятся записи, показывающие, какой шаг должны выполнить наши пользователи.В случае невозобновляемой ошибки в рабочем процессе это сделает так, что рабочий процесс не может быть возобновлен, но записи базы данных, которые находятся в приложении, все еще существуют, поэтому существует «разъединение» между состоянием рабочего процесса инаше состояние приложения.
Что я хотел бы сделать, это создать еще один экземпляр сбойного рабочего процесса, но синхронизировать его с записями базы данных приложения.Это повлечет за собой переход к произвольной точке входа в рабочем процессе на основе существующих записей базы данных приложения.
Возможно ли это сделать?Есть ли подводные камни для этого?Есть ли лучший способ управления рабочим процессом в зависимости от приложения?
Рабочий процесс будет выглядеть примерно так:
- Запустите рабочий процесс.Это создает запись базы данных приложения, которая отслеживает ход процесса, и запись базы данных, которая показывает пользователю, что нужно делать дальше.
- Пользователь «обрабатывает» шаг, который выполняет вызов службы рабочего процесса.(используя receive / sendreply), обновляя запись базы данных с результатами работы и переходя к следующему шагу в рабочем процессе.
- Шаг 2 повторяется со всеми различными шагами, создающими записи базы данных для обработки, затемобновление этих записей с результатами работы и создание новых записей БД для обработки до завершения процесса.
Вопрос, на который я пытаюсь ответить, заключается в том, доберется ли пользователь до определенного шага впроисходит сбой процесса и механизма рабочего процесса, так что экземпляр рабочего процесса не восстанавливается, как я могу использовать записи базы данных приложения для «перезапуска» процесса, чтобы повторно войти в процесс, пропуская до точки сбоя (при условии, что мы решили проблемучто вызвало сбой в первую очередь).Это избавит пользователя от необходимости «повторять» работу, которая уже была сделана, и останется в процессе.
Я думал, что если бы был способ просмотра записей базы данных приложения, которые были созданычтобы определить, где остановился процесс, если бы я мог «пропустить» ранее выполненные шаги и перейти к точке, в которой произошел сбой, на основе этих записей базы данных, я мог бы «возобновить» процесс (с точки зрения пользователя), не вызываяпеределок.