Соотношение сервисов документооборота - PullRequest
2 голосов
/ 30 сентября 2011

Я хотел бы реализовать следующий сценарий рабочего процесса: enter image description hereУ меня есть служба документооборота с двумя филиалами.Операция 2 (получение) связана с CorrelationHandle «handle2», который инициализируется из заголовка сообщения.

enter image description here

Поток следующий:1) Кто-то вызывает Operation1 и инициализирует обработчик корреляции для Operation2.Таким образом, дело в том, что значение корреляции для Операции2 отличается от Операции1 и должно быть получено во время выполнения при выполнении Операции1.2) Используя значение корреляции, клиент может вызвать Operation2.3) Если корреляция не верна, Операция2 должна быть выполнена, но с пользовательской логикой.Проблема в том, что когда я звоню в первую службу, я получаю исключение:

CorrelationHandle уже используется с BookmarkScope '{идентификатор области видимости закладки x}', поэтому его нельзя использовать с BookmarkScope '{идентификатор области видимости закладки}}

Отладка показывает, что даже если я вызываю Operation1, только «handle2» из Operation2 также инициализируется с некоторым значением в операции Receive2 !!!так что я, кажется, не могу повторно инициализировать его.Есть идеи как это можно исправить?

ОБНОВЛЕНИЕ:

Я приложил файл с исходным кодом, чтобы вы могли воспроизвести проблему.Просто запустите Operation1.

http://dl.dropbox.com/u/27847776/WorkflowCorrelation.zip

Заранее спасибо,-Petro

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Не используйте Pick. Используйте «Параллель» и установите прекращение параллели только тогда, когда вы уверены, что разговор окончен. Параллель имеет свойство, где вы можете установить условие завершения.

0 голосов
/ 03 октября 2011

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

...