Выходить из рабочего процесса? - PullRequest
3 голосов
/ 03 февраля 2011

Есть ли способ выйти из рабочего процесса более изящно, чем бросить InvalidWorkflowException? Я пишу действие (которое взаимодействует с базой данных SQL), которое должно быть замкнуто в случае сбоя операции.

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

Что-то вроде this.currentContext.SetState(Cancelled)?

Ответы [ 3 ]

2 голосов
/ 03 февраля 2011

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

Если это исключительный случай, вы должны выбросить исключение и позволить всей логике компенсации делать свое дело.

2 голосов
/ 03 февраля 2011

Честно говоря, я не уверен, поскольку я относительно новичок в использовании Windows Workflow, но как насчет использования NativeActivity и просмотра NativeActivityContext.CancelChildren?

Посмотрите также на эту статью на MSDN: Моделирование поведения отмены в рабочем процессе .

1 голос
/ 03 февраля 2011

Я думаю, что это та же ситуация, что и в любой другой программе.Вы выдадите какое-то исключение, если в вашей активности возникнет ошибка, и вы будете использовать операцию try / catch для ее обработки и корректно завершите WF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...