Dataverse Workflows против Cloud Flows (FAQ)
Потоки бизнес-процессов, классические workflow и Cloud Flows в Dataverse: разница согласно документации Microsoft и когда какой инструмент нужен.
Как с помощью дочерних потоков разбить крупные процессы Power Automate на переиспользуемые подшаги и упростить их обслуживание.
Тот, кто собирает процесс из десятков или сотен действий в одном-единственном потоке Power Automate, рано или поздно замечает, насколько запутанным это становится: любое изменение требует долгой прокрутки, ошибки трудно локализовать, а промежуточный шаг, который на самом деле нужен в нескольких местах, вдруг существует трижды в чуть отличающихся вариантах. Дочерние потоки решают именно эту проблему. Родительский поток вызывает один или несколько дочерних потоков, передаёт им входные данные, а затем обрабатывает их возвращаемые значения — подобно тому, как функция в обычном коде вызывается из более крупной программы.
Для компаний, использующих Power Automate в продуктивной работе, этот подход особенно важен, когда одна и та же логика встречается в нескольких процессах — например, определение утверждающих лиц, форматирование сумм или протоколирование ошибок. Вместо того чтобы заново создавать эту логику в каждом потоке, она создаётся один раз в виде дочернего потока и вызывается всеми подходящими родительскими потоками. Если логика меняется, достаточно одной правки в одном месте.
Дочерний поток — это совершенно обычный облачный поток с одной особенностью: он запускается не через классический триггер, например по расписанию или при появлении нового элемента в списке, а напрямую другим потоком. Microsoft описывает в официальной документации Создание дочерних потоков, что для этого требуется решение как минимум с двумя потоками:
Родительский поток может содержать несколько разных дочерних потоков — в зависимости от того, какая подзадача выполняется в данный момент. Важно, чтобы родительский и дочерний потоки создавались непосредственно в одном и том же решении, так как только в этом случае Power Automate автоматически связывает их при последующем экспорте и импорте, без необходимости вручную поддерживать актуальность URL-адресов.
Microsoft обобщает преимущества в Рекомендациях по повторно используемому коду с дочерними потоками, и на практике эти преимущества проявляются быстро:
Таким образом, каждый дочерний поток становится цифровым сотрудником с чётко очерченной зоной ответственности, который надёжно выполняет ровно одну задачу и при необходимости может быть протестирован, заменён или расширен по отдельности.
Откройте в Power Automate существующее решение или создайте новое. В нём через пункт Создать > Автоматизация > Облачный поток > Мгновенно создайте новый поток и выберите в качестве триггера Запускать поток вручную. Позже как дочерний поток можно вызвать только поток с этим триггером, триггером Power Apps или триггером HTTP-запроса.
Через пункт Добавить входные данные вы определяете, какие значения родительский поток должен передавать дочернему потоку, например имя контакта или номер заказа. Позже эти входные данные появляются в родительском потоке как динамические поля, как только вы выбираете там дочерний поток.
Постройте внутри дочернего потока собственно задачу — будь то запись в Dataverse, вычисление или сверка со списком SharePoint. В конце вы возвращаете результат через действие Ответ для Power App или потока либо, в премиум-коннекторе, через Ответ обратно в родительский поток. Здесь также можно определить любое количество выходных значений.
Если дочерний поток использует другие коннекторы, помимо встроенных действий или Dataverse, на странице свойств в разделе Только пользователи с правом выполнения для каждого подключения нужно выбрать Использовать это подключение вместо Предоставлено пользователем только с правом выполнения. Без этого шага вызов завершается ошибкой, поскольку дочерние потоки поддерживают только встроенные подключения и в настоящее время не могут наследовать подключения родительского потока.
В родительском потоке добавьте в нужном месте действие Выполнить дочерний поток из коннектора Flows и выберите ранее созданный дочерний поток. При этом отображаются только те потоки, к которым у вас есть доступ и которые находятся в том же решении. После выбора появляются поля ввода, определённые в дочернем потоке, а после вызова выходные данные становятся доступны как динамическое содержимое для последующих шагов. Родительский поток при этом ожидает завершения дочернего потока — в течение всего срока жизни потока, то есть одного года для встроенных подключений и Dataverse или 30 дней для всех остальных коннекторов.
Пример из документации Microsoft хорошо иллюстрирует этот подход: компании требуются согласования для проектных предложений, заявлений на отпуск и авансовых отчётов, причём ответственные лица ведутся в разных группах SharePoint. Вместо того чтобы заново реализовывать запрос соответствующей группы в трёх отдельных потоках, создаётся один-единственный дочерний поток, который запрашивает нужную группу SharePoint и возвращает список утверждающих лиц. Родительский поток для проектных предложений, поток для заявлений на отпуск и поток для авансовых отчётов затем все вызывают один и тот же дочерний поток и передают лишь то, какая группа имеется в виду в каждом случае. Если позже структура групп SharePoint изменится, достаточно скорректировать только дочерний поток — все три процесса автоматически выиграют от этого.
Дочерние потоки не работают сами по себе и связаны с несколькими фиксированными правилами, которые стоит знать, прежде чем строить на них более крупные процессы:
Вы сами решаете, насколько детально проводить декомпозицию: не каждой трёхшаговой операции нужен собственный дочерний поток, но как только задача встречается более чем в одном месте или поток становится запутанным, разделение быстро окупается. Тем, кто хочет модуляризировать существующие процессы Power Automate с чёткой структурой и аккуратным управлением решениями, окажет поддержку консалтинг NordFlux по Power Automate.
Родительский поток может иметь любой триггер и управляет процессом в целом. Дочерний поток берёт на себя одну чётко ограниченную подзадачу, получает для этого входные данные от родительского потока и в конце возвращает результат — подобно функции в программе.
Для дочерних потоков подходят только три триггера: ручной запуск потока, триггер Power Apps и триггер входящих HTTP-запросов в премиум-коннекторе. Триггер по расписанию (Recurrence) или триггер SharePoint для этой цели не работают.
Нет, в настоящее время подключения нельзя передавать от родительского потока к дочернему. Каждый коннектор, используемый в дочернем потоке, должен быть сохранён там как встроенное подключение через настройку «только пользователь с правом выполнения».
Родительский поток приостанавливается до завершения дочернего потока, максимум на весь срок жизни потока. Это один год для потоков со встроенными подключениями и Dataverse и 30 дней для всех остальных коннекторов.
Да, Microsoft прямо рекомендует создавать оба потока непосредственно в одном и том же решении. Только так при экспорте в другую среду они автоматически корректно связываются друг с другом, без необходимости вручную корректировать URL-адреса.
Источники: Microsoft Learn — Создание дочерних потоков, Microsoft Learn — Создание повторно используемого кода для дочерних потоков
NordFlux создаёт цифровых сотрудников для организаций: автоматизации и КИ-агентов, которые берут на себя повторяющуюся работу. Вы сохраняете контроль.
Потоки бизнес-процессов, классические workflow и Cloud Flows в Dataverse: разница согласно документации Microsoft и когда какой инструмент нужен.
Как надежно резервировать и восстанавливать потоки Power Automate с помощью экспорта решений, согласно документации Microsoft.
Соглашения об именовании для Flow, Trigger, действий и подключений в Power Automate: основа управления для чистых, удобных в сопровождении автоматизаций.
Дочерние потоки делают повторно используемыми сложные процессы, например определение утверждающих из групп SharePoint, но разделение на родительский и дочерний требует тщательного планирования, чтобы входы и выходы не стали источником ошибок. NordFlux выстраивает вашу структуру Power Automate модульно, чтобы подпроцессы оставались поддерживаемыми и могли использоваться повторно в нескольких потоках. На первой встрече мы рассмотрим ваши существующие потоки и покажем потенциал модуляризации.