この記事は、FIXER Advent Calendar 2021 12日目の記事です。
折角のAdvent Calendarですが、ニッチな記事です。
Automate や LogicAppsを組む際、脳死で組んでいると長いフローができてしまうことはよくあります。
しかし、こういったフローは後で見たときに何の処理をしているのかすぐわからないことが多いです。
そんな時に役立つのが親子関係のフローになります。
親子フローとは、簡単に言うとフローを部品化して、分割された複数のフローを連結して、親フローだけを実行するだけですべてのフローを実行するような仕組みです。
勘違いやミスを減らすだけでなく、フローを小分けにすることで汎用的なフローを再利用できるという利点もあります。
さて、親子関係のフローですがPower Automateにはすでに実装されています。
特に拘りがない場合はこちらを参考にすればあまり悩まずに親子フローを作ることができると思います。
つい先日のAdvent Calendar 5日目でも、あおい君がPower Automateの親子フローを扱った記事を書いてくれています。
是非こちらも参考にしてみてください!
FIXER Inc. あおい
今回の記事では、Power Automate × Power Automateの親子フローではなく
親子フローに対応していない
Power Automate × Azure Logic Apps や Azure Logic Apps × Azure Logic Apps でのケースを想定して
HTTPリクエスト→HTTP受信によって親子フローを作っていきます。
目的は連動するフローを作ることですが、Automate(Logic)でHTTPを使うのにも参考になると思います。
フロー自体はとても簡単なものにしています!
では実際に作ってみましょう。
今回作るのは、今日食べたものをメールで送信するフローになります(特に意味はない)
親フロー側からPOSTリクエストで、JSON形式の献立を送り、子フロー側でHTTP受信をトリガーにしてJSONからの情報をメールに組み込んで送信します。
JSONを通して子側に必要な情報を渡せるのもメリットですね!
気持ち的には親フローから順に作りたいですが、子フロー側のURLが子フローを作った時に生まれるため、先に子フローから作ります。
子フロー
1.トリガーとして[組み込み]の中からHTTP要求を選択します
この時点ではURLが出ていませんが、保存時に生成されるため置いておきましょう。
2. [サンプルのペイロードを使用してスキーマを生成する]を押してスキーマの設定を行いましょう。
今回は { "lunch" : "", "dinner" : ""} というstring形のJSONを受信するため、入力して[完了]を押しましょう。
3. スキーマが生成できたら新しいステップで[メールを送信(V2)]を選択し、受信したJSONを使ってメールの文面を作りましょう。
これで子フローは完成です。
フローを保存すると1. で放置していたURLが表示されるようになっているためコピーしておきます。
親フロー
2.1. トリガーとして今回は[手動]を選択します。
そして新しいステップでHTTPを選択します。
2.2. [方法]はPOST, URIに先ほどコピーしたURLを貼り付けます。
ヘッダーには[Content-Type] [application/json]を入力し、本文に2のスキーマとあうようなJSONを書けばOKです。
2.3. 実際にフローを実行してみましょう。
親フロー(HTTPリクエスト側)を実行するだけでメールが届きました!
今回はごく短いフローでしたが、重くて長いフローでもこのようにすればフローを部品化して
再利用したり、可読性を上げることができます。
Azure Logic Apps にもHTTPリクエストや、HTTP要求は存在するため、ぜひ使ってみてください!