# План выполнения (История)

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

![Статус плана выполнения](https://static-docs.nocobase.com/d4440d92ccafac6fac85da4415bb2a26.png)

Когда все узлы в основной ветке рабочего процесса завершаются со статусом «Выполнено» и достигают конечной точки процесса, весь план выполнения завершается со статусом «Выполнено». Если узел в основной ветке рабочего процесса принимает один из конечных статусов, таких как «Сбой», «Ошибка», «Отменено» или «Отклонено», весь план выполнения **преждевременно завершается** с соответствующим статусом. Когда узел в основной ветке рабочего процесса находится в статусе «Ожидание», весь план выполнения приостанавливается, но при этом отображается статус «Выполняется» до тех пор, пока ожидающий узел не будет возобновлен. Различные типы узлов обрабатывают состояние ожидания по-разному. Например, узел ручной обработки требует ожидания ручного вмешательства, а узел задержки — ожидания истечения заданного времени.

Статусы плана выполнения представлены в таблице ниже:

| Статус       | Соответствующий статус последнего выполненного узла в основной ветке | Значение                                                               |
| ------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------------- |
| В очереди    | -                                                                  | Рабочий процесс запущен, план выполнения создан и ожидает в очереди планировщика. |
| Выполняется  | Ожидание                                                           | Узел требует паузы, ожидая дальнейшего ввода или обратного вызова для продолжения. |
| Выполнено    | Выполнено                                                          | Проблем не обнаружено, все узлы выполнены последовательно, как и ожидалось. |
| Сбой         | Сбой                                                               | Сбой произошел из-за несоответствия конфигурации узла.                 |
| Ошибка       | Ошибка                                                             | Узел столкнулся с необработанной программной ошибкой и преждевременно завершился. |
| Отменено     | Отменено                                                           | Ожидающий узел был отменен извне администратором рабочего процесса, что привело к преждевременному завершению. |
| Отклонено    | Отклонено                                                          | В узле ручной обработки было получено ручное отклонение, дальнейшее выполнение процесса невозможно. |

В примере [Быстрый старт](../getting-started.md) мы уже знаем, что просмотр деталей истории выполнения рабочего процесса позволяет проверить, нормально ли выполнялись все узлы в процессе выполнения, а также статус выполнения и данные результата каждого выполненного узла. В некоторых сложных рабочих процессах и узлах узел может иметь несколько результатов, например, результаты циклического узла:

![Результаты узла из нескольких выполнений](https://static-docs.nocobase.com/bbda259fa2ddf62b0fc0f982efbedae9.png)

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

Статус «Выполняется» означает лишь, что план выполнения запущен и обычно приостановлен из-за состояния ожидания внутреннего узла. Это не означает, что данный план выполнения занял ресурсы выполнения в начале очереди. Следовательно, при наличии плана выполнения в статусе «Выполняется» другие планы выполнения в статусе «В очереди» все еще могут быть запланированы к запуску.
:::

## Статус выполнения узла

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

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

| Статус    | Конечный статус | Преждевременное завершение | Значение                                                               |
| --------- | :-------------: | :------------------------: | ---------------------------------------------------------------------- |
| Ожидание  |       Нет       |            Нет             | Узел требует паузы, ожидая дальнейшего ввода или обратного вызова для продолжения. |
| Выполнено |       Да        |            Нет             | Проблем не обнаружено, выполнение успешно, процесс продолжается к следующему узлу до завершения. |
| Сбой      |       Да        |            Да              | Сбой произошел из-за несоответствия конфигурации узла.                 |
| Ошибка    |       Да        |            Да              | Узел столкнулся с необработанной программной ошибкой и преждевременно завершился. |
| Отменено  |       Да        |            Да              | Ожидающий узел был отменен извне администратором рабочего процесса, что привело к преждевременному завершению. |
| Отклонено |       Да        |            Да              | В узле ручной обработки было получено ручное отклонение, дальнейшее выполнение процесса невозможно. |

За исключением статуса «Ожидание», все остальные статусы являются конечными для выполнения узла. Только если конечный статус — «Выполнено», процесс будет продолжен; в противном случае выполнение всего рабочего процесса будет преждевременно завершено. Когда узел находится в ветке потока (параллельная ветка, условное решение, цикл и т. д.), конечный статус, полученный в результате выполнения узла, будет обработан узлом, инициировавшим ветку, и это, в свою очередь, определяет дальнейшее движение всего рабочего процесса.

Например, если мы используем условный узел в режиме «Продолжить, если "Да"», и во время выполнения результат оказывается «Нет», весь рабочий процесс будет преждевременно завершен со статусом «Сбой», и последующие узлы не будут выполняться, как показано на рисунке ниже:

![Сбой выполнения узла](https://static-docs.nocobase.com/993aecfa1465894bb574444f0a44313e.png)

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