Дочерние потоки в Power Automate: модульное построение процессов
Как с помощью дочерних потоков разбить крупные процессы Power Automate на переиспользуемые подшаги и упростить их обслуживание.
Тот, кто собирает процесс из десятков или сотен действий в одном-единственном потоке Power Automate, рано или поздно замечает, насколько запутанным это становится: любое изменение требует долгой прокрутки, ошибки трудно локализовать, а промежуточный шаг, который на самом деле нужен в нескольких местах, вдруг существует трижды в чуть отличающихся вариантах. Дочерние потоки решают именно эту проблему. Родительский поток вызывает один или несколько дочерних потоков, передаёт им входные данные, а затем обрабатывает их возвращаемые значения — подобно тому, как функция в обычном коде вызывается из более крупной программы.
Для компаний, использующих Power Automate в продуктивной работе, этот подход особенно важен, когда одна и та же логика встречается в нескольких процессах — например, определение утверждающих лиц, форматирование сумм или протоколирование ошибок. Вместо того чтобы заново создавать эту логику в каждом потоке, она создаётся один раз в виде дочернего потока и вызывается всеми подходящими родительскими потоками. Если логика меняется, достаточно одной правки в одном месте.
Что такое дочерний поток?
Дочерний поток — это совершенно обычный облачный поток с одной особенностью: он запускается не через классический триггер, например по расписанию или при появлении нового элемента в списке, а напрямую другим потоком. Microsoft описывает в официальной документации Создание дочерних потоков, что для этого требуется решение как минимум с двумя потоками:
- дочерний поток, вложенный в родительский поток, с более мелкими задачами, которые фактически выполняются
- родительский поток, который может иметь любой триггер и вызывает дочерний поток в нужном месте
Родительский поток может содержать несколько разных дочерних потоков — в зависимости от того, какая подзадача выполняется в данный момент. Важно, чтобы родительский и дочерний потоки создавались непосредственно в одном и том же решении, так как только в этом случае Power Automate автоматически связывает их при последующем экспорте и импорте, без необходимости вручную поддерживать актуальность URL-адресов.
Почему модуляризация окупается
Microsoft обобщает преимущества в Рекомендациях по повторно используемому коду с дочерними потоками, и на практике эти преимущества проявляются быстро:
- Модульность: повторно используемые блоки можно встраивать в разные процессы, не копируя логику.
- Удобство обслуживания: небольшие, сфокусированные потоки легче читать, а ошибку можно найти именно в том блоке, который её вызвал.
- Масштабируемость: новые требования реализуются как изменение одного дочернего потока, а не переработка всего процесса.
- Точный контроль: благодаря чётко определённым входным и выходным данным вы точно контролируете, какие данные передаются между родительским и дочерним потоком.
- Командная работа: несколько человек могут одновременно работать над разными дочерними потоками, не мешая друг другу в одном и том же огромном потоке.
Таким образом, каждый дочерний поток становится цифровым сотрудником с чётко очерченной зоной ответственности, который надёжно выполняет ровно одну задачу и при необходимости может быть протестирован, заменён или расширен по отдельности.
Шаг за шагом: создание дочернего потока
Шаг 1: создание решения и потока с мгновенным запуском
Откройте в Power Automate существующее решение или создайте новое. В нём через пункт Создать > Автоматизация > Облачный поток > Мгновенно создайте новый поток и выберите в качестве триггера Запускать поток вручную. Позже как дочерний поток можно вызвать только поток с этим триггером, триггером Power Apps или триггером HTTP-запроса.
Шаг 2: определение входных данных
Через пункт Добавить входные данные вы определяете, какие значения родительский поток должен передавать дочернему потоку, например имя контакта или номер заказа. Позже эти входные данные появляются в родительском потоке как динамические поля, как только вы выбираете там дочерний поток.
Шаг 3: построение логики и возврат результата
Постройте внутри дочернего потока собственно задачу — будь то запись в Dataverse, вычисление или сверка со списком SharePoint. В конце вы возвращаете результат через действие Ответ для Power App или потока либо, в премиум-коннекторе, через Ответ обратно в родительский поток. Здесь также можно определить любое количество выходных значений.
Шаг 4: внедрение подключений
Если дочерний поток использует другие коннекторы, помимо встроенных действий или Dataverse, на странице свойств в разделе Только пользователи с правом выполнения для каждого подключения нужно выбрать Использовать это подключение вместо Предоставлено пользователем только с правом выполнения. Без этого шага вызов завершается ошибкой, поскольку дочерние потоки поддерживают только встроенные подключения и в настоящее время не могут наследовать подключения родительского потока.
Подключение родительского потока
В родительском потоке добавьте в нужном месте действие Выполнить дочерний поток из коннектора Flows и выберите ранее созданный дочерний поток. При этом отображаются только те потоки, к которым у вас есть доступ и которые находятся в том же решении. После выбора появляются поля ввода, определённые в дочернем потоке, а после вызова выходные данные становятся доступны как динамическое содержимое для последующих шагов. Родительский поток при этом ожидает завершения дочернего потока — в течение всего срока жизни потока, то есть одного года для встроенных подключений и Dataverse или 30 дней для всех остальных коннекторов.
Практический пример: определение утверждающих лиц из групп SharePoint
Пример из документации Microsoft хорошо иллюстрирует этот подход: компании требуются согласования для проектных предложений, заявлений на отпуск и авансовых отчётов, причём ответственные лица ведутся в разных группах SharePoint. Вместо того чтобы заново реализовывать запрос соответствующей группы в трёх отдельных потоках, создаётся один-единственный дочерний поток, который запрашивает нужную группу SharePoint и возвращает список утверждающих лиц. Родительский поток для проектных предложений, поток для заявлений на отпуск и поток для авансовых отчётов затем все вызывают один и тот же дочерний поток и передают лишь то, какая группа имеется в виду в каждом случае. Если позже структура групп SharePoint изменится, достаточно скорректировать только дочерний поток — все три процесса автоматически выиграют от этого.
Ограничения и подводные камни
Дочерние потоки не работают сами по себе и связаны с несколькими фиксированными правилами, которые стоит знать, прежде чем строить на них более крупные процессы:
- Родительский и дочерний поток должны создаваться непосредственно в одном и том же решении. Если вы позже импортируете уже существующий поток в решение, связь между ними может, по данным Microsoft, привести к неожиданным результатам.
- В настоящее время подключения нельзя передать от родительского потока к дочернему — каждое подключение в дочернем потоке должно быть встроено непосредственно в него.
- Дочернему потоку обязательно требуется ручной триггер, триггер Power Apps или триггер HTTP-запроса; другие триггеры для этой цели недоступны.
- При очень большом количестве дочерних потоков в разных решениях также стоит обратить внимание на лицензирование — например, на группы потоков, которые позволяют распределять одну лицензию Process между несколькими потоками и выполнениями их дочерних потоков.
Вы сами решаете, насколько детально проводить декомпозицию: не каждой трёхшаговой операции нужен собственный дочерний поток, но как только задача встречается более чем в одном месте или поток становится запутанным, разделение быстро окупается. Тем, кто хочет модуляризировать существующие процессы Power Automate с чёткой структурой и аккуратным управлением решениями, окажет поддержку консалтинг NordFlux по Power Automate.
Часто задаваемые вопросы
В чём разница между родительским и дочерним потоком?
Родительский поток может иметь любой триггер и управляет процессом в целом. Дочерний поток берёт на себя одну чётко ограниченную подзадачу, получает для этого входные данные от родительского потока и в конце возвращает результат — подобно функции в программе.
Какие триггеры может использовать дочерний поток?
Для дочерних потоков подходят только три триггера: ручной запуск потока, триггер Power Apps и триггер входящих HTTP-запросов в премиум-коннекторе. Триггер по расписанию (Recurrence) или триггер SharePoint для этой цели не работают.
Могу ли я повторно использовать в дочернем потоке существующее подключение из родительского потока?
Нет, в настоящее время подключения нельзя передавать от родительского потока к дочернему. Каждый коннектор, используемый в дочернем потоке, должен быть сохранён там как встроенное подключение через настройку «только пользователь с правом выполнения».
Сколько времени родительский поток ждёт ответа от дочернего потока?
Родительский поток приостанавливается до завершения дочернего потока, максимум на весь срок жизни потока. Это один год для потоков со встроенными подключениями и Dataverse и 30 дней для всех остальных коннекторов.
Должны ли родительский и дочерний поток находиться в одном и том же решении?
Да, Microsoft прямо рекомендует создавать оба потока непосредственно в одном и том же решении. Только так при экспорте в другую среду они автоматически корректно связываются друг с другом, без необходимости вручную корректировать URL-адреса.
Источники: Microsoft Learn — Создание дочерних потоков, Microsoft Learn — Создание повторно используемого кода для дочерних потоков
NordFlux UG (haftungsbeschränkt)
NordFlux создаёт цифровых сотрудников для организаций: автоматизации и КИ-агентов, которые берут на себя повторяющуюся работу. Вы сохраняете контроль.
Конкретные вопросы по автоматизации или КИ?
В рамках бесплатного первичного анализа мы напрямую обсудим Ваш случай. Без обязательств.