20240120_フローの親子関係を一覧化する

3.6K Views

January 20, 24

スライド概要

https://kimamani.connpass.com/event/307657/

profile-image

Microsoft 365、Power Platrform、PowerShellについて調べたことや検証したこと

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Power Automate における フローの親子関係を 一覧化する 気ままに勉強会 #75 気ままになんでもLT会~ 第1回 ~ 2024/1/20 1

2.

自己紹介 • 名前: • 活動場所 わたるふ • ブログ (主な活動場所) ルドルフもわたるふもいろいろあってな • こんなひとです 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.

注意事項 • 解説する内容は私の個人的な見解が含まれています • 内容に誤りがある場合はご指摘をいただけると助かります 3

4.

今回のお話 Power Automate における フローの親子関係 一覧化自体も (「子フローの実行」アクションを使用しているフローと それによって実行される子フローの紐づけ) Power Automate の フローで実現しています。 を一覧化する というお話です。 次のスライドへ 4

5.

フローの親子関係とは何か • 「子フロー」と「親フロー」とは一言で表すと • 子フローとは何らかの目的を達成するために部品として作られたフロー ▪ 目的の例:ファイルの入出力、メール通知、エラー処理 • 親フローとは子フローを呼び出して使用するフロー • フローの種類ではなくて、呼び出す側と呼び出される側をそれぞれ親・子と表現しています • そのため、親フローであり、かつ別のフローから見れば子フローでもあるフローを作ることもできます。 • なぜフローに親子関係を持たせるのか • 最近では、数十または数百のステップを必要とするようなフローが Power Automate で構築されています が、これらのアクションのすべてを _1 つの_フローに詰め込むと、フロー内を移動したりフローを維持し たりするのが困難になる場合があります。 代わりに、いくつかのステップを別の小さなフローに分割し、 これらのフローを必要に応じて呼び出すことをお勧めします。 子フローを呼び出す - Power Platform Release Plan | Microsoft Learn 5

6.

背景・実現したいこと • 背景 • どの親フローがどの子フローを参照しているか、親フローのアクションの設定から 辿ることはできます。 ですが、子フローの設定からは親フローを辿ることはできません。 • それがどんな場面で不便か • 子フローを改修するときにどのフローに影響があるのかが把握しづらい • 標準機能として作った他のフローにちゃんと使われているかチェックできない • 実現したいこと • 子フローを起点として親フローを辿りたい 6

7.

フローの親子関係をCSV形式で一覧出力する仕組みをフローで作りました 7

8.

使用イメージ(1/6) • 例として、図の通りフローを用意しま す。 • 各フローはすべて 「子フローの実行」アクションを 使用しているフロー(= 親フロー) またはそれによって呼び出される フロー(= 子フロー)です。 • 「子フロー02」と「子フロー03」の ように「親」であり、かつ「子」でも あるフローも存在します。 • この親子関係を一覧化します。 (`・ω・´)シャキーン 8

9.

使用イメージ(2/6) 「環境内にあるフローの親子関係を一覧表示」フローを開きます。 これが 一覧化を実現するために 今回作ったフローです。 9

10.

使用イメージ(3/6) フローの一覧出力を行うPower Platform環境を指定したうえで フローを手動実行します。 ドロップダウンで 環境を指定します 手動実行します 10

11.

使用イメージ(4/6) フローの親子関係が取得され、その結果のCSVがフロー実行者のOneDriveに 保存されます。 11

12.

使用イメージ(5/6) フローbotによってCSVの保存先URLがチャットで通知されます。 12

13.

使用イメージ(6/6) このCSVが環境内にあるフローの親子関係を表しています。 13

14.

実現できた この表を使うと子フローを起点として、親フローがどれかを調べ ることができます。 一覧表を「子フロー」をキーとしてフィルターをすると その子フローを呼び出す 「子フローの実行」アクションを使用している 親フローがわかります。 14

15.

仕組みの話 1. フローの親子関係を一覧化する方法の概要 2. アクションの設定値をすべて取得する方法 3. 目的のアクションの設定値を探す方法 4. 2つのフロー間に親子関係があると判定する方法 次スライドから これらを解説します。 15

16.

1.フローの親子関係を一覧する方法の概要 各フローで配置しているアクションの設定値を確認します。 「管理者としてフローの一覧を取得(V2)」で 環境内のフローを一覧取得します。 それぞれのフローで使用している アクションの設定値を確認してします。 16

17.

2.アクションの設定値をすべて取得する方法(1/3) 「フローの取得」アクションを使います。 「フロー取得」アクションの 出力情報である「フロー定義」に トリガーとアクションの設定が含ま れています。 17

18.

2.アクションの設定値をすべて取得する方法(2/3) actionsプロパティがアクションの定義を表しています。 そして 「inputs」が アクションの設定値です。 18

19.

2.アクションの設定値をすべて取得する方法(3/3) 【注意】 「フロー定義」が取得できるアクションは「フローの取得」アクションです。 「フローを管理者として取得」アクションで取得できる情報には「フロー定義」は含まれません。 「管理者として~」がついていると 上位互換のアクションのような 印象を持ちやすいのが罠ですね。 19

20.

3.目的のアクションの設定値を探す方法(1/3) XPath関数を使って検索します。 actionsプロパティ配下を xml関数でxmlに変換したうえで xpath( xml( json( concat( '{', 'actions:', outputs( 'フローの取得' ) ?['body/properties/definition/actions'], '}' ) ) ), '//workflowReferenceName' ) xpathでの検索を行います。 20

21.

3.目的のアクションの設定値を探す方法(2/3) XPath関数の結果は配列で返されます。 要素が2つあるのは XPath関数による検索結果が 2つあることを表しています。 21

22.

3.目的のアクションの設定値を探す方法(3/3) XPath関数の結果から検索対象の文字列を抜き出します。 こうやって 抜き出してきたのが 「子フローの実行」アクションの 参照先フローのIDです。 base64ToString関数で 元のテキストに変換 replace関数で タグを除去 22

23.

4. 2つのフロー間に親子関係があると判定する方法 「子フローの実行」アクションで指定されている参照先ID(workflowReferenceName)と 他のフローが持つID(workflowEntityId)が一致していたら、 その2つのフローは親子関係があると判断できます。 子フロー 親フロー workflowEntityId 「子フローの実行」 (GUID形式) アクション workflowReferenceName (GUID形式) 23

24.

このフローはGitHubで公開しています ご活用ください。ブログでフローの解説も載せています。 • 【概要編】フローの親子関係を一覧化 https://wataruf.hatenablog.com/entry/2024/01/03/000000 • 【解説編】フローの親子関係を一覧化 https://wataruf.hatenablog.com/entry/2024/01/06/000000 24

25.

Power AutomateのフローやTIPSをブログで公開しています • 興味を持っていただけたかたは下記のURLからいらしてください https://wataruf.hatenablog.com 25

26.

フローに関する質問をうけつけています • 匿名でのご質問も可です。 • X(旧Twitter)にマシュマロのリンクを公開しています。 • 回答内容はブログで投稿します。 26

27.

最後に フローの親子関係を一覧化を検証するために フロー定義をフローで取得方法を今回見つけました。 これはまた別のことに応用して 公開したいと考えています。 27