Как запрос WCF может быть связан с несколькими экземплярами Workflow? - PullRequest
1 голос
/ 18 июня 2011

Сценарий следующий:

У меня есть несколько клиентов, в которых они могут зарегистрироваться на сервере рабочих процессов, используя запросы WCF, для получения каких-либо уведомлений.Информация об уведомлениях будет получена из внешней системы с использованием другой операции получения.Затем рабочий процесс должен получить информацию об уведомлении и выполнить обратный вызов всех зарегистрированных клиентов, используя активность отправки и корреляции обратного вызова (клиенты предоставляют интерфейсы обратного вызова, реализованные в них, и адреса конечных точек, первоначально передаваемые с запросами на регистрацию).Подход «Служба рабочих процессов при ведении журнала» используется с постоянным хранилищем.

Теперь я ищу способ сопоставления входящей информации уведомлений, полученных из внешней системы, с сохраненными ранее экземплярами рабочего процесса, созданными ранее.когда запрос на регистрацию, так что все клиенты будут уведомлены с использованием конечных точек, которые уже прошли с запросами на регистрацию.Может ли WF 4.0 возобновить и выполнить несколько экземпляров рабочего процесса, когда информация уведомления получена без сохранения конечных точек каким-либо образом вручную и проходит через них?Если да, как я могу это сделать?

Кроме того, если мой подход к этому не верен, то, пожалуйста, посоветуйте мне, как лучше всего использовать такую ​​систему с использованием служб WCF.

ВашПомощь высоко ценится.

1 Ответ

1 голос
/ 18 июня 2011

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

...