Сервис Workflow
-
Детектор активных процессов — часть службы "Workflow Server" — осуществляет периодический поиск необработанных бизнес-процессов в системе Docsvision, и формирует список активных процессов.
В список включаются в порядке обнаружения)-
БП, которые находятся на обработке — выполняются в данный момент времени.
-
БП, которые находятся в очереди на обработку.
-
Новые активные процессы, появившиеся в системе со времени проведения предыдущего поиска.
-
-
Из списка активных процессов формируется очередь процессов, в которую попадают активные, готовые к обработке БП. Из списка выбираются процессы, которых нет в очереди процессов и в группе обрабатываемых процессов.
Место БП в очереди процессов определяется числом очков у данного БП, которое вычисляется по формуле:
Число очков = число секунд с момента последней обработки процесса + бонус/малус за приоритет + бонус для никогда не обрабатывавшихся процессов
.Число очков рассчитываются таким образом, чтобы любой процесс (даже с самым низким приоритетом) попал на обработку.
-
Из очереди процессов для обработки выбираются БП с наибольшим числом очков. Данные БП попадают в группу обрабатываемых процессов.
-
На обработку каждого БП выделяется определенное время — квант времени, длительность которого вычисляется по формуле:
квант времени = бонус/малус за приоритет процесса * время обработки процесса (из конфигурации службы)
.Если за отведенный квант времени не были выполнены все функции БП, он будет возвращен в очередь процессов после завершения текущей обрабатываемой функции.
-
На выполнение каждой функции БП выделяется одинаковое время — время ожидания выполнения функции.
Если функция БП не была завершена за время ожидания выполнения функции, БП будет объявлен превысившим таймаут, функция продолжит выполняться до естественного или принудительного завершения.
Если в группе обрабатываемых процессов набирается определенное количество превысивших таймаут БП, когда другие БП из очереди процессов не могут попасть на обработку. Рабочий процесс (
ExecLogic
) службы Workflow Server будет перезагружен, при этом дается1
минута на завершение других, нормально работающих БП. В течение этой минуты новые БП на обработку не передаются.
-
-
Выполненные БП удаляются из группы обрабатываемых процессов. В группу передается следующий БП (с большим приоритетом) из очереди процессов.