2014-11-06 7 views
0

Возможно ли установить корреляцию (в услуге WF 4.5) таким образом, чтобы первая операция (операция получения) в службе WF EOTER создает новый экземпляр рабочего процесса (если критерии корреляции еще не получены) ИЛИ извлекает существующий экземпляр рабочего процесса (когда критерии корреляции уже получены ранее)?WF-сервис 4.5 корреляция: либо создать новый экземпляр, либо получить существующий

Когда это будет полезно?

Когда есть операция «EnqueueItem», который группирует элементы на основе некоторых свойств каждого элемента (критерии корреляции) и должны создать новую группу каждый раз, когда новое значение-комбинация (критерии корреляции) свойств элементов является получено.

ответ

0

Я не нашел способ определить операцию таким образом (как описано в исходном вопросе), поэтому я реализовал ее по-другому.

Вместо того, чтобы иметь одну операцию, которая либо начинает новую, либо извлекает существующие, есть две операции, одна из которых является «EnqueueItem» (может быть вызвана много раз, пока не будет удовлетворен критерий), а другая «StartGroup» (может быть вызвана только один раз, чтобы запустить экземпляр WF).

Когда клиент пытается присвоить элемент, он ловит ожидаемое исключение InstanceNotFoundException (если группа еще не создана) и вызывает в этом случае «StartGroup».