Оркестрация рабочих процессов: зависимости, состояния и восстановление

Автор: Ai Flowi · Опубликовано

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

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

Зависимости определяют готовность

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

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

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

Авторская таблица зависимостей и восстановления для учебного обновления записи
ЭтапПредварительное условиеПодтверждение состояния и безопасное восстановление
Проверка входных данныхВходные данные, разрешённые к использованию, и проверенный контракт полей.Успех требует принятого идентификатора и разрешенного значения; некорректные данные не допускаются к записи.
ЗаписьПроверка входных данных успешна, соответствие целевой записи однозначно.Выполнение фиксирует попытку; успех требует подтверждения по контракту операции; тайм-аут может означать неизвестный исход.
Проверка результатаСсылка на попытку записи или подтвержденный результат записи.Сравните нужное поле и идентификатор целевой записи; расхождение остается неразрешенным.
Намерение уведомитьПроверенный бизнес-результат и разрешенная ссылка на получателя.Фиксируйте только намерение последующего действия. Доставка сообщений в этом примере не выполняется.

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

Используйте состояния, сохраняющие неопределенность

«Готов» означает, что этапу разрешено начаться. «Выполняется» означает, что попытка идет. «Успешен» означает, что заданное условие приемки подтверждено. «Неуспешен» означает, что известный исход не соответствует этому условию. «Неизвестен» означает, что имеющиеся подтверждения не позволяют определить, завершилось ли действие. Это предлагаемые состояния приложения, а не дополнительные встроенные поля компонентов.

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

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

Неизвестный исход записи меняет путь зависимостей

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

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

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

Означает ли восстановление автоматический откат?

Сбой позднего этапа не отменяет предыдущую внешнюю запись. Транзакционный откат требует реальной границы транзакции. Компенсирующее действие — новая операция, предназначенная для нейтрализации прежнего эффекта; она может дать сбой и не восстановить первоначальную ситуацию. Нельзя обещать ни то ни другое лишь потому, что рабочий процесс содержит несколько связанных шагов.

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

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

Чтение записи для возобновления отдельных этапов

Иллюстративная запись для возобновления, а не результат выполнения
Ссылка на работу: synthetic-A17-status-change
Версия входных данных: I3
Правило проверки: C2
Проверка входных данных: успешна; подтверждение V9 относится к I3 по C2
Запись: исход неизвестен; попытка W4 относится к A17 и I3
Проверка результата: готова к расследованию; принятого подтверждения нет
Последующее действие: заблокировано; последующее действие для получателя, указанного ссылкой R2, ожидает проверенного результата

Если I3 и C2 остаются входными данными, разрешёнными к использованию, проверку входных данных не нужно повторять лишь из-за прерывания проверки результата. Возобновите расследование, используя связь W4 с A17. Если входные данные меняются на I4, V9 не может разрешать новую запись, поскольку относится только к I3. Сохраняйте W4 как прежнюю работу, отдельно проверяя новый запрос; изменение версии входных данных не должно приводить к тому, что прежняя попытка будет помечена новой версией входных данных.

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

AI Flowi Workflow: композиция и гарантии выполнения

Справочники Run Flow и Sub Flow описывают интерфейсы композиции; их статус для этой схемы координации: документировано в каталоге; Ai Flowi не тестировала в производственной среде.

Для примера конфигурации, а не записи о проведённом тесте выберите существующий процесс только для проверки входных данных через поле flow_name_selected компонента Run Flow и изучите фактически возвращенные подтверждения до проектирования этапа записи. Оставьте восстановление ручным до проверки ошибок вызываемого процесса и контракта хранения состояния. Эта схема задает ожидаемые подтверждения, а не вымышленные результаты выполнения.

Когда достаточно простой последовательности

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

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

Типичные ошибки и дополнительное чтение

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