Power Automateで共通機能の関数化を実現する「子フロー」について詳しく調べたので、その内容をメモ。
子フロー(Child Flow)
Power Automateにおける子フローとは、他のフロー(親フロー)から呼び出すことができるフローのことで、共通機能を子フロー化することで、開発時間の短縮が見込める。
フローを子フローとして扱うには、以下の3つの条件を満たす必要がある。
- フローがソリューションに入っていること
- トリガーが手動トリガーまたはPower Apps(V2)トリガーであること
- 「Power Appsまたはフローに応答」アクション、または「応答」アクションが呼び出されること
まずは基本的な使い方から紹介。
子フローの基本的な使い方
今回は例として、引数として「名前」を受け取り、戻り値として「挨拶」を返す子フローを作成する。
子フローの構築
まずは子フローの構築から。ソリューション内で「インスタントフロー(すぐに)」を選択し、


手動トリガーを選択し、フローを作成する。


[入力の追加]から、引数として受け取る「name」を追加し、


「Power Appsまたはフローに応答する」アクションを追加。


[出力追加]から、受け取った名前の頭にHelloを付けた文字列を設定し、子フローの構築は完了。


子フローを呼び出す
作成したフローを親フロー(呼び出す側のフロー)から使ってみる。新しいフローを作成し、


アクション「子フローの実行」を追加する。


[子フロー]に先ほど作成したフローを選択して、


引数[name]に適当な文字列を入れて、呼び出す側のフローの構築は完了。
※戻り値は[動的なコンテンツ]から使用可能。

※戻り値は[動的なコンテンツ]から使用可能。

親フローを実行すると、子フローが実行されて「挨拶」が戻ってきていることがわかる。


トリガーは「Power Apps(V2)」トリガーでもOK
子フローのトリガーは「Power Apps(V2)トリガーでもOKで、


問題なく親フローから呼び出すことができる。




戻り値の設定は「応答」アクションでもOK
戻り値の設定は「応答」アクションでもOKで、


状態コード(200は成功)を設定し、戻り値にJSONを設定すれば、


親フローから呼び出すことができる。


子フローを作る際の注意点
最後に子フローを作る際の注意点を解説。
応答アクションは必須
画像のように、子フローから「Power Appsまたはフローに応答」アクションを削除すると、


親フローから呼び出した際にエラーが発生する。


ということで、子フローには「応答」系のアクションは必須。
親フロー自身の呼び出しは不可(再帰処理は不可)
親フローから子フローとして自分自身を呼び出すことはできない。


よって子フローを再帰処理のように使うことはできない
成功時と失敗時で異なる応答を返したい場合は「応答」アクションを使用
「Power Appsまたはフローに応答」アクションを使用し、成功時と失敗時で異なる出力の形式にすると保存時にエラーが発生する。
※エラー:The schema definition for action with status code ‘200’ is not valid. The schema definitions for actions with same status code must match.Upgrade

※エラー:The schema definition for action with status code ‘200’ is not valid. The schema definitions for actions with same status code must match.Upgrade

こんなときは「応答」アクションを使用し、異なる状態コードを割り当てると、本文の形式が異なっても保存できる。


コメント
子フローを呼び出すためには、呼び出される子フロー、それを呼び出す親フロー、共に、ソリューションの中で作成されている必要があります。
ドキュメントが更新されており、その点について記載が加わっています。
「子フローの作成」
https://docs.microsoft.com/ja-jp/power-automate/create-child-flows
Takuya Hiroseさん
コメントありがとうございます!
関数化できることがわかり、作業がめちゃめちゃ捗りました!!
本当にありがとうございます!