Udostępnij za pośrednictwem


Tworzenie pętli w celu powtarzania akcji w przepływach pracy za pomocą usługi Azure Logic Apps

Dotyczy: Azure Logic Apps (Zużycie + Standardowa)

Usługa Azure Logic Apps obejmuje następujące akcje pętli, których można użyć w przepływie pracy:

  • Aby powtórzyć co najmniej jedną akcję dla elementów w tablicy, dodaj akcję For each do przepływu pracy.

    Alternatywnie, jeśli masz wyzwalacz, który odbiera tablicę i chce uruchomić iterację dla każdego elementu tablicy, możesz debatować, że tablica z właściwością wyzwalacza SplitOn.

  • Aby powtórzyć co najmniej jedną akcję do momentu spełnienia warunku lub zmiany stanu, dodaj akcję Until do przepływu pracy.

    Przepływ pracy najpierw uruchamia wszystkie akcje wewnątrz pętli, a następnie sprawdza warunek lub stan. Jeśli warunek zostanie spełniony, pętla zostanie zatrzymana. W przeciwnym razie pętla powtarza się. Aby uzyskać domyślne i maksymalne limity liczby pętli Until , które mogą mieć przepływ pracy, zobacz Współbieżność, pętla i limity debat.

Wymagania wstępne

For each

Dla każdej akcji działa tylko na tablicach i powtarza co najmniej jedną akcję dla każdego elementu w tablicy. Poniższa lista zawiera pewne zagadnienia dotyczące tego, kiedy chcesz użyć akcji Dla każdej akcji:

  • Dla każdej akcji może przetworzyć ograniczoną liczbę elementów tablicy. Aby uzyskać ten limit, zobacz Limity współbieżności, pętli i debatowania.

  • Domyślnie cykle lub iteracje w akcji Dla każdej akcji są uruchamiane równolegle.

    To zachowanie różni się od zastosowania usługi Power Automate do każdej pętli , w której iteracje są uruchamiane pojedynczo lub sekwencyjnie. Można jednak skonfigurować sekwencyjne dla każdej iteracji. Jeśli na przykład chcesz wstrzymać następną iterację w akcji Dla każdej akcji przy użyciu akcji Opóźnienie, należy skonfigurować każdą iterację, aby była uruchamiana sekwencyjnie.

    Jako wyjątek od domyślnego zachowania, zagnieżdżone iteracji każdej akcji zawsze są uruchamiane sekwencyjnie, a nie równolegle. Aby uruchamiać operacje równolegle dla elementów w zagnieżdżonej pętli, utwórz i wywołaj podrzędny przepływ pracy aplikacji logiki.

  • Aby uzyskać przewidywalne wyniki operacji na zmiennych podczas każdej iteracji, uruchom iteracje sekwencyjnie. Na przykład gdy kończy się równoczesna iteracja, zmienna inkrementacji, zmienna dekrementacji i Dołącz do operacji zmiennych zwracają przewidywalne wyniki. Jednak podczas każdej iteracji w jednoczesnej pętli uruchomionej te operacje mogą zwracać nieprzewidywalne wyniki.

  • Akcje w pętli Dla każdej pętli używają item() funkcji do odwołowania się i przetwarzania każdego elementu w tablicy. Jeśli określisz dane, które nie są w tablicy, przepływ pracy zakończy się niepowodzeniem.

Poniższy przykładowy przepływ pracy wysyła codzienne podsumowanie kanału informacyjnego RSS witryny internetowej. Przepływ pracy używa akcji Dla każdej akcji, która wysyła wiadomość e-mail dla każdego nowego elementu.

W zależności od tego, czy masz przepływ pracy Zużycie, czy Standardowy, wykonaj odpowiednie kroki:

  1. W witrynie Azure Portal utwórz przykładowy przepływ pracy aplikacji logiki Zużycie, wykonując następujące kroki w określonej kolejności:

    • Wyzwalacz RSS o nazwie Po opublikowaniu elementu kanału informacyjnego

      Aby uzyskać więcej informacji, wykonaj następujące ogólne kroki, aby dodać wyzwalacz.

    • Akcja Outlook.com lub Office 365 Outlook o nazwie Wyślij wiadomość e-mail

      Aby uzyskać więcej informacji, wykonaj następujące ogólne kroki, aby dodać akcję.

  2. Wykonaj te same ogólne kroki , aby dodać akcję Dla każdej akcji między wyzwalaczem RSS a akcją Wyślij wiadomość e-mail w przepływie pracy.

  3. Teraz skompiluj pętlę:

    1. Wybierz wewnątrz pola Wybierz dane wyjściowe z poprzednich kroków , aby lista zawartości dynamicznej się otwierała.

    2. Na liście Dodawanie zawartości dynamicznej z sekcji Po opublikowaniu elementu kanału informacyjnego wybierz pozycję Linki kanału informacyjnego, czyli dane wyjściowe tablicy z wyzwalacza RSS.

      Uwaga

      Jeśli dane wyjściowe linków kanału informacyjnego nie są wyświetlane, obok etykiety sekcji wyzwalacza wybierz pozycję Zobacz więcej. Z listy zawartości dynamicznej można wybrać tylko dane wyjściowe z poprzednich kroków.

      Zrzut ekranu przedstawiający witrynę Azure Portal, projektant przepływu pracy zużycie, akcję o nazwie Dla każdego i otwartą listę zawartości dynamicznej.

      Gdy wszystko będzie gotowe, wybrane dane wyjściowe tablicy będą wyświetlane w następującym przykładzie:

      Zrzut ekranu przedstawia przepływ pracy Zużycie, akcję o nazwie Dla każdego i wybrane dane wyjściowe tablicy.

    3. Aby uruchomić istniejącą akcję na każdym elemencie tablicy, przeciągnij akcję Wyślij wiadomość e-mail do pętli Dla każdego .

      Teraz przepływ pracy wygląda podobnie do następującego przykładu:

      Zrzut ekranu przedstawia przepływ pracy Zużycie, akcję o nazwie Dla każdego i akcję o nazwie Wyślij wiadomość e-mail, teraz w obszarze Dla każdej pętli.

  4. Gdy wszystko będzie gotowe, zapisz proces.

  5. Aby ręcznie przetestować przepływ pracy, na pasku narzędzi projektanta wybierz pozycję Uruchom wyzwalacz>Uruchom.

Dla każdej definicji akcji (JSON)

Jeśli pracujesz w widoku kodu, możesz zdefiniować For_each akcję w definicji JSON przepływu pracy, na przykład:

"actions": {
   "For_each": {
      "actions": {
         "Send_an_email_(V2)": {
            "type": "ApiConnection",
            "inputs": {
               "body": {
                  "Body": "@{item()}",
                  "Subject": "New CNN post @{triggerBody()?['publishDate']}",
                  "To": "me@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/v2/Mail"
            },
            "runAfter": {}
         }
      },
      "foreach": "@triggerBody()?['links']",
      "runAfter": {},
      "type": "Foreach"
   }
},

Dla każdego: Uruchamianie sekwencyjnie

Domyślnie iteracji w pętli For each są uruchamiane równolegle. Jednak w przypadku zagnieżdżonych pętli lub zmiennych wewnątrz pętli, w których oczekujesz przewidywalnych wyników, należy uruchomić te pętle pojedynczo lub sekwencyjnie.

  1. W prawym górnym rogu każdej akcji wybierz wielokropek (...) >Ustawienia.

  2. W obszarze Kontrolka współbieżności zmień ustawienie z Wyłączone na Włączone.

  3. Przesuń suwak Stopień równoległości do 1, a następnie wybierz pozycję Gotowe.

    Zrzut ekranu przedstawiający przepływ pracy Zużycie, akcję o nazwie Dla każdego, włączone ustawienie kontrolki współbieżności i stopień suwaka równoległości ustawiony na 1.

Dla każdej definicji akcji (JSON): uruchom sekwencyjnie

Jeśli pracujesz w widoku kodu z akcją For_each w definicji JSON przepływu pracy, możesz użyć Sequential opcji, dodając operationOptions parametr, na przykład:

"actions": {
   "For_each": {
      "actions": {
         "Send_an_email_(V2)": { }
      },
      "foreach": "@triggerBody()?['links']",
      "runAfter": {},
      "type": "Foreach",
      "operationOptions": "Sequential"
   }
}

Until

Akcja Until jest uruchamiana i powtarza jedną lub więcej akcji do momentu spełnienia wymaganego warunku. Jeśli warunek zostanie spełniony, pętla zostanie zatrzymana. W przeciwnym razie pętla powtarza się. Aby uzyskać domyślne i maksymalne limity liczby akcji Until lub iteracji, które mogą mieć przepływ pracy, zobacz Współbieżność, pętla i limity debatowania.

Poniższa lista zawiera kilka typowych scenariuszy, w których można użyć akcji Until :

  • Wywołaj punkt końcowy, dopóki nie otrzymasz żądanej odpowiedzi.

  • Utwórz rekord w bazie danych. Poczekaj, aż określone pole w tym rekordzie zostanie zatwierdzone. Kontynuuj przetwarzanie.

W poniższym przykładowym przepływie pracy, począwszy od godziny 8:00 każdego dnia, akcja Until zwiększa zmienną do momentu, aż wartość zmiennej będzie równa 10. Następnie przepływ pracy wysyła wiadomość e-mail, która potwierdza bieżącą wartość.

Uwaga

W tym przykładzie użyto usługi Office 365 Outlook, ale możesz użyć dowolnego dostawcy poczty e-mail obsługiwanego przez usługę Azure Logic Apps. Jeśli używasz innego konta e-mail, ogólne kroki pozostaną takie same, ale interfejs użytkownika może wyglądać nieco inaczej.

  1. W witrynie Azure Portal utwórz zasób aplikacji logiki Zużycie z pustym przepływem pracy.

  2. W projektancie wykonaj następujące ogólne kroki, aby dodać wbudowany wyzwalacz Cykl o nazwie Harmonogram do przepływu pracy.

  3. W wyzwalaczu Cykl określ interwał, częstotliwość i godzinę dnia uruchomienia wyzwalacza.

    Właściwości Wartość
    Interwał 1
    Częstotliwość Day
    W tych godzinach 8

    Aby dodać parametr At these hours , otwórz listę Dodaj nowy parametr i wybierz pozycję W tych godzinach, która jest wyświetlana dopiero po ustawieniu opcji Częstotliwość na Dzień.

    Zrzut ekranu przedstawiający witrynę Azure Portal, projektanta przepływów pracy użycia i parametry wyzwalacza cyklu z wybraną opcją W tych godzinach.

    Po zakończeniu wyzwalacz cyklu wygląda jak w poniższym przykładzie:

    Zrzut ekranu przedstawiający skonfigurowaną witrynę Azure Portal, przepływ pracy użycia i wyzwalacz cyklu.

  4. W obszarze wyzwalacza wykonaj następujące ogólne kroki, aby dodać wbudowaną akcję Zmienne o nazwie Initialize zmiennej do przepływu pracy.

  5. W akcji Inicjowanie zmiennej podaj następujące wartości:

    Właściwości Wartość Opis
    Nazwa/nazwisko Limit Nazwa zmiennej
    Type Wartość całkowita Typ danych zmiennej
    Wartość 0 Wartość początkowa zmiennej

    Zrzut ekranu przedstawiający witrynę Azure Portal, przepływ pracy użycia i parametry wbudowanej akcji o nazwie Initialize zmiennej.

  6. W obszarze akcji Inicjowanie zmiennej wykonaj następujące ogólne kroki, aby dodać wbudowaną akcję Kontrolka o nazwie Until do przepływu pracy.

  7. W akcji Until podaj następujące wartości, aby skonfigurować warunek zatrzymania dla pętli.

    1. Wybierz wewnątrz lewego pola o nazwie Wybierz wartość, która automatycznie otwiera listę zawartości dynamicznej.

    2. Z listy w obszarze Zmienne wybierz zmienną o nazwie Limit.

    3. Z listy operatorów środkowych wybierz operator jest równy operatorowi.

    4. W prawym polu o nazwie Wybierz wartość wprowadź wartość 10 jako wartość porównania.

    Zrzut ekranu przedstawiający przepływ pracy zużycie i wbudowaną akcję o nazwie Until z gotowym warunkiem zatrzymania.

  8. W akcji Do wybierz pozycję Dodaj akcję.

  9. W polu wyszukiwania Wybierz operację wykonaj następujące ogólne kroki, aby dodać wbudowaną akcję Zmienne o nazwie Zmienna przyrostowa do akcji Until.

  10. W akcji zmiennej przyrostowej podaj następujące wartości, aby zwiększać wartość zmiennej Limit o 1:

    Właściwości Wartość
    Nazwa/nazwisko Wybierz zmienną Limit .
    Wartość 1

    Zrzut ekranu przedstawia przepływ pracy Zużycie i wbudowaną akcję o nazwie Until z wartością Nazwa ustawioną na zmienną Limit i wartością ustawioną na 1.

  11. Poza akcją i w obszarze Do wykonania wykonaj następujące ogólne kroki, aby dodać akcję, która wysyła wiadomość e-mail.

    W tym przykładzie nadal jest wykonywana akcja usługi Office 365 Outlook o nazwie Wyślij wiadomość e-mail.

  12. W akcji wiadomości e-mail podaj następujące wartości:

    Właściwości Wartość Opis
    Do <address@domain poczty e-mail> Adres e-mail adresata. Na potrzeby testowania użyj własnego adresu e-mail.
    Temat Bieżąca wartość zmiennej "Limit" to: Limit Temat wiadomości e-mail. W tym przykładzie upewnij się, że dołączysz zmienną Limit , aby potwierdzić, że bieżąca wartość spełnia określony warunek:

    1. Wybierz wewnątrz pola Temat , aby wyświetlić listę zawartości dynamicznej.

    2. Na liście zawartości dynamicznej obok nagłówka sekcji Zmienne wybierz pozycję Zobacz więcej.

    3. Wybierz pozycję Limit.
    Treść <zawartość wiadomości e-mail> Zawartość wiadomości e-mail, którą chcesz wysłać. W tym przykładzie wprowadź dowolny tekst.

    Po zakończeniu akcja poczty e-mail wygląda podobnie do następującego przykładu:

    Zrzut ekranu przedstawia przepływ pracy użycia i akcję o nazwie Wyślij wiadomość e-mail z wartościami właściwości.

  13. Zapisz przepływ pracy.

Testowanie przepływu pracy

Aby ręcznie przetestować przepływ pracy aplikacji logiki, wykonaj kroki na podstawie tego, czy masz aplikację logiki Zużycie, czy Standardowa.

Na pasku narzędzi projektanta wybierz pozycję Uruchom wyzwalacz>Uruchom.

Po uruchomieniu przepływu pracy otrzymasz wiadomość e-mail z określoną zawartością:

Zrzut ekranu przedstawia przykładową wiadomość e-mail odebraną z przykładowego przepływu pracy.

Zapobieganie nieskończonym pętlom

Akcja Until zatrzymuje wykonywanie na podstawie następujących właściwości, które można wyświetlić, wybierając pozycję Zmień limity w akcji. Upewnij się, że te wartości właściwości zostały odpowiednio ustawione:

Właściwości Opis
Licznik Maksymalna liczba iteracji uruchamianych przed zakończeniem pętli.

Aby uzyskać domyślne i maksymalne limity liczby akcji Until , które mogą mieć przepływ pracy, zobacz Współbieżność, pętla i limity debat.
Przekroczenie limitu czasu Maksymalny czas, przez jaki akcja Until , w tym wszystkie iteracji, jest uruchamiana przed zakończeniem pętli. Ta wartość jest określona w formacie ISO 8601 i jest obliczana dla każdej iteracji.

Jeśli jakakolwiek akcja w pętli trwa dłużej niż limit limitu czasu, bieżąca iteracja nie zostanie zatrzymana. Jednak kolejna iteracja nie jest uruchamiana, ponieważ jest spełniony warunek limitu czasu.

Aby uzyskać domyślne i maksymalne limity dla wartości limitu czasu, zobacz Współbieżność, pętla i limity debatowania.

Definicja "Until" (JSON)

Jeśli pracujesz w widoku kodu, możesz zdefiniować Until akcję w definicji JSON przepływu pracy, na przykład:

"actions": {
   "Initialize_variable": {
      // Definition for initialize variable action
   },
   "Send_an_email": {
      // Definition for send email action
   },
   "Until": {
      "type": "Until",
      "actions": {
         "Increment_variable": {
            "type": "IncrementVariable",
            "inputs": {
               "name": "Limit",
               "value": 1
            },
            "runAfter": {}
         }
      },
      "expression": "@equals(variables('Limit'), 10)",
      // To prevent endless loops, an "Until" loop 
      // includes these default limits that stop the loop. 
      "limit": { 
         "count": 60,
         "timeout": "PT1H"
      },
      "runAfter": {
         "Initialize_variable": [
            "Succeeded"
         ]
      }
   }
}

W tym przykładzie pętla Until wywołuje punkt końcowy HTTP, który tworzy zasób. Pętla zatrzymuje się, gdy treść odpowiedzi HTTP zwraca Completed stan. Aby zapobiec nieskończonym pętlom, pętla zatrzymuje się również w przypadku wystąpienia któregokolwiek z następujących warunków:

  • Pętla była uruchamiana 10 razy zgodnie z atrybutem count . Wartość domyślna to 60 razy.

  • Pętla była uruchamiana przez dwie godziny zgodnie z atrybutem timeout w formacie ISO 8601. Wartość domyślna to jedna godzina.

"actions": {
   "myUntilLoopName": {
      "type": "Until",
      "actions": {
         "Create_new_resource": {
            "type": "Http",
            "inputs": {
               "body": {
                  "resourceId": "@triggerBody()"
               },
               "url": "https://domain.com/provisionResource/create-resource",
               "body": {
                  "resourceId": "@triggerBody()"
               }
            },
            "runAfter": {},
            "type": "ApiConnection"
         }
      },
      "expression": "@equals(triggerBody(), 'Completed')",
      "limit": {
         "count": 10,
         "timeout": "PT2H"
      },
      "runAfter": {}
   }
}

Następne kroki