Проблема.
До недавнего времени масштабируемость службы WorkFlow достигалась лишь за счет увеличения числа процессов. Но данный способ решения является временным и рано или поздно приводит к некоторым проблемам.
Среди этих проблем можно отметить резкое возрастание количества тупиков (DeadLock - ситуация в многозадачной среде или СУБД, при которой несколько процессов находятся в состоянии бесконечного ожидания ресурсов, занятых самими этими процессами).
Тупики, помимо проблем при работе, вызывают множество проблем при отладке, т.к. для их возникновения нужны специфические условия одновременного выполнения нескольких процессов.
Также, в определенных ситуациях, при изменении количества процессов могли появиться не обрабатываемые задачи.
Решение.
Учитывая вышесказанное, было принято решение добавить возможность распределения задач между несколькими службами Workflow, установленными на разных компьютерах. Для этого в настройках системы можно задать имена нескольких служб Workflow.
При этом все клиенты ставят задачи на обработку в очередь через первую указанную службу, а уже она распределяет задачи между всеми остальными службами. Помимо этого задачи равномерно распределяются между процессами служб.
Следует отметить, что теперь при изменении количества служб и/или процессов у этих служб все задачи будут обработаны.
Для реализации данной возможности в настройке системы «WorkflowServiceName» можно задать имена нескольких компьютеров через символ «;». При этом в таблицу SBWorflowProcessing добавляется поле с номером службы (ServiceNumber).
Установка:
На одну физическую машину можно поставить только одну службу Workflow, ограничение связано с именованием служб в ОС.
У службы WorkFlow теперь появился отдельный установщик. Процесс установки не имеет существенных отличий, за исключением одного дополнительного этапа. Установщик проверяет, заполнено ли поле WorkflowServiceName в настройке системы (в
таблице XIni), и в случае, если поле пустое, прописывает себя в это поле. В противном случае установщик предлагает 3 возможных варианта:
- Установить только эту службу и удалить информацию о других службах;
- Добавить службу и сделать ее главной службой Workflow;
- Добавить службу к списку дополнительных служб Workflow.

Дальнейшие действия ничем не отличаются от процесса обычной установки сервисных служб.