# Расширенные настройки

## Настройки тайм-аута

Начиная с версии `2.1.0`, рабочие процессы поддерживают настройку тайм-аута, которая ограничивает максимальную длительность одного выполнения от начала обработки до завершения. Настройки тайм-аута помогают предотвратить ситуацию, когда рабочий процесс бесконечно занимает ресурсы выполнения из-за долгих операций, ожидания ручной обработки или ожидания внешнего обратного вызова.

В диалоговом окне создания или редактирования рабочего процесса разверните «Расширенные параметры», чтобы настроить «Настройки тайм-аута»:

![20260604212454](https://static-docs.nocobase.com/20260604212454.png)

Доступные параметры:

- Укажите `0`, чтобы не ограничивать тайм-аут (значение по умолчанию).
- Укажите значение больше `0`, чтобы включить ограничение тайм-аута. В интерфейсе можно выбрать единицы измерения: секунды, минуты, часы и дни.
- Максимальный тайм-аут составляет 180 дней.

### Правила отсчёта

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

После входа в процессор тайм-аут продолжает отсчитываться. В него входит фактическое время выполнения узлов, а также время узлов, которые уже перешли в состояние ожидания, например ручная обработка, утверждение, задержка или ожидание внешнего обратного вызова. Тайм-аут не приостанавливается, когда рабочий процесс ожидает действия пользователя.

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

### Обработка после тайм-аута

Если к моменту достижения тайм-аута выполнение ещё не завершено, система прекращает это выполнение:

- Статус в истории выполнения становится «Прервано», а причина завершения отображается как «Тайм-аут».
- Задачи узлов, которые выполняются или ожидают, помечаются как «Прервано».
- Последующие узлы больше не выполняются.
- Если у этого выполнения есть выполняющиеся подпроцессы, они также прерываются вместе с родительским выполнением.

Например:

- Если узел цикла выполняет очень длинный цикл, а обработка внутри цикла занимает много времени, из-за чего весь узел цикла превышает заданный тайм-аут, текущий выполняемый узел цикла и его внутренние узлы будут принудительно завершены, а последующие узлы больше не будут выполняться.
- Если узел ручной обработки или утверждения ожидает долгое время и превышает заданный тайм-аут, текущий ожидающий узел будет принудительно завершён, последующие узлы больше не будут выполняться, а связанные задачи будут отменены.

:::info{title=Примечание}
Настройки тайм-аута являются глобальным ограничением для всего выполнения рабочего процесса, а не тайм-аутом отдельного узла. Если нужно ограничить только время ожидания конкретного узла, например HTTP-запроса или JavaScript-скрипта, используйте собственные настройки тайм-аута этого узла.
:::

:::info{title=Примечание}
Если нужно реализовать бизнес-обработку с ограничением по времени, например «пометить заявку как просроченную, если никто не обработает её в течение 10 минут», обычно следует использовать [узел задержки](../nodes/delay.md) вместе с параллельными ветками для организации последующей обработки. Глобальный тайм-аут напрямую прекращает текущее выполнение, поэтому подходит как защитный механизм, но не для выполнения последующих бизнес-веток.
:::

## Режим выполнения

Рабочие процессы выполняются асинхронно или синхронно, в зависимости от типа триггера, выбранного при их создании. Асинхронный режим означает, что после срабатывания определённого события рабочий процесс попадает в очередь и выполняется поочерёдно фоновым планировщиком. Синхронный режим, напротив, после срабатывания не попадает в очередь планирования, а запускается немедленно и сразу же предоставляет обратную связь по завершении.

События коллекции, события после действия, события пользовательских действий, запланированные события и события утверждения по умолчанию выполняются асинхронно. События до действия по умолчанию выполняются синхронно. При этом события коллекции и события форм поддерживают оба режима, которые можно выбрать при создании рабочего процесса:

![Синхронный режим_Создание синхронного рабочего процесса](https://static-docs.nocobase.com/39bc0821f50c1bde4729c531c6236795.png)

:::info{title=Примечание}
Из-за своей природы синхронные рабочие процессы не могут использовать узлы, которые создают состояние «ожидания», например, «Ручная обработка».
:::

## Автоматическое удаление истории выполнения

Если рабочий процесс срабатывает часто, вы можете настроить автоматическое удаление истории выполнения, чтобы уменьшить беспорядок и снизить нагрузку на хранилище базы данных.

Вы также можете настроить автоматическое удаление истории выполнения для рабочего процесса в диалоговых окнах его создания и редактирования:

![Настройка автоматического удаления истории выполнения](https://static-docs.nocobase.com/b2e4c08e7a01e213069912fe04baa7bd.png)

Автоматическое удаление можно настроить в зависимости от статуса результата выполнения. В большинстве случаев рекомендуется выбирать только статус «Завершено», чтобы сохранить записи о неудачных выполнениях для последующего устранения неполадок.

Рекомендуется не включать автоматическое удаление истории выполнения при отладке рабочего процесса, чтобы вы могли использовать историю для проверки соответствия логики выполнения рабочего процесса вашим ожиданиям.

:::info{title=Примечание}
Удаление истории рабочего процесса не уменьшает счётчик его выполнений.
:::
