2.9K Views
January 20, 24
スライド概要
https://kimamani.connpass.com/event/307657/
Microsoft 365、Power Platrform、PowerShellについて調べたことや検証したこと
Power Automate における フローの親子関係を 一覧化する 気ままに勉強会 #75 気ままになんでもLT会~ 第1回 ~ 2024/1/20 1
自己紹介 • 名前: • 活動場所 わたるふ • ブログ (主な活動場所) ルドルフもわたるふもいろいろあってな • こんなひとです https://wataruf.hatenablog.com • SharePoint Server 2007 から お仕事でMicrosoft 製品に関わる • PowerShell が好き https://marshmallow- • Microsoft Teams が好き qa.com/wataruf01?utm_medium=url_text&utm_source=promotion • 今はPower Automate に夢中 • • マシュマロ (フローについて質問を受け付けています) 過去の登壇資料 https://www.docswell.com/user/wataruf01 • 活動内容 • 調査・検証したことなどをブログで解説しています • 開発したもの(Power Automate のフロー、PowerShellの ソースコード)をGitHubで公開しています • X(旧 Twitter) https://twitter.com/wataruf01 • GitHub https://github.com/wataruf01 • Microsoft MVP for Business Applications Microsoft MVP プロフィールページ https://mvp.microsoft.com/ja-jp/PublicProfile/5005227?fullName=Wataru%20Fukai (2023/4~) 2
注意事項 • 解説する内容は私の個人的な見解が含まれています • 内容に誤りがある場合はご指摘をいただけると助かります 3
今回のお話 Power Automate における フローの親子関係 一覧化自体も (「子フローの実行」アクションを使用しているフローと それによって実行される子フローの紐づけ) Power Automate の フローで実現しています。 を一覧化する というお話です。 次のスライドへ 4
フローの親子関係とは何か • 「子フロー」と「親フロー」とは一言で表すと • 子フローとは何らかの目的を達成するために部品として作られたフロー ▪ 目的の例:ファイルの入出力、メール通知、エラー処理 • 親フローとは子フローを呼び出して使用するフロー • フローの種類ではなくて、呼び出す側と呼び出される側をそれぞれ親・子と表現しています • そのため、親フローであり、かつ別のフローから見れば子フローでもあるフローを作ることもできます。 • なぜフローに親子関係を持たせるのか • 最近では、数十または数百のステップを必要とするようなフローが Power Automate で構築されています が、これらのアクションのすべてを _1 つの_フローに詰め込むと、フロー内を移動したりフローを維持し たりするのが困難になる場合があります。 代わりに、いくつかのステップを別の小さなフローに分割し、 これらのフローを必要に応じて呼び出すことをお勧めします。 子フローを呼び出す - Power Platform Release Plan | Microsoft Learn 5
背景・実現したいこと • 背景 • どの親フローがどの子フローを参照しているか、親フローのアクションの設定から 辿ることはできます。 ですが、子フローの設定からは親フローを辿ることはできません。 • それがどんな場面で不便か • 子フローを改修するときにどのフローに影響があるのかが把握しづらい • 標準機能として作った他のフローにちゃんと使われているかチェックできない • 実現したいこと • 子フローを起点として親フローを辿りたい 6
フローの親子関係をCSV形式で一覧出力する仕組みをフローで作りました 7
使用イメージ(1/6) • 例として、図の通りフローを用意しま す。 • 各フローはすべて 「子フローの実行」アクションを 使用しているフロー(= 親フロー) またはそれによって呼び出される フロー(= 子フロー)です。 • 「子フロー02」と「子フロー03」の ように「親」であり、かつ「子」でも あるフローも存在します。 • この親子関係を一覧化します。 (`・ω・´)シャキーン 8
使用イメージ(2/6) 「環境内にあるフローの親子関係を一覧表示」フローを開きます。 これが 一覧化を実現するために 今回作ったフローです。 9
使用イメージ(3/6) フローの一覧出力を行うPower Platform環境を指定したうえで フローを手動実行します。 ドロップダウンで 環境を指定します 手動実行します 10
使用イメージ(4/6) フローの親子関係が取得され、その結果のCSVがフロー実行者のOneDriveに 保存されます。 11
使用イメージ(5/6) フローbotによってCSVの保存先URLがチャットで通知されます。 12
使用イメージ(6/6) このCSVが環境内にあるフローの親子関係を表しています。 13
実現できた この表を使うと子フローを起点として、親フローがどれかを調べ ることができます。 一覧表を「子フロー」をキーとしてフィルターをすると その子フローを呼び出す 「子フローの実行」アクションを使用している 親フローがわかります。 14
仕組みの話 1. フローの親子関係を一覧化する方法の概要 2. アクションの設定値をすべて取得する方法 3. 目的のアクションの設定値を探す方法 4. 2つのフロー間に親子関係があると判定する方法 次スライドから これらを解説します。 15
1.フローの親子関係を一覧する方法の概要 各フローで配置しているアクションの設定値を確認します。 「管理者としてフローの一覧を取得(V2)」で 環境内のフローを一覧取得します。 それぞれのフローで使用している アクションの設定値を確認してします。 16
2.アクションの設定値をすべて取得する方法(1/3) 「フローの取得」アクションを使います。 「フロー取得」アクションの 出力情報である「フロー定義」に トリガーとアクションの設定が含ま れています。 17
2.アクションの設定値をすべて取得する方法(2/3) actionsプロパティがアクションの定義を表しています。 そして 「inputs」が アクションの設定値です。 18
2.アクションの設定値をすべて取得する方法(3/3) 【注意】 「フロー定義」が取得できるアクションは「フローの取得」アクションです。 「フローを管理者として取得」アクションで取得できる情報には「フロー定義」は含まれません。 「管理者として~」がついていると 上位互換のアクションのような 印象を持ちやすいのが罠ですね。 19
3.目的のアクションの設定値を探す方法(1/3) XPath関数を使って検索します。 actionsプロパティ配下を xml関数でxmlに変換したうえで xpath( xml( json( concat( '{', 'actions:', outputs( 'フローの取得' ) ?['body/properties/definition/actions'], '}' ) ) ), '//workflowReferenceName' ) xpathでの検索を行います。 20
3.目的のアクションの設定値を探す方法(2/3) XPath関数の結果は配列で返されます。 要素が2つあるのは XPath関数による検索結果が 2つあることを表しています。 21
3.目的のアクションの設定値を探す方法(3/3) XPath関数の結果から検索対象の文字列を抜き出します。 こうやって 抜き出してきたのが 「子フローの実行」アクションの 参照先フローのIDです。 base64ToString関数で 元のテキストに変換 replace関数で タグを除去 22
4. 2つのフロー間に親子関係があると判定する方法 「子フローの実行」アクションで指定されている参照先ID(workflowReferenceName)と 他のフローが持つID(workflowEntityId)が一致していたら、 その2つのフローは親子関係があると判断できます。 子フロー 親フロー workflowEntityId 「子フローの実行」 (GUID形式) アクション workflowReferenceName (GUID形式) 23
このフローはGitHubで公開しています ご活用ください。ブログでフローの解説も載せています。 • 【概要編】フローの親子関係を一覧化 https://wataruf.hatenablog.com/entry/2024/01/03/000000 • 【解説編】フローの親子関係を一覧化 https://wataruf.hatenablog.com/entry/2024/01/06/000000 24
Power AutomateのフローやTIPSをブログで公開しています • 興味を持っていただけたかたは下記のURLからいらしてください https://wataruf.hatenablog.com 25
フローに関する質問をうけつけています • 匿名でのご質問も可です。 • X(旧Twitter)にマシュマロのリンクを公開しています。 • 回答内容はブログで投稿します。 26
最後に フローの親子関係を一覧化を検証するために フロー定義をフローで取得方法を今回見つけました。 これはまた別のことに応用して 公開したいと考えています。 27
28