Integracja WinAutomation z UI flows
Table of Contents
W moim poprzednim poście Pierwsze kroki w pracy z WinAutomation i UI flows przeprowadziłem Cię przez proces instalacji i rozwiązywania problemów z WinAutomation. Ponieważ jednak narzędzie to stało się częścią środowiska RPA Microsoftu, ważne pytanie brzmi: jak zintegrować go z przepływami UI flows i istniejącymi procesami Power Automate? Pokażę Ci moje rozwiązanie.
Uruchamianie WinAutomation z UI flows
Według Microsoft Docs (źródło: https://docs.microsoft.com/en-us/power-automate/ui-flows/create-processes), najlepszym sposobem na uruchomienie procesu WinAutomation jest wywołanie konsoli wiersza poleceń (CMD) za pomocą przepływu UI flows, a następnie użycie polecenia, aby uruchomić proces WinAutomation. Polecenie powinno być zgodne z poniższym wzorem:
"%programfiles%\WinAutomation\WinAutomationController.exe" /start "/My Processes/MyAutomationName"
Gdzie /My Processes/MyAutomationName
to po prostu lokalizacja Twojego procesu wewnątrz struktury folderów procesów. W poniższym przykładzie:
polecenie uruchomienia przepływu będzie:
"%programfiles%\WinAutomation\WinAutomationController.exe" /start "/My Processes/Tests/Contoso Recorder"
Przekazywanie parametrów wejściowych
Aby przekazać parametry wejściowe za ścieżką wykonania, należy dodać listę wartości, otoczoną cudzysłowami i oddzielonymi spacjami, np.:
"%programfiles%\WinAutomation\WinAutomationController.exe" /start "/My Processes/Tests/Contoso Recorder" "parametr 1" "parametr 2" "1244" "parametr 3"
Następnie w procesie użytkownik powinien zastosować akcję: Get Command Line Arguments, które utworzą tabelę wartości, które później można przypisać do zmiennych lub użyć w procesie:
Możesz później wywołać te wartości, używając poniższego wyrażenia:
%CommandLineArguments[0]%
Gdzie [0] jest indeksem argumentu w tabeli parametrów z wiersza poleceń, np.:
Ten sposób jest bardzo niezawodną metodą uruchamiania procesu WinAutomation. Polecam go najbardziej.
Jak przekazać wynik do UI flows?
Dokumentacja Microsoft zaleca wyświetlanie danych odpowiedzi za pomocą akcji „Display Message” (wyskakuje alert), a następnie zbudowanie drugiego przepływu UI flows, który jest uruchamiany po zakończeniu pracy pierwszego i pauzy pomiędzy nimi ustawionej na określony czas. Po odczekaniu powinien odczytać dane z wyświetlonej wiadomości.
Myślę, że ten sposób jest wysoce zawodny, ponieważ wykonanie WinAutomation może czasem potrwać dłużej niż czas oczekiwania na działanie lub, że target okna komunikatu będzie inne niż dane przechowywane w akcji przepływu UI flows i w końcu odczyt odpowiedzi nie powiedzie się.
Również w ten sposób przekazywanie wielu wartości może być trudne.
Moje podejście
Zalecam podzielenie procesu na dwie części:
- Uruchamianie WinAutomation
- Pobieranie danych z WinAutomation
Drugi proces powinien zostać uruchomiony za pomocą akcji Web Request, a WinAutomation po zakończeniu uruchomienia powinien po prostu wysłać odpowiedź na utworzony adres URL procesu:
Działające rozwiązanie
Zobacz mój ostatni screencast, jak zintegrować przepływy UI flows z WinAutomation:
Mam nadzieję, że ten post pomoże Ci w twoich następnych projektach przy użyciu WinAutomation i całej PowerPlatform! Jeśli masz jakieś pytania, zostaw je poniżej 🙂