SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

日本語環境でも動作するようになったデスクトップ UI フローを触ってみたメモ

leave a comment

「クイック作成」で作成された Windows VM で UI フローを動作させる で追記しましたが、日本語環境で、デスクトップ UI フローが動作するようになりましたので、触ってみながらメモを残しておきたいと思います。
公式ドキュメントは、プレビュー: UI flows の概要 のツリーから確認できます。
UI フローは、従来のフローの中に RPA のようなアプリケーション操作の自動化をアクションとして指定することができ、フローの中で他の API (コネクタ) と連携した結果を、UI フローの入力として渡し、UI フローの操作の中で取得された出力を、他のアクションに渡しながら操作を行っていけるところがユニークなところなのでしょうかね。

Chrome Extension の手動インストール

デスクトップ UI フローを使用するためには、最新の UI フローセットアップのインストールをするほかに、Edge Chromium または、Chrome に Microsoft Flow の拡張機能 (Extension) をインストールする必要があります。
UI フローセットアップをインストールしても拡張機能がインストールされない場合は次の URL から手動でインストールすることができます。

UI フローを作成する際のポータル

UI フローは、

などから作成することができますが、私の環境では、拡張機能の許可が「https://*.flow.microsoft.com/*」になっていましたので、flow の URL でデスクトップ UI フローを作成しています。
image
 

オンプレミスデータゲートウェイのインストール

テストでフローを実行する場合には、ブラウザを開いている環境から、実行されます。
実際の実行については、テスト実行ではなく通常のフロー経由での実行となるかと思います。
このケースの場合は、Web / デスクトップフローともに、オンプレミスデータゲートウェイ上でフローが実行されることになります。
そのため、オンプレミスゲートウェイ上で実行可能なアプリケーションでレコーディングをする必要があるかと。
レコーディングについてはオンプレミスデータゲートウェイで実行しておいた方が良いのかもしれませんね。
 
私も Gateway Not Found と似たようなはまり方をしたのですが、直近に行われた Supporting on-premises data gateways in non-default environments のアップデートで既定の環境以外でもオンプレミスデータゲートウェイが使用できるようになったようです。
これに起因してかは不明なのですが、オンプレミスデータゲートウェイをインストールする際に、Flow や Power Apps の既定の環境と同じリージョンのゲートウェイを展開しないと、Power BI ではオンプレミスゲートウェイが表示されるが、Flow や Power Apps では表示されないというような事象が発生しました。
リージョンはオンプレミスデータゲートウェイをインストールする際に指定できますので、表示されなくなった場合は、「インストールするリージョン」と「使用している環境のリージョン」がどのような設定になっているかは確認した方が良いかもしれません。
オンプレミスゲートウェイは、Power Apps や Flow のゲートウェイのインストールからダウンロードできるモジュール (GatewayInstall.exe) と「オンプレミスデータゲートウェイをインストールする」からダウンロードできるモジュール (PowerBIGatewayInstaller.exe) の 2 種類がありますが、どちらでもリージョンの指定は可能かと。
(パーソナルモードかどうかの指定ができるのは「PowerBIGatewayInstaller.exe」の方だけですが)
今のオンプレミスゲートウェイのモジュールでは、インストールを進めて、ゲートウェイの名称を指定する画面で、「リージョンの変更」を選択することができるようになっています。
image
私の環境では、この設定が「Southeast Asia」がデフォルトとなっていました。
ただし、この設定ではインストールを完了させても、Power Apps や Flow では「インストールされているゲートウェイはありません。」となってしまい、オンプレミスデータゲートウェイを使用することができませんでした。
image
https://admin.powerplatform.microsoft.com/environments で、既定の環境 (Default) のリージョン (地域) を確認したところ「日本」となっていました。
image
そこで、先度ほどのオンプレミスゲートウェイをインストールする際の「リージョン変更」で「Japan East」を設定してみたところ、ゲートウェイが表示されるようになりました。
image
 
 

UI フローのログファイル

UI フローのログについては次のディレクトリを確認するとよいかと。

  • %PROGRAMDATA%\Microsoft\UI flows
  • %USERPROFILE%\AppData\Local\Microsoft\UI flows

%PROGRAMDATA% 配下にはログファイルが出力あれ、%USERPROFILE% 配下には Scripts の中に、デスクトップ UI フローの作成時のレコーダーで記録されたスクリプトが出力されています。
デスクトップ UI フローでレコーダーで記録された内容は次のようなステップで設定が登録されますが、この時のベースの情報が %USERPROFILE% 配下の Scripts に記録されています。
image
どのような記録がされたのかを確認してみたい場合は、この中の JSON ファイルが参考になるかと。
 

入力と出力の利用

UI フローでは「入力」と「出力」を設定することができます。
入力
「入力」はその名前の通りレコーダーで認識させているアプリケーションの入力値とすることができる情報です。
例として、次のような入力を作ってみます。
image
この入力値は、レコーダーの動作の中で使用することができます。
つまり、「特定のテキストボックスの文字として「入力」の内容を使用することができる」ということです。
image
先ほどは SearchText に「縄神様」を「SearchText」として、登録しましたので、「入力の使用」から「SearchText」を選択した後に検索のテキストボックスをクリックすると、縄神様が自動で入力された状態となります。
image
入力は、UI フローを起動するときに、外部から指定できるパラメーターとしても活用できますので、フローの途中に UI フローを
image
出力
「出力」については、画面上に取得されているテキストをキャプチャするための機能となります。
「出力の取得」をクリックして、キャプチャしたいテキストをクリックすると、その場所の内容がキャプチャされます。
以下の画像は、検索件数のテキストをキャプチャした場合の動作です。
image
この出力に名前を付けて保存することで、「UI フロー内の新たな入力として使用する」ことや、「フローから UI フローを読んだ際の次のアクションの入力として使用する」ことができるようになります。
(メール通知を送信するの本文で使用されている「Results」は UI フローで「出力の取得」で取得された情報となります)
image
 

フローから UI フローを実行する際の経路の把握

UI フローをテストではなく、本格的に実行する際には、通常のフローの中に組み込んで実行を行うことになるかと思います。
image
UI フローを動作させるためのアクションとして、UI flows というカテゴリがあり、この中のアクションとして次の 2 種類があります。

  • Run a UI flow for desktop
  • Run a UI flow for web

image
これらのアクションですが「オンプレミスデータゲートウェイ経由で実行されるアクション」となります。
次の画面が UI Flow 向けの接続の設定となります。
オンプレミスゲートウェイの選択が必須となっていますね。
image
これについては UI フローの実行 にも記載されています。

Power Automate によって UI フローがトリガーされるようにするには、ご使用のデバイスにオンプレミス データ ゲートウェイが必要です。

 
アクションを実行された際の要求は、オンプレミスデータゲートウェイに送信されます。
オンプレミスデータゲートウェイが動作していれば、UI フローを実行できるかというと、それだけでは足りません。
UI フローのアクションが実行されると、オンプレミスゲートウェイに UI フローの実行要求が送信されますが、単純にオンプレミスゲートウェイが起動しているだけですと、次のような「Power Automate UI フロー エージェントに接続できませんでした。"Power Automate UI フロー エージェント" が実行されていることをご確認ください。」のエラーが発生する可能性があります。
image
UI フローを実行するためには、オンプレミスゲートウェイで「Power Automate UI フローエージェント」が実行されている必要があるようです。
「C:\Program Files (x86)\Microsoft UI flows\Microsoft.Flow.RPA.Agent.exe」が上述のフローエージェントとなります。
オンプレミスデータゲートウェイのログは、「C:\Users\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway」配下に保存されているのですが、このディレクトリの「GatewayErrors~.log」を確認してみると「127.0.0.1:4723」との通信が記録されています。
このポートですが、「C:\Program Files (x86)\Microsoft UI flows\Microsoft.Flow.RPA.Agent.exe」が起動するとリスニングするポートとなるようです。
通知領域に UI フローのアイコンが表示されていれば、上記のプログラムは起動しているかと。
image
 
このプログラムですが現時点ではサービスではなく「HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」のようなレジストリ経由での起動となっており、「UI Flow のアプリケーションをインストールしたユーザーでログインした状態」でないと起動していないかと思います。
オンプレミスデータゲートウェイの PowerShell で「Get-NetTCPConnection -LocalPort 4723」を実行して、ポートがリスニングされているかを確認してみるとアプリケーションの起動状況がわかるかと。
アプリケーションの起動ですが、UI flows の接続で指定したユーザーでログインして起動している状態にする必要があります。
(ユーザーの指定は「ドメイン名\ユーザー名」または「コンピューター名\ユーザー名」で指定すれば動作するかと)
アプリケーションを接続で指定した他のユーザーで起動しておいた場合、「呼び出し元ユーザーは、ログオンしているユーザーではありません。」というエラーとなり、UI フローを起動することはできないかと。
image
UI フローを、テスト実行ではなく、フロー内から呼び出す場合は、次の 3 点を満たしておく必要があります。

  • オンプレミスデータゲートウェイをインストールした環境を、Power Apps or Flow の環境に認識させる
  • UI Flow の接続を作成し、ユーザーを指定する
  • オンプレミスデータゲートウェイで接続で指定したユーザーでログインした状態にし、Power Automate UI フローエージェントを起動した状態にする

「オンプレミスデータゲートウェイ上」で「接続に指定したユーザーがログオンしている状態」で「UI フローに設定した動作が実行される」ため、オンプレミスデータゲートウェイで該当のユーザーでログインした状態で、ポータルから UI フローのテスト実行が正常に動作することを最初に確認しておいた方がよさそうですね。
正常に動作しない場合は、次の場所にログが保存されていることを覚えておくこともポイントかと。

  • C:\Users\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway
  • %PROGRAMDATA%\Microsoft\UI flows
  • %USERPROFILE%\AppData\Local\Microsoft\UI flows
Share

Written by Masayuki.Ozawa

12月 14th, 2019 at 11:44 pm

Leave a Reply