2

Я использую версию рабочего процесса Windows 4.0 в своем проекте для управления рабочим процессом. Один проект создается в системе, в которой есть 100 документов, которые должны быть одобрены пользователями, и каждый документ должен следовать тому же процессу документооборота. Обработка документов параллельна для 100 документов. Которые когда-либо заканчиваются, могут перейти на следующий шаг рабочего процесса. [Например: документ создан - Отправить для просмотра - просмотрено - одобрено].Проблемы с выпуском нескольких экземпляров

Теперь я создаю 100 экземпляров для 100 документов. Но я не уверен в производительности, когда документы становятся феноменально (например: 10000 документов). В любой момент времени в системе может быть создан несколько проектов.

Есть ли лучший способ справиться с этим сценарием?

Приложение основано на ASP.Net и работает IIS.

ответ

0

Вы можете управлять элементами в пакетном процессе или как в реальном времени. Вопросы, которые следует учитывать, - это то, как в реальном времени должен выполняться этот процесс. Достаточно ли выполнить периодический рабочий процесс каждую минуту (около реального времени) в отличие от накладных расходов 100-1000 WF в секунду?

Вам определенно необходимо учитывать накладные расходы на ваш дизайн (масштабируемость в реальном времени будет проблемой), поэтому вы можете пересмотреть подход в реальном времени, который у вас есть, если ваш объем должен значительно увеличиться. Я бы постарался на пакетный подход к опросу на предварительно настроенной частоте и использовать DelayActivity.

1

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

0

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

0

Если вы размещаете свой WF, используя AppFabric (сервер Windows) в IIS, это не проблема. Описанные вами шаги означают, что ваши WF ждут задержки или сообщения, возникающие в результате взаимодействия с человеком. Процесс будет простаивать до тех событий, что означает, что после небольшого таймаута ожидания они будут выгружены из памяти. Вы можете обрабатывать миллионы параллельных процессов, подобных этому.