Как мне обрабатывать звонки «Получать», сделанные из строя? - PullRequest
2 голосов
/ 25 февраля 2011

У меня есть сервис WF4, который имитирует воронку продаж.Это работает, начиная с «Регистрация» прием вызова.После этого, есть 10 аналогичных этапов (по 2 на каждом этапе).Вы не можете продвинуться дальше стадии, пока текущая стадия не проверит полученные данные.В чем я не уверен, так это в том, что, хотя мое клиентское приложение не позволяет этого, как я могу сделать так, чтобы мой рабочий процесс не позволял кому-либо вызывать операции приема из строя?В моем тестовом консольном приложении я позволил пользователю вызывать любую операцию получения (только потому, что я хотел посмотреть, что происходит).

Например, если я сначала вызываю Регистр, а затем получаю «AddQualification» до получения «AddProspect», тестовое приложение возвращает с исключением, подобным этому:

Операция 'AddQualification | {http://tempuri.org/}IZSalesFunnelService' для экземпляра службы с идентификатором '1984c927-402b-4fbb-acd4-edfe4f0d8fa4' в данный момент выполнить невозможно.Пожалуйста, убедитесь, что операции выполняются в правильном порядке и что используемая привязка обеспечивает упорядоченные гарантии доставки.

2 вещи, которые я не знаю, как сделать:

Во-первых,как мне обработать исключение сбоя, чтобы осмысленно уведомить клиента и ...

Во-вторых, потому что я использую постоянство (и продвижение свойства), когда я выполняю вызов из строя, свойствакоторые продвигаются разгрузки.Они не повышаются снова после того, как клиент получает исключение.

Есть мысли?

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

Извините, мой сервер немного загружается, поэтому блог временно отключается.

Что касается вашего второго вопроса, вам нужно убедиться, что для вашего сервиса рабочего процесса выбрано значение Abandon для необработанногоисключения.Вот документация для AppFabric для этого параметра:


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

Оставь и приостанови.Хост службы прерывает экземпляр службы рабочего процесса в памяти и устанавливает состояние экземпляра в базе данных постоянства на «Приостановлено».Приостановленный экземпляр может быть возобновлен или завершен позже с помощью диспетчера IIS.Эти экземпляры не восстанавливаются службой управления рабочими процессами автоматически.

Завершить.Хост службы прерывает экземпляр службы рабочего процесса в памяти и устанавливает состояние экземпляра в базе данных постоянства на «Завершено (прекращено)».Прекращенный экземпляр не может быть возобновлен позже.

Отмена.Хост службы отменяет экземпляр службы рабочего процесса, вызывая вызов всех обработчиков отмены, так что рабочий процесс корректно завершается, и устанавливает состояние экземпляра в базе данных постоянства на «Завершено (отменено)».


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

Надеюсь, это поможет.

3 голосов
/ 25 февраля 2011

Относительно вашего первого вопроса, я посмотрю пост Рори Примроуза о том, как скрыть ошибки корреляции контента: Управление ошибками корреляции контента .Здесь он переводит исключение в действительное исключение для бизнеса.

...