Przewodnik dokumentacji schematu dla typów wyzwalaczy i akcji w usłudze Azure Logic Apps

W tej dokumentacji opisano ogólne typy używane do identyfikowania wyzwalaczy i akcji w podstawowej definicji przepływu pracy aplikacji logiki, która została opisana i zweryfikowana przez język definicji przepływu pracy. Aby znaleźć określone wyzwalacze i akcje łącznika, których można używać w aplikacjach logiki, zobacz listę w obszarze przeglądów Połączenie or.

Omówienie wyzwalaczy

Każdy przepływ pracy zawiera wyzwalacz, który definiuje wywołania, które tworzy wystąpienie i uruchamia przepływ pracy. Poniżej przedstawiono ogólne kategorie wyzwalaczy:

  • Wyzwalacz sondowania, który sprawdza punkt końcowy usługi w regularnych odstępach czasu

  • Wyzwalacz wypychania, który tworzy subskrypcję punktu końcowego i udostępnia adres URL wywołania zwrotnego, dzięki czemu punkt końcowy może powiadomić wyzwalacz po wystąpieniu określonego zdarzenia lub udostępnieniu danych. Wyzwalacz następnie czeka na odpowiedź punktu końcowego przed uruchomieniem.

Wyzwalacze mają te elementy najwyższego poziomu, chociaż niektóre są opcjonalne:

"<trigger-name>": {
   "type": "<trigger-type>",
   "inputs": { "<trigger-inputs>" },
   "recurrence": { 
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "conditions": [ "<array-with-conditions>" ],
   "runtimeConfiguration": { "<runtime-config-options>" },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
},

Wymagane

Wartość Type Opis
<nazwa wyzwalacza> String Nazwa wyzwalacza
<typ wyzwalacza> String Typ wyzwalacza, taki jak "Http" lub "Api Połączenie ion"
<trigger-inputs> JSON, obiekt Dane wejściowe definiujące zachowanie wyzwalacza
<jednostka czasowa> String Jednostka czasu, która opisuje, jak często wyzwalacz jest uruchamiany: "Second", "Minute", "Hour", "Day", "Week", "Month"
<liczba jednostek czasu> Liczba całkowita Wartość określająca, jak często wyzwalacz jest uruchamiany na podstawie częstotliwości, czyli liczby jednostek czasu oczekiwania na ponowne uruchomienie wyzwalacza

Poniżej przedstawiono minimalne i maksymalne interwały:

- Miesiąc: 1–16 miesięcy
— dzień: 1–500 dni
— godzina: 1–12 000 godzin
— minuta: 1–72 000 minut
— drugi: 1–999 999 999 sekund

Jeśli na przykład interwał wynosi 6, a częstotliwość to "Miesiąc", cykl wynosi co 6 miesięcy.

Opcjonalne

Wartość Type Opis
<tablica z warunkami> Tablica Tablica zawierająca co najmniej jeden warunek określający, czy należy uruchomić przepływ pracy. Dostępne tylko dla wyzwalaczy.
<opcje konfiguracji środowiska uruchomieniowego> JSON, obiekt Zachowanie wyzwalacza środowiska uruchomieniowego można zmienić, ustawiając runtimeConfiguration właściwości. Aby uzyskać więcej informacji, zobacz Ustawienia konfiguracji środowiska uruchomieniowego.
<splitOn-expression> String W przypadku wyzwalaczy, które zwracają tablicę, można określić wyrażenie, które dzieli lub debatuje elementy tablicy na wiele wystąpień przepływu pracy na potrzeby przetwarzania.
<opcja operacji> String Domyślne zachowanie można zmienić, ustawiając operationOptions właściwość . Aby uzyskać więcej informacji, zobacz Opcje operacji.

Lista typów wyzwalaczy

Każdy typ wyzwalacza ma inny interfejs i dane wejściowe, które definiują zachowanie wyzwalacza.

Wbudowane wyzwalacze

Typ wyzwalacza opis
HTTP Sprawdza lub sonduje dowolny punkt końcowy. Ten punkt końcowy musi być zgodny z określonym kontraktem 202 wyzwalacza przy użyciu wzorca asynchronicznego lub przez zwrócenie tablicy.
HTTPWebhook Tworzy wywoływany punkt końcowy dla aplikacji logiki, ale wywołuje określony adres URL w celu zarejestrowania lub wyrejestrowania.
Cykl Uruchamia się na podstawie zdefiniowanego harmonogramu. Możesz ustawić przyszłą datę i godzinę wyzwalania tego wyzwalacza. Na podstawie częstotliwości można również określić czasy i dni uruchamiania przepływu pracy.
Zażądaj Tworzy wywoływany punkt końcowy dla aplikacji logiki i jest również nazywany wyzwalaczem "ręcznym". Na przykład zobacz Wywoływanie, wyzwalanie lub zagnieżdżanie przepływów pracy z punktami końcowymi HTTP.

Wyzwalacze zarządzanego interfejsu API

Typ wyzwalacza opis
ApiConnection Sprawdza lub sonduje punkt końcowy przy użyciu zarządzanych przez firmę Microsoft interfejsów API lub "łączników".
Interfejs API Połączenie ionWebhook Tworzy wywoływany punkt końcowy dla przepływu pracy aplikacji logiki, wywołując interfejsy API zarządzane przez firmę Microsoft lub "łączniki" , aby subskrybować i anulować subskrypcję.

Wyzwalacze — informacje szczegółowe

Wyzwalacz interfejsu API Połączenie ion

Ten wyzwalacz sprawdza lub sonduje punkt końcowy przy użyciu interfejsów API zarządzanych przez firmę Microsoft lub "łączników" , aby parametry tego wyzwalacza mogły się różnić w zależności od punktu końcowego. Wiele sekcji w tej definicji wyzwalacza jest opcjonalnych. Zachowanie wyzwalacza zależy od tego, czy są uwzględnione sekcje.

"<APIConnection_trigger_name>": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<connection-name>']['connectionId']"
         }
      },
      "method": "<method-type>",
      "path": "/<api-operation>",
      "retryPolicy": { "<retry-behavior>" },
      "queries": { "<query-parameters>" }
   },
   "recurrence": { 
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
}

Wymagane

Wartość Type Opis
<Interfejs API Połączenieion_trigger_name> String Nazwa wyzwalacza
<nazwa połączenia> String Nazwa połączenia z zarządzanym interfejsem API używanym przez przepływ pracy
<typ metody> String Metoda HTTP do komunikowania się z zarządzanym interfejsem API: "GET", "PUT", "POST", "PATCH", "DELETE"
<operacja interfejsu API> String Operacja interfejsu API do wywołania
<jednostka czasowa> String Jednostka czasu, która opisuje, jak często wyzwalacz jest uruchamiany: "Second", "Minute", "Hour", "Day", "Week", "Month"
<liczba jednostek czasu> Liczba całkowita Wartość określająca, jak często wyzwalacz jest uruchamiany na podstawie częstotliwości, czyli liczby jednostek czasu oczekiwania na ponowne uruchomienie wyzwalacza

Poniżej przedstawiono minimalne i maksymalne interwały:

- Miesiąc: 1–16 miesięcy
— dzień: 1–500 dni
— godzina: 1–12 000 godzin
— minuta: 1–72 000 minut
— drugi: 1–999 999 999 sekund

Jeśli na przykład interwał wynosi 6, a częstotliwość to "Miesiąc", cykl wynosi co 6 miesięcy.

Opcjonalne

Wartość Type Opis
<zachowanie ponawiania próby> JSON, obiekt Dostosowuje zachowanie ponawiania prób dla sporadycznych błędów, które mają kod stanu 408, 429 i 5XX oraz wszelkie wyjątki łączności. Aby uzyskać więcej informacji, zobacz Zasady ponawiania prób.
<parametry zapytania> JSON, obiekt Wszystkie parametry zapytania do uwzględnienia z wywołaniem interfejsu API. Na przykład "queries": { "api-version": "2018-01-01" } obiekt dodaje ?api-version=2018-01-01 do wywołania .
<maksymalna liczba przebiegów> Liczba całkowita Domyślnie wystąpienia przepływu pracy działają w tym samym czasie (współbieżnie lub równolegle) do domyślnego limitu. Aby zmienić ten limit, ustawiając nową <wartość licznika> , zobacz Zmienianie współbieżności wyzwalacza.
<max-runs-queue> Liczba całkowita Gdy przepływ pracy jest już uruchomiony maksymalną liczbę wystąpień, które można zmienić na runtimeConfiguration.concurrency.runs podstawie właściwości, wszystkie nowe uruchomienia są umieszczane w tej kolejce do limitu domyślnego. Aby zmienić limit domyślny, zobacz Zmienianie limitu oczekujących przebiegów.
<splitOn-expression> String W przypadku wyzwalaczy, które zwracają tablice, to wyrażenie odwołuje się do tablicy do użycia, aby można było utworzyć i uruchomić wystąpienie przepływu pracy dla każdego elementu tablicy, zamiast używać pętli "dla każdego".

Na przykład to wyrażenie reprezentuje element w tablicy zwróconej w treści wyzwalacza: @triggerbody()?['value']

<opcja operacji> String Domyślne zachowanie można zmienić, ustawiając operationOptions właściwość . Aby uzyskać więcej informacji, zobacz Opcje operacji.

Dane wyjściowe

Element Type Opis
nagłówki JSON, obiekt Nagłówki z odpowiedzi
treść JSON, obiekt Treść odpowiedzi
kod stanu Liczba całkowita Kod stanu z odpowiedzi

Przykład

Ta definicja wyzwalacza sprawdza pocztę e-mail każdego dnia w skrzynce odbiorczej dla konta służbowego:

"When_a_new_email_arrives": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "get",
      "path": "/Mail/OnNewEmail",
      "queries": {
          "fetchOnlyWithAttachment": false,
          "folderPath": "Inbox",
          "importance": "Any",
          "includeAttachments": false
      }
   },
   "recurrence": {
      "frequency": "Day",
      "interval": 1
   }
}

Wyzwalacz api Połączenie ionWebhook

Ten wyzwalacz wysyła żądanie subskrypcji do punktu końcowego przy użyciu interfejsu API zarządzanego przez firmę Microsoft, udostępnia adres URL wywołania zwrotnego, do którego punkt końcowy może wysłać odpowiedź i czeka na odpowiedź punktu końcowego. Aby uzyskać więcej informacji, zobacz Subskrypcje punktów końcowych.

"<ApiConnectionWebhook_trigger_name>": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "body": {
          "NotificationUrl": "@{listCallbackUrl()}"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<connection-name>']['connectionId']"
         }
      },
      "retryPolicy": { "<retry-behavior>" },
      "queries": "<query-parameters>"
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-run-queue>
      }
   },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
}

Wymagane

Wartość Type Opis
<nazwa połączenia> String Nazwa połączenia z zarządzanym interfejsem API używanym przez przepływ pracy
<body-content> JSON, obiekt Dowolna zawartość wiadomości, która ma być wysyłana jako ładunek do zarządzanego interfejsu API

Opcjonalne

Wartość Type Opis
<zachowanie ponawiania próby> JSON, obiekt Dostosowuje zachowanie ponawiania prób dla sporadycznych błędów, które mają kod stanu 408, 429 i 5XX oraz wszelkie wyjątki łączności. Aby uzyskać więcej informacji, zobacz Zasady ponawiania prób.
<parametry zapytania> JSON, obiekt Wszystkie parametry zapytania do uwzględnienia z wywołaniem interfejsu API

Na przykład "queries": { "api-version": "2018-01-01" } obiekt dodaje ?api-version=2018-01-01 do wywołania .

<maksymalna liczba przebiegów> Liczba całkowita Domyślnie wystąpienia przepływu pracy działają w tym samym czasie (współbieżnie lub równolegle) do domyślnego limitu. Aby zmienić ten limit, ustawiając nową <wartość licznika> , zobacz Zmienianie współbieżności wyzwalacza.
<max-runs-queue> Liczba całkowita Gdy przepływ pracy jest już uruchomiony maksymalną liczbę wystąpień, które można zmienić na runtimeConfiguration.concurrency.runs podstawie właściwości, wszystkie nowe uruchomienia są umieszczane w tej kolejce do limitu domyślnego. Aby zmienić limit domyślny, zobacz Zmienianie limitu oczekujących przebiegów.
<splitOn-expression> String W przypadku wyzwalaczy, które zwracają tablice, to wyrażenie odwołuje się do tablicy do użycia, aby można było utworzyć i uruchomić wystąpienie przepływu pracy dla każdego elementu tablicy, zamiast używać pętli "dla każdego".

Na przykład to wyrażenie reprezentuje element w tablicy zwróconej w treści wyzwalacza: @triggerbody()?['value']

<opcja operacji> String Domyślne zachowanie można zmienić, ustawiając operationOptions właściwość . Aby uzyskać więcej informacji, zobacz Opcje operacji.

Przykład

Ta definicja wyzwalacza subskrybuje interfejs API programu Outlook usługi Office 365, udostępnia adres URL wywołania zwrotnego do punktu końcowego interfejsu API i czeka, aż punkt końcowy odpowie po nadejściu nowej wiadomości e-mail.

"When_a_new_email_arrives_(webhook)": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "body": {
         "NotificationUrl": "@{listCallbackUrl()}" 
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "path": "/MailSubscription/$subscriptions",
      "queries": {
          "folderPath": "Inbox",
          "hasAttachment": "Any",
          "importance": "Any"
      }
   },
   "splitOn": "@triggerBody()?['value']"
}

Wyzwalacz HTTP

Ten wyzwalacz wysyła żądanie do określonego punktu końcowego HTTP lub HTTPS na podstawie określonego harmonogramu cyklu. Wyzwalacz następnie sprawdza odpowiedź, aby określić, czy przepływ pracy działa. Aby uzyskać więcej informacji, zobacz Wywoływanie punktów końcowych usługi za pośrednictwem protokołu HTTP lub HTTPS z usługi Azure Logic Apps.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "<method-type>",
      "uri": "<HTTP-or-HTTPS-endpoint-URL>",
      "headers": { "<header-content>" },
      "queries": "<query-parameters>",
      "body": "<body-content>",
      "authentication": { "<authentication-type-and-property-values>" },
      "retryPolicy": {
         "type": "<retry-behavior>"
      }
   },
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Wymagane

Właściwości Wartość Type Opis
method <typ metody> String Metoda służąca do wysyłania żądania wychodzącego: "GET", "PUT", "POST", "PATCH" lub "DELETE"
uri <Http-or-HTTPS-endpoint-URL> String Adres URL punktu końcowego HTTP lub HTTPS, w którym chcesz wysłać żądanie wychodzące. Maksymalny rozmiar ciągu: 2 KB

W przypadku usługi lub zasobu platformy Azure ta składnia identyfikatora URI zawiera identyfikator zasobu i ścieżkę do zasobu, do którego chcesz uzyskać dostęp.

frequency <jednostka czasowa> String Jednostka czasu, która opisuje, jak często wyzwalacz jest uruchamiany: "Second", "Minute", "Hour", "Day", "Week", "Month"
interval <liczba jednostek czasu> Liczba całkowita Wartość określająca, jak często wyzwalacz jest uruchamiany na podstawie częstotliwości, czyli liczby jednostek czasu oczekiwania na ponowne uruchomienie wyzwalacza

Poniżej przedstawiono minimalne i maksymalne interwały:

- Miesiąc: 1–16 miesięcy
— dzień: 1–500 dni
— godzina: 1–12 000 godzin
— minuta: 1–72 000 minut
— drugi: 1–999 999 999 sekund

Jeśli na przykład interwał wynosi 6, a częstotliwość to "Miesiąc", cykl wynosi co 6 miesięcy.

Opcjonalne

Właściwości Wartość Type Opis
headers <nagłówek-zawartość> JSON, obiekt Wszelkie nagłówki, które należy dołączyć do żądania

Aby na przykład ustawić język i typ:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

queries <parametry zapytania> JSON, obiekt Wszystkie parametry zapytania, które należy użyć w żądaniu

Na przykład "queries": { "api-version": "2018-01-01" } obiekt dodaje ?api-version=2018-01-01 do żądania.

body <body-content> JSON, obiekt Zawartość wiadomości, która ma być wysyłana jako ładunek z żądaniem
authentication <authentication-type-and-property-values> JSON, obiekt Model uwierzytelniania używany przez żądanie do uwierzytelniania żądań wychodzących. Aby uzyskać więcej informacji, zobacz Dodawanie uwierzytelniania do wywołań wychodzących. Poza usługą Scheduler obsługiwana authority jest właściwość . Jeśli nie zostanie określona, wartość domyślna to https://management.azure.com/, ale można użyć innej wartości.
retryPolicy > type <zachowanie ponawiania próby> JSON, obiekt Dostosowuje zachowanie ponawiania prób dla sporadycznych błędów, które mają kod stanu 408, 429 i 5XX oraz wszelkie wyjątki łączności. Aby uzyskać więcej informacji, zobacz Zasady ponawiania prób.
runs <maksymalna liczba przebiegów> Liczba całkowita Domyślnie wystąpienia przepływu pracy działają w tym samym czasie (współbieżnie lub równolegle) do domyślnego limitu. Aby zmienić ten limit, ustawiając nową <wartość licznika> , zobacz Zmienianie współbieżności wyzwalacza.
maximumWaitingRuns <max-runs-queue> Liczba całkowita Gdy przepływ pracy jest już uruchomiony maksymalną liczbę wystąpień, które można zmienić na runtimeConfiguration.concurrency.runs podstawie właściwości, wszystkie nowe uruchomienia są umieszczane w tej kolejce do limitu domyślnego. Aby zmienić limit domyślny, zobacz Zmienianie limitu oczekujących przebiegów.
operationOptions <opcja operacji> String Domyślne zachowanie można zmienić, ustawiając operationOptions właściwość . Aby uzyskać więcej informacji, zobacz Opcje operacji.

Dane wyjściowe

Element Type Opis
headers JSON, obiekt Nagłówki z odpowiedzi
body JSON, obiekt Treść odpowiedzi
status code Liczba całkowita Kod stanu z odpowiedzi

Wymagania dotyczące żądań przychodzących

Aby dobrze pracować z aplikacją logiki, punkt końcowy musi być zgodny z określonym wzorcem lub kontraktem wyzwalacza i rozpoznawać następujące właściwości odpowiedzi:

Właściwości Wymagania opis
Kod stanu Tak Kod stanu "200 OK" uruchamia przebieg. Żaden inny kod stanu nie uruchamia przebiegu.
Ponów próbę po nagłówku Nie. Liczba sekund do momentu ponownego sondowania punktu końcowego przez aplikację logiki
Nagłówek lokalizacji Nie. Adres URL do wywołania w następnym interwale sondowania. Jeśli nie zostanie określony, zostanie użyty oryginalny adres URL.

Przykładowe zachowania dla różnych żądań

Kod stanu Ponów próbę po Zachowanie
200 {none} Uruchom przepływ pracy, a następnie sprawdź ponownie więcej danych po zdefiniowanym cyklu.
200 10 sekund Uruchom przepływ pracy, a następnie sprawdź ponownie więcej danych po 10 sekundach.
202 60 s Nie wyzwalaj przepływu pracy. Kolejna próba odbywa się w ciągu jednej minuty, z uwzględnieniem zdefiniowanego cyklu. Jeśli zdefiniowany cykl jest krótszy niż minuta, pierwszeństwo ma nagłówek ponawiania po. W przeciwnym razie jest używany zdefiniowany cykl.
400 {none} Nieprawidłowe żądanie, nie uruchamiaj przepływu pracy. Jeśli nie retryPolicy jest zdefiniowana, zostaną użyte zasady domyślne. Po osiągnięciu liczby ponownych prób wyzwalacz ponownie sprawdza dane po zdefiniowanym cyklu.
500 {none} Błąd serwera, nie uruchamiaj przepływu pracy. Jeśli nie retryPolicy jest zdefiniowana, zostaną użyte zasady domyślne. Po osiągnięciu liczby ponownych prób wyzwalacz ponownie sprawdza dane po zdefiniowanym cyklu.

Wyzwalacz HTTPWebhook

Ten wyzwalacz sprawia, że aplikacja logiki może być wywoływana przez utworzenie punktu końcowego, który może zarejestrować subskrypcję, wywołując określony adres URL punktu końcowego. Po utworzeniu tego wyzwalacza w przepływie pracy żądanie wychodzące wysyła wywołanie w celu zarejestrowania subskrypcji. W ten sposób wyzwalacz może rozpocząć nasłuchiwanie zdarzeń. Gdy operacja powoduje, że ten wyzwalacz jest nieprawidłowy, żądanie wychodzące automatycznie wysyła wywołanie w celu anulowania subskrypcji. Aby uzyskać więcej informacji, zobacz Subskrypcje punktów końcowych.

Możesz również określić limity asynchroniczne w wyzwalaczu HTTPWebhook . Zachowanie wyzwalacza zależy od używanych sekcji lub ich pomijania.

"HTTP_Webhook": {
   "type": "HttpWebhook",
   "inputs": {
      "subscribe": {
         "method": "<method-type>",
         "uri": "<endpoint-subscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "retryPolicy": { "<retry-behavior>" }
         },
      },
      "unsubscribe": {
         "method": "<method-type>",
         "url": "<endpoint-unsubscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" }
      }
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Niektóre wartości, takie jak <typ> metody, są dostępne dla obiektów "subscribe" i "unsubscribe" .

Wymagane

Wartość Type Opis
<typ metody> String Metoda HTTP do użycia dla żądania subskrypcji: "GET", "PUT", "POST", "PATCH" lub "DELETE"
<endpoint-subscribe-URL> String Adres URL punktu końcowego, pod którym ma być wysyłane żądanie subskrypcji

Opcjonalne

Wartość Type Opis
<typ metody> String Metoda HTTP do użycia dla żądania anulowania: "GET", "PUT", "POST", "PATCH" lub "DELETE"
<endpoint-unsubscribe-URL> String Adres URL punktu końcowego, pod którym ma być wysyłane żądanie anulowania
<body-content> String Dowolna zawartość wiadomości do wysłania w żądaniu subskrypcji lub anulowania
<typ uwierzytelniania> JSON, obiekt Model uwierzytelniania używany przez żądanie do uwierzytelniania żądań wychodzących. Aby uzyskać więcej informacji, zobacz Dodawanie uwierzytelniania do wywołań wychodzących.
<zachowanie ponawiania próby> JSON, obiekt Dostosowuje zachowanie ponawiania prób dla sporadycznych błędów, które mają kod stanu 408, 429 i 5XX oraz wszelkie wyjątki łączności. Aby uzyskać więcej informacji, zobacz Zasady ponawiania prób.
<maksymalna liczba przebiegów> Liczba całkowita Domyślnie wszystkie wystąpienia przepływu pracy są uruchamiane w tym samym czasie (współbieżnie lub równolegle) do domyślnego limitu. Aby zmienić ten limit, ustawiając nową <wartość licznika> , zobacz Zmienianie współbieżności wyzwalacza.
<max-runs-queue> Liczba całkowita Gdy przepływ pracy jest już uruchomiony maksymalną liczbę wystąpień, które można zmienić na runtimeConfiguration.concurrency.runs podstawie właściwości, wszystkie nowe uruchomienia są umieszczane w tej kolejce do limitu domyślnego. Aby zmienić limit domyślny, zobacz Zmienianie limitu oczekujących przebiegów.
<opcja operacji> String Domyślne zachowanie można zmienić, ustawiając operationOptions właściwość . Aby uzyskać więcej informacji, zobacz Opcje operacji.

Dane wyjściowe

Element Type Opis
nagłówki JSON, obiekt Nagłówki z odpowiedzi
treść JSON, obiekt Treść odpowiedzi
kod stanu Liczba całkowita Kod stanu z odpowiedzi

Przykład

Ten wyzwalacz tworzy subskrypcję określonego punktu końcowego, udostępnia unikatowy adres URL wywołania zwrotnego i czeka na nowo opublikowane artykuły technologiczne.

"HTTP_Webhook": {
   "type": "HttpWebhook",
   "inputs": {
      "subscribe": {
         "method": "POST",
         "uri": "https://pubsubhubbub.appspot.com/subscribe",
         "body": {
            "hub.callback": "@{listCallbackUrl()}",
            "hub.mode": "subscribe",
            "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
         },
      },
      "unsubscribe": {
         "method": "POST",
         "url": "https://pubsubhubbub.appspot.com/subscribe",
         "body": {
            "hub.callback": "@{workflow().endpoint}@{listCallbackUrl()}",
            "hub.mode": "unsubscribe",
            "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
         }
      }
   }
}

Wyzwalacz cyklu

Ten wyzwalacz jest uruchamiany zgodnie z określonym harmonogramem cyklu i zapewnia łatwy sposób tworzenia regularnego uruchamiania przepływu pracy.

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
      "startTime": "<start-date-time-with-format-YYYY-MM-DDThh:mm:ss>",
      "timeZone": "<time-zone>",
      "schedule": {
         // Applies only when frequency is Day or Week. Separate values with commas.
         "hours": [ <one-or-more-hour-marks> ], 
         // Applies only when frequency is Day or Week. Separate values with commas.
         "minutes": [ <one-or-more-minute-marks> ], 
         // Applies only when frequency is Week. Separate values with commas.
         "weekDays": [ "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday" ] 
      }
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Wymagane

Wartość Type Opis
<jednostka czasowa> String Jednostka czasu, która opisuje, jak często wyzwalacz jest uruchamiany: "Second", "Minute", "Hour", "Day", "Week", "Month"
<liczba jednostek czasu> Liczba całkowita Wartość określająca, jak często wyzwalacz jest uruchamiany na podstawie częstotliwości, czyli liczby jednostek czasu oczekiwania na ponowne uruchomienie wyzwalacza

Poniżej przedstawiono minimalne i maksymalne interwały:

- Miesiąc: 1–16 miesięcy
— dzień: 1–500 dni
— godzina: 1–12 000 godzin
— minuta: 1–72 000 minut
— drugi: 1–999 999 999 sekund

Jeśli na przykład interwał wynosi 6, a częstotliwość to "Miesiąc", cykl wynosi co 6 miesięcy.

Opcjonalne

Wartość Type Opis
<start-date-time-with-format-RRRR-MM-DDThh:mm:ss> String Data i godzina rozpoczęcia w tym formacie:

RRRR-MM-DDThh:mm:ss, jeśli określisz strefę czasową

-Lub-

RRRR-MM-DDThh:mm:ssZ, jeśli nie określisz strefy czasowej

Jeśli na przykład chcesz 18 września 2017 r. o 23:00, określ wartość "2017-09-18T14:00:00" i określ strefę czasową, taką jak "Pacyficzny czas standardowy" lub określ "2017-09-18T14:00:00Z" bez strefy czasowej.

Uwaga: Ten czas rozpoczęcia ma maksymalnie 49 lat w przyszłości i musi postępować zgodnie ze specyfikacjądaty ISO 8601 w formacie daty i godziny UTC, ale bez przesunięcia UTC. Jeśli nie określisz strefy czasowej, musisz dodać literę "Z" na końcu bez spacji. Ten "Z" odnosi się do równoważnego czasu morskiego.

W przypadku prostych harmonogramów czas rozpoczęcia jest pierwszym wystąpieniem, podczas gdy w przypadku złożonych harmonogramów wyzwalacz nie jest uruchamiany wcześniej niż czas rozpoczęcia. Aby uzyskać więcej informacji na temat dat i godzin rozpoczęcia, zobacz Tworzenie i planowanie regularnie wykonywanych zadań.

<strefa czasowa> String Ma zastosowanie tylko wtedy, gdy określisz godzinę rozpoczęcia, ponieważ ten wyzwalacz nie akceptuje przesunięcia UTC. Określ strefę czasową, którą chcesz zastosować.
<co najmniej jednogodzinne znaczniki> Liczba całkowita lub tablica całkowita Jeśli określisz wartość "Dzień" lub "Tydzień" dla frequencyparametru , możesz określić jedną lub więcej liczb całkowitych z zakresu od 0 do 23, oddzieloną przecinkami, jako godziny dnia, w których chcesz uruchomić przepływ pracy.

Jeśli na przykład określisz wartość "10", "12" i "14", otrzymasz 10:00, 12:00 i 23:00 jako znaczniki godziny.

<co najmniej jednominutowe znaczniki> Liczba całkowita lub tablica całkowita W przypadku określenia wartości "Dzień" lub "Tydzień" frequencydla parametru można określić jedną lub więcej liczb całkowitych z zakresu od 0 do 59 rozdzielonych przecinkami jako minuty godziny, kiedy chcesz uruchomić przepływ pracy.

Można na przykład określić wartość "30" jako znacznik minuty i użyć poprzedniego przykładu dla godzin dnia, otrzymasz 10:30, 12:30 i 14:30.

weekDays Ciąg lub tablica ciągów Jeśli określisz wartość "Tydzień" dla frequencyelementu , możesz określić co najmniej jeden dzień rozdzielony przecinkami, kiedy chcesz uruchomić przepływ pracy: "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota" i "Niedziela"
<maksymalna liczba przebiegów> Liczba całkowita Domyślnie wszystkie wystąpienia przepływu pracy są uruchamiane w tym samym czasie (współbieżnie lub równolegle) do domyślnego limitu. Aby zmienić ten limit, ustawiając nową <wartość licznika> , zobacz Zmienianie współbieżności wyzwalacza.
<max-runs-queue> Liczba całkowita Gdy przepływ pracy jest już uruchomiony maksymalną liczbę wystąpień, które można zmienić na runtimeConfiguration.concurrency.runs podstawie właściwości, wszystkie nowe uruchomienia są umieszczane w tej kolejce do limitu domyślnego. Aby zmienić limit domyślny, zobacz Zmienianie limitu oczekujących przebiegów.
<opcja operacji> String Domyślne zachowanie można zmienić, ustawiając operationOptions właściwość . Aby uzyskać więcej informacji, zobacz Opcje operacji.

Przykład 1

Ten podstawowy wyzwalacz cyklu jest uruchamiany codziennie:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Day",
      "interval": 1
   }
}

Przykład 2

Możesz określić datę i godzinę rozpoczęcia wyzwalacza. Ten wyzwalacz cyklu jest uruchamiany w określonej dacie, a następnie jest uruchamiany codziennie:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Day",
      "interval": 1,
      "startTime": "2017-09-18T00:00:00Z"
   }
}

Przykład 3

Ten wyzwalacz cyklu rozpoczyna się 9 września 2017 o 23:00 i jest uruchamiany co tydzień co poniedziałek o godzinie 10:30, 12:30 i 2:30 Pacyficzny Czas standardowy:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Week",
      "interval": 1,
      "schedule": {
         "hours": [ 10, 12, 14 ],
         "minutes": [ 30 ],
         "weekDays": [ "Monday" ]
      },
      "startTime": "2017-09-07T14:00:00",
      "timeZone": "Pacific Standard Time"
   }
}

Aby uzyskać więcej informacji oraz przykłady dla tego wyzwalacza, zobacz Tworzenie i planowanie regularnego uruchamiania zadań.

Wyzwalacz żądania

Ten wyzwalacz sprawia, że aplikacja logiki może być wywoływana przez utworzenie punktu końcowego, który może akceptować żądania przychodzące. W przypadku tego wyzwalacza podaj schemat JSON, który opisuje i weryfikuje ładunek lub dane wejściowe odbierane przez wyzwalacz z żądania przychodzącego. Schemat ułatwia również odwołanie się do właściwości wyzwalacza z późniejszych akcji w przepływie pracy.

Aby wywołać ten wyzwalacz, należy użyć interfejsu listCallbackUrl API opisanego w interfejsie API REST usługi przepływu pracy. Aby dowiedzieć się, jak używać tego wyzwalacza jako punktu końcowego HTTP, zobacz Wywoływanie, wyzwalanie lub zagnieżdżanie przepływów pracy z punktami końcowymi HTTP.

"manual": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      "method": "<method-type>",
      "relativePath": "<relative-path-for-accepted-parameter>",
      "schema": {
         "type": "object",
         "properties": { 
            "<property-name>": {
               "type": "<property-type>"
            }
         },
         "required": [ "<required-properties>" ]
      }
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-run-queue>
      },
   },
   "operationOptions": "<operation-option>"
}

Wymagane

Wartość Type Opis
<nazwa-właściwości> String Nazwa właściwości w schemacie JSON, która opisuje ładunek
<typ właściwości> String Typ właściwości

Opcjonalne

Wartość Type Opis
<typ metody> String Metoda, która wymaga użycia żądań przychodzących w celu wywołania aplikacji logiki: "GET", "PUT", "POST", "PATCH", "DELETE"
<parametr relative-path-for-accepted-parameter> String Ścieżka względna parametru, który może zaakceptować adres URL punktu końcowego
<wymagane właściwości> Tablica Co najmniej jedna właściwości, która wymaga wartości
<maksymalna liczba przebiegów> Liczba całkowita Domyślnie wszystkie wystąpienia przepływu pracy są uruchamiane w tym samym czasie (współbieżnie lub równolegle) do domyślnego limitu. Aby zmienić ten limit, ustawiając nową <wartość licznika> , zobacz Zmienianie współbieżności wyzwalacza.
<max-runs-queue> Liczba całkowita Gdy przepływ pracy jest już uruchomiony maksymalną liczbę wystąpień, które można zmienić na runtimeConfiguration.concurrency.runs podstawie właściwości, wszystkie nowe uruchomienia są umieszczane w tej kolejce do limitu domyślnego. Aby zmienić limit domyślny, zobacz Zmienianie limitu oczekujących przebiegów.
<opcja operacji> String Domyślne zachowanie można zmienić, ustawiając operationOptions właściwość . Aby uzyskać więcej informacji, zobacz Opcje operacji.

Przykład

Ten wyzwalacz określa, że żądanie przychodzące musi używać metody HTTP POST do wywołania wyzwalacza i zawiera schemat, który weryfikuje dane wejściowe z żądania przychodzącego:

"manual": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      "method": "POST",
      "schema": {
         "type": "object",
         "properties": {
            "customerName": {
               "type": "String"
            },
            "customerAddress": { 
               "type": "Object",
               "properties": {
                  "streetAddress": {
                     "type": "string"
                  },
                  "city": {
                     "type": "string"
                  }
               }
            }
         }
      }
   }
}

Warunki wyzwalacza

W przypadku dowolnego wyzwalacza i tylko wyzwalaczy można dołączyć tablicę zawierającą co najmniej jedno wyrażenie dla warunków określających, czy przepływ pracy powinien być uruchamiany. Aby dodać conditions właściwość do wyzwalacza w przepływie pracy, otwórz aplikację logiki w edytorze widoku kodu.

Można na przykład określić, że wyzwalacz jest uruchamiany tylko wtedy, gdy witryna internetowa zwraca wewnętrzny błąd serwera, odwołując się do kodu stanu wyzwalacza we conditions właściwości:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Hour",
      "interval": 1
   },
   "conditions": [ {
      "expression": "@equals(triggers().code, 'InternalServerError')"
   } ]
}

Domyślnie wyzwalacz jest uruchamiany dopiero po otrzymaniu odpowiedzi "200 OK". Gdy wyrażenie odwołuje się do kodu stanu wyzwalacza, domyślne zachowanie wyzwalacza jest zastępowane. Dlatego jeśli chcesz, aby wyzwalacz był wyzwalany dla więcej niż jednego kodu stanu, takiego jak kod stanu "200" i "201", musisz dołączyć to wyrażenie jako warunek:

@or(equals(triggers().code, 200),equals(triggers().code, 201))

Wyzwalanie wielu przebiegów w tablicy

Jeśli wyzwalacz odbiera tablicę do przetworzenia przepływu pracy, czasami pętla "dla każdego" może potrwać zbyt długo, aby przetworzyć każdy element tablicy. Zamiast tego możesz użyć właściwości SplitOn w wyzwalaczu, aby debatować tablicę. Debatching dzieli elementy tablicy i uruchamia nowe wystąpienie przepływu pracy, które jest uruchamiane dla każdego elementu tablicy. Takie podejście jest przydatne, na przykład w przypadku sondowania punktu końcowego, który może zwracać wiele nowych elementów między interwałami sondowania.

Jeśli plik swagger wyzwalacza opisuje ładunek tablicy, właściwość SplitOn zostanie automatycznie dodana do wyzwalacza. W przeciwnym razie dodaj tę właściwość wewnątrz ładunku odpowiedzi zawierającego tablicę, którą chcesz debatować.

Przed użyciem funkcji SplitOn zapoznaj się z następującymi zagadnieniami:

  • Jeśli współbieżność wyzwalacza jest włączona, limit SplitOn jest znacznie zmniejszony. Jeśli liczba elementów przekroczy ten limit, funkcja SplitOn jest wyłączona.

  • Nie można używać funkcji SplitOn ze wzorcem odpowiedzi synchronicznej. Każdy przepływ pracy, który używa właściwości SplitOn i zawiera akcję odpowiedzi, jest uruchamiana asynchronicznie i natychmiast wysyła 202 ACCEPTED odpowiedź.

  • Aby uzyskać maksymalną liczbę elementów tablicy, któremożna przetworzyć w jednym przebiegu przepływu pracy, zobacz Limity i konfiguracja.

Przykład

Załóżmy, że masz wyzwalacz HTTP, który wywołuje interfejs API i otrzymuje tę odpowiedź:

{
   "Status": "Succeeded",
   "Rows": [ 
      { 
         "id": 938109380,
         "name": "customer-name-one"
      },
      {
         "id": 938109381,
         "name": "customer-name-two"
      }
   ]
}

Przepływ pracy wymaga tylko zawartości z tablicy w Rowspliku , aby można było utworzyć wyzwalacz podobny do następującego przykładu:

"HTTP_Debatch": {
   "type": "Http",
    "inputs": {
        "uri": "https://mydomain.com/myAPI",
        "method": "GET"
    },
   "recurrence": {
      "frequency": "Second",
      "interval": 1
    },
    "splitOn": "@triggerBody()?.Rows"
}

Uwaga

Jeśli używasz SplitOn polecenia , nie możesz pobrać właściwości spoza tablicy. W tym przykładzie nie można pobrać status właściwości w odpowiedzi zwróconej z interfejsu API.

Aby uniknąć błędu, jeśli Rows właściwość nie istnieje, w tym przykładzie użyto ? operatora .

Definicja przepływu pracy może teraz służyć @triggerBody().name do pobierania name wartości, które pochodzą "customer-name-one" z pierwszego uruchomienia i "customer-name-two" z drugiego uruchomienia. W związku z tym dane wyjściowe wyzwalacza wyglądają następująco:

{
   "body": {
      "id": 938109380,
      "name": "customer-name-one"
   }
}
{
   "body": {
      "id": 938109381,
      "name": "customer-name-two"
   }
}

Omówienie akcji

Usługa Azure Logic Apps udostępnia różne typy akcji — każdy z różnymi danymi wejściowymi definiującymi unikatowe zachowanie akcji. Akcje mają te elementy wysokiego poziomu, choć niektóre są opcjonalne:

"<action-name>": {
   "type": "<action-type>",
   "inputs": { 
      "<input-name>": { "<input-value>" },
      "retryPolicy": "<retry-behavior>" 
   },
   "runAfter": { "<previous-trigger-or-action-status>" },
   "runtimeConfiguration": { "<runtime-config-options>" },
   "operationOptions": "<operation-option>"
},

Wymagane

Wartość Type Opis
<nazwa akcji> String Nazwa akcji
<typ akcji> String Typ akcji, na przykład "Http" lub "Api Połączenie ion"
<input-name> String Nazwa danych wejściowych definiujących zachowanie akcji
<input-value> Różne Wartość wejściowa, która może być ciągiem, liczbą całkowitą, obiektem JSON itd.
<previous-trigger-or-action-status> JSON, obiekt Nazwa i wynikowy stan wyzwalacza lub akcji, która musi działać bezpośrednio przed uruchomieniem bieżącej akcji

Opcjonalne

Wartość Type Opis
<zachowanie ponawiania próby> JSON, obiekt Dostosowuje zachowanie ponawiania prób dla sporadycznych błędów, które mają kod stanu 408, 429 i 5XX oraz wszelkie wyjątki łączności. Aby uzyskać więcej informacji, zobacz Zasady ponawiania prób.
<opcje konfiguracji środowiska uruchomieniowego> JSON, obiekt W przypadku niektórych akcji można zmienić zachowanie akcji w czasie wykonywania, ustawiając runtimeConfiguration właściwości. Aby uzyskać więcej informacji, zobacz Ustawienia konfiguracji środowiska uruchomieniowego.
<opcja operacji> String W przypadku niektórych akcji można zmienić domyślne zachowanie, ustawiając operationOptions właściwość . Aby uzyskać więcej informacji, zobacz Opcje operacji.

Lista typów akcji

Poniżej przedstawiono niektóre często używane typy akcji:

Wbudowane akcje

Typ akcji opis
Redaguj Tworzy pojedyncze dane wyjściowe na podstawie danych wejściowych, które mogą mieć różne typy.
Wykonywanie kodu JavaScript Uruchom fragmenty kodu JavaScript, które mieszczą się w określonych kryteriach. Aby uzyskać więcej informacji na temat wymagań dotyczących kodu, zobacz Dodawanie i uruchamianie fragmentów kodu z wbudowanym kodem.
Funkcja Wywołuje funkcję platformy Azure.
HTTP Wywołuje punkt końcowy HTTP.
Dołącz Tworzy ciąg ze wszystkich elementów tablicy i oddziela te elementy określonym znakiem ogranicznika.
Przeanalizuj dane JSON Tworzy przyjazne dla użytkownika tokeny na podstawie właściwości w zawartości JSON. Następnie możesz odwoływać się do tych właściwości, dołączając tokeny w aplikacji logiki.
Zapytanie Tworzy tablicę na podstawie elementów w innej tablicy na podstawie warunku lub filtru.
Response Tworzy odpowiedź na przychodzące połączenie lub żądanie.
Wybieranie Tworzy tablicę z obiektami JSON, przekształcając elementy z innej tablicy na podstawie określonej mapy.
Tabela Tworzy tabelę CSV lub HTML na podstawie tablicy.
Zakończ Zatrzymuje aktywnie uruchomiony przepływ pracy.
Czekaj Wstrzymuje przepływ pracy przez określony czas trwania lub do określonej daty i godziny.
Przepływ pracy Zagnieżdża przepływ pracy wewnątrz innego przepływu pracy.

Akcje zarządzanego interfejsu API

Typ akcji opis
ApiConnection Wywołuje punkt końcowy HTTP przy użyciu interfejsu API zarządzanego przez firmę Microsoft.
Interfejs API Połączenie ionWebhook Działa jak element webhook HTTP, ale korzysta z interfejsu API zarządzanego przez firmę Microsoft.

Kontrolowanie akcji przepływu pracy

Te akcje ułatwiają kontrolowanie wykonywania przepływu pracy i uwzględnianie innych akcji. Spoza akcji przepływu pracy sterowania można bezpośrednio odwoływać się do akcji wewnątrz tej akcji przepływu pracy. Jeśli na przykład masz Http akcję wewnątrz zakresu, możesz odwołać się do @body('Http') wyrażenia z dowolnego miejsca w przepływie pracy. Jednak akcje, które istnieją wewnątrz akcji przepływu pracy sterowania, mogą być uruchamiane tylko po innych akcjach, które znajdują się w tej samej strukturze przepływu pracy sterowania.

Typ akcji opis
ForEach Uruchom te same akcje w pętli dla każdego elementu w tablicy.
If Uruchom akcje na podstawie tego, czy określony warunek ma wartość true, czy false.
Scope Uruchamianie akcji na podstawie stanu grupy z zestawu akcji.
Switch Uruchamiaj akcje uporządkowane w przypadkach, gdy wartości z wyrażeń, obiektów lub tokenów są zgodne z wartościami określonymi przez każdy przypadek.
Do Uruchamiaj akcje w pętli, dopóki określony warunek nie zostanie spełniony.

Akcje — szczegółowa dokumentacja

Akcja interfejsu API Połączenie ion

Ta akcja wysyła żądanie HTTP do interfejsu API zarządzanego przez firmę Microsoft i wymaga informacji o interfejsie API i parametrach oraz odwołaniu do prawidłowego połączenia.

"<action-name>": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<api-name>']['connectionId']"
         },
         "<other-action-specific-input-properties>"        
      },
      "method": "<method-type>",
      "path": "/<api-operation>",
      "retryPolicy": "<retry-behavior>",
      "queries": { "<query-parameters>" },
      "<other-action-specific-properties>"
    },
    "runAfter": {}
}

Wymagane

Wartość Type Opis
<nazwa akcji> String Nazwa akcji dostarczonej przez łącznik
<nazwa interfejsu API> String Nazwa interfejsu API zarządzanego przez firmę Microsoft, który jest używany na potrzeby połączenia
<typ metody> String Metoda HTTP do wywoływania interfejsu API: "GET", "PUT", "POST", "PATCH" lub "DELETE"
<operacja interfejsu API> String Operacja interfejsu API do wywołania

Opcjonalne

Wartość Type Opis
<inne właściwości wejściowe specyficzne dla akcji> JSON, obiekt Wszelkie inne właściwości wejściowe, które mają zastosowanie do tej konkretnej akcji
<zachowanie ponawiania próby> JSON, obiekt Dostosowuje zachowanie ponawiania prób dla sporadycznych błędów, które mają kod stanu 408, 429 i 5XX oraz wszelkie wyjątki łączności. Aby uzyskać więcej informacji, zobacz Zasady ponawiania prób.
<parametry zapytania> JSON, obiekt Wszystkie parametry zapytania do uwzględnienia z wywołaniem interfejsu API.

Na przykład "queries": { "api-version": "2018-01-01" } obiekt dodaje ?api-version=2018-01-01 do wywołania .

<inne właściwości specyficzne dla akcji> JSON, obiekt Wszelkie inne właściwości, które mają zastosowanie do tej konkretnej akcji

Przykład

Ta definicja opisuje akcję Wyślij wiadomość e-mail dla łącznika usługi Office 365 Outlook, która jest interfejsem API zarządzanym przez firmę Microsoft:

"Send_an_email": {
   "type": "ApiConnection",
   "inputs": {
      "body": {
         "Body": "Thank you for your membership!",
         "Subject": "Hello and welcome!",
         "To": "Sophie.Owen@contoso.com"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "POST",
      "path": "/Mail"
    },
    "runAfter": {}
}

Akcja interfejsu API Połączenie ionWebhook

Ta akcja wysyła żądanie subskrypcji za pośrednictwem protokołu HTTP do punktu końcowego przy użyciu interfejsu API zarządzanego przez firmę Microsoft, udostępnia adres URL wywołania zwrotnego, do którego punkt końcowy może wysłać odpowiedź i czeka na odpowiedź punktu końcowego. Aby uzyskać więcej informacji, zobacz Subskrypcje punktów końcowych.

"<action-name>": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "subscribe": {
         "method": "<method-type>",
         "uri": "<api-subscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "retryPolicy": "<retry-behavior>",
         "queries": { "<query-parameters>" },
         "<other-action-specific-input-properties>"
      },
      "unsubscribe": {
         "method": "<method-type>",
         "uri": "<api-unsubscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "<other-action-specific-properties>"
      },
   },
   "runAfter": {}
}

Niektóre wartości, takie jak <typ> metody, są dostępne dla obiektów "subscribe" i "unsubscribe" .

Wymagane

Wartość Type Opis
<nazwa akcji> String Nazwa akcji dostarczonej przez łącznik
<typ metody> String Metoda HTTP do użycia do subskrybowania lub anulowania subskrypcji z punktu końcowego: "GET", "PUT", "POST", "PATCH" lub "DELETE"
<adres URL subskrypcji interfejsu API> String Identyfikator URI do użycia do subskrybowania interfejsu API

Opcjonalne

Wartość Type Opis
<adres URL anulowania subskrypcji interfejsu API> String Identyfikator URI do użycia do anulowania subskrypcji z interfejsu API
<nagłówek-zawartość> JSON, obiekt Wszelkie nagłówki do wysłania w żądaniu

Aby na przykład ustawić język i typ żądania:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

<body-content> JSON, obiekt Dowolna zawartość wiadomości do wysłania w żądaniu
<typ uwierzytelniania> JSON, obiekt Model uwierzytelniania używany przez żądanie do uwierzytelniania żądań wychodzących. Aby uzyskać więcej informacji, zobacz Dodawanie uwierzytelniania do wywołań wychodzących.
<zachowanie ponawiania próby> JSON, obiekt Dostosowuje zachowanie ponawiania prób dla sporadycznych błędów, które mają kod stanu 408, 429 i 5XX oraz wszelkie wyjątki łączności. Aby uzyskać więcej informacji, zobacz Zasady ponawiania prób.
<parametry zapytania> JSON, obiekt Wszystkie parametry zapytania do uwzględnienia z wywołaniem interfejsu API

Na przykład "queries": { "api-version": "2018-01-01" } obiekt dodaje ?api-version=2018-01-01 do wywołania .

<inne właściwości wejściowe specyficzne dla akcji> JSON, obiekt Wszelkie inne właściwości wejściowe, które mają zastosowanie do tej konkretnej akcji
<inne właściwości specyficzne dla akcji> JSON, obiekt Wszelkie inne właściwości, które mają zastosowanie do tej konkretnej akcji

Można również określić limity dla akcji Api Połączenie ionWebhook w taki sam sposób jak limity asynchroniczne HTTP.

Redagowanie akcji

Ta akcja tworzy pojedyncze dane wyjściowe z wielu danych wejściowych, w tym z wyrażeń. Zarówno dane wyjściowe, jak i wejściowe mogą mieć dowolny typ, który usługa Azure Logic Apps natywnie obsługuje, takich jak tablice, obiekty JSON, XML i binarne. Następnie możesz użyć danych wyjściowych akcji w innych akcjach.

"Compose": {
   "type": "Compose",
   "inputs": "<inputs-to-compose>",
   "runAfter": {}
},

Wymagane

Wartość Type Opis
<inputs-to-compose> Dowolne Dane wejściowe do tworzenia pojedynczego danych wyjściowych

Przykład 1

Ta definicja akcji scala abcdefg się z spacją końcową i wartością 1234:

"Compose": {
   "type": "Compose",
   "inputs": "abcdefg 1234",
   "runAfter": {}
},

Oto dane wyjściowe tworzone przez tę akcję:

abcdefg 1234

Przykład 2

Ta definicja akcji scala zmienną ciągu zawierającą abcdefg zmienną całkowitą zawierającą 1234zmienną :

"Compose": {
   "type": "Compose",
   "inputs": "@{variables('myString')}@{variables('myInteger')}",
   "runAfter": {}
},

Oto dane wyjściowe tworzone przez tę akcję:

"abcdefg1234"

Wykonywanie akcji kodu JavaScript

Ta akcja uruchamia fragment kodu JavaScript i zwraca wyniki za pośrednictwem tokenu, do którego mogą odwoływać się kolejne akcje w przepływie pracy.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "<JavaScript-code-snippet>",
      "explicitDependencies": {
         "actions": [ <preceding-actions> ],
         "includeTrigger": true
      }
   },
   "runAfter": {}
}

Wymagane

Wartość Type Opis
<JavaScript-code-snippet> Różne wartości Kod JavaScript, który chcesz uruchomić. Aby uzyskać więcej informacji na temat wymagań dotyczących kodu, zobacz Run code snippets in workflows (Uruchamianie fragmentów kodu w przepływach pracy).

W atrybucie code fragment kodu może używać obiektu tylko workflowContext do odczytu jako danych wejściowych. Ten obiekt ma podwłaściwości, które zapewniają dostęp kodu do danych wyjściowych z wyzwalacza i wszystkich poprzednich akcji w przepływie pracy. Aby uzyskać więcej informacji na temat workflowContext obiektu, zobacz Odwołania wyzwalacz i wyniki akcji przy użyciu obiektu workflowContext.

Wymagane w niektórych przypadkach

Atrybut explicitDependencies określa, że chcesz jawnie uwzględnić wyniki z wyzwalacza, poprzednich akcji lub obu jako zależności dla fragmentu kodu. Aby uzyskać więcej informacji na temat dodawania tych zależności, zobacz Dodawanie zależności jako parametrów do akcji wbudowanego kodu.

Dla atrybutu includeTrigger można określić true lub false wartości.

Wartość Type Opis
<poprzednie akcje> Tablica ciągów Tablica z nazwami akcji w formacie JSON jako zależności. Pamiętaj, aby użyć nazw akcji wyświetlanych w definicji przepływu pracy, w której nazwy akcji używają podkreśleń (_), a nie spacji (" ").

Przykład 1

Ta akcja uruchamia kod, który pobiera nazwę przepływu pracy aplikacji logiki i zwraca tekst "Hello world from <logic-app-name>" w wyniku. W tym przykładzie kod odwołuje się do nazwy przepływu pracy, korzystając workflowContext.workflow.name z właściwości za pośrednictwem obiektu tylko workflowContext do odczytu. Aby uzyskać więcej informacji na temat korzystania z workflowContext obiektu, zobacz Wyzwalacz odwołania i wyniki akcji w kodzie.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "var text = \"Hello world from \" + workflowContext.workflow.name;\r\n\r\nreturn text;"
   },
   "runAfter": {}
}

Przykład 2

Ta akcja uruchamia kod w przepływie pracy aplikacji logiki, który jest wyzwalany po nadejściu nowej wiadomości e-mail na koncie programu Outlook. Przepływ pracy używa również akcji wiadomości e-mail dotyczącej wysyłania zatwierdzenia w usłudze Office 365 Outlook, która przekazuje zawartość odebranej wiadomości e-mail wraz z żądaniem zatwierdzenia.

Kod wyodrębnia adresy e-mail z właściwości wiadomości Body e-mail i zwraca adresy wraz z wartością SelectedOption właściwości z akcji zatwierdzania. Akcja jawnie zawiera akcję Wyślij wiadomość e-mail zatwierdzenia jako zależność w actions obiekcie wewnątrz explicitDependencies obiektu.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "var myResult = /(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\r\n\r\nvar email = workflowContext.trigger.outputs.body.Body;\r\n\r\nvar reply = workflowContext.actions.Send_approval_email.outputs.body.SelectedOption;\r\n\r\nreturn email.match(myResult) + \" - \" + reply;\r\n;",
      "explicitDependencies": {
         "actions": [
            "Send_approval_email"
         ]
      }
   },
   "runAfter": {}
}

Akcja funkcji

Ta akcja wywołuje wcześniej utworzoną funkcję platformy Azure.

"<Azure-function-name>": {
   "type": "Function",
   "inputs": {
     "function": {
        "id": "<Azure-function-ID>"
      },
      "method": "<method-type>",
      "headers": { "<header-content>" },
      "body": { "<body-content>" },
      "queries": { "<query-parameters>" } 
   },
   "runAfter": {}
}

Wymagane

Wartość Type Opis
<Azure-function-ID> String Identyfikator zasobu funkcji platformy Azure, którą chcesz wywołać. Oto format dla tej wartości:

"/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Web/sites/<Azure-function-app-name>/functions/<Azure-function-name>"

<typ metody> String Metoda HTTP używana do wywoływania funkcji: "GET", "PUT", "POST", "PATCH" lub "DELETE"

Jeśli nie zostanie określony, wartością domyślną jest metoda "POST".

Opcjonalne

Wartość Type Opis
<nagłówek-zawartość> JSON, obiekt Wszystkie nagłówki do wysłania za pomocą wywołania

Aby na przykład ustawić język i typ żądania:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

<body-content> JSON, obiekt Dowolna zawartość wiadomości do wysłania w żądaniu
<parametry zapytania> JSON, obiekt Wszystkie parametry zapytania do uwzględnienia z wywołaniem interfejsu API

Na przykład "queries": { "api-version": "2018-01-01" } obiekt dodaje ?api-version=2018-01-01 do wywołania .

<inne właściwości wejściowe specyficzne dla akcji> JSON, obiekt Wszelkie inne właściwości wejściowe, które mają zastosowanie do tej konkretnej akcji
<inne właściwości specyficzne dla akcji> JSON, obiekt Wszelkie inne właściwości, które mają zastosowanie do tej konkretnej akcji

Podczas zapisywania aplikacji logiki aparat usługi Logic Apps wykonuje te kontrole w funkcji, do której odwołuje się odwołanie:

  • Przepływ pracy musi mieć dostęp do funkcji.

  • Przepływ pracy może używać tylko standardowego wyzwalacza HTTP lub ogólnego wyzwalacza elementu webhook JSON.

    Aparat usługi Logic Apps pobiera i buforuje adres URL wyzwalacza, który jest używany w czasie wykonywania. Jeśli jednak jakakolwiek operacja unieważnia buforowany adres URL, akcja funkcji kończy się niepowodzeniem w czasie wykonywania. Aby rozwiązać ten problem, zapisz ponownie aplikację logiki, aby aplikacja logiki pobierała i buforuje adres URL wyzwalacza ponownie.

  • Funkcja nie może mieć zdefiniowanej trasy.

  • Dozwolone są tylko poziomy autoryzacji "function" i "anonymous".

Przykład

Ta definicja akcji wywołuje wcześniej utworzoną funkcję "GetProductID":

"GetProductID": {
   "type": "Function",
   "inputs": {
     "function": {
        "id": "/subscriptions/<XXXXXXXXXXXXXXXXXXXX>/resourceGroups/myLogicAppResourceGroup/providers/Microsoft.Web/sites/InventoryChecker/functions/GetProductID"
      },
      "method": "POST",
      "headers": { 
          "x-ms-date": "@utcnow()"
       },
      "body": { 
          "Product_ID": "@variables('ProductID')"
      }
   },
   "runAfter": {}
}

Akcja HTTP

Ta akcja wysyła żądanie do określonego punktu końcowego HTTP lub HTTPS i sprawdza odpowiedź, aby określić, czy przepływ pracy jest uruchamiany. Aby uzyskać więcej informacji, zobacz Wywoływanie punktów końcowych usługi za pośrednictwem protokołu HTTP lub HTTPS z usługi Azure Logic Apps.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "<method-type>",
      "uri": "<HTTP-or-HTTPS-endpoint-URL>",
      "headers": { "<header-content>" },
      "queries": { "<query-parameters>" },
      "body": "<body-content>",
      "authentication": { "<authentication-type-and-property-values>" },
      "retryPolicy": {
         "type": "<retry-behavior>"
      },
   },
   "runAfter": {}
}

Wymagane

Właściwości Wartość Type Opis
method <typ metody> String Metoda służąca do wysyłania żądania wychodzącego: "GET", "PUT", "POST", "PATCH" lub "DELETE"
uri <Http-or-HTTPS-endpoint-URL> String Adres URL punktu końcowego HTTP lub HTTPS, w którym chcesz wysłać żądanie wychodzące. Maksymalny rozmiar ciągu: 2 KB

W przypadku usługi lub zasobu platformy Azure ta składnia identyfikatora URI zawiera identyfikator zasobu i ścieżkę do zasobu, do którego chcesz uzyskać dostęp.

Opcjonalne

Właściwości Wartość Type Opis
headers <nagłówek-zawartość> JSON, obiekt Wszelkie nagłówki, które należy dołączyć do żądania

Aby na przykład ustawić język i typ:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

queries <parametry zapytania> JSON, obiekt Wszystkie parametry zapytania, które należy użyć w żądaniu

Na przykład "queries": { "api-version": "2018-01-01" } obiekt dodaje ?api-version=2018-01-01 do wywołania .

body <body-content> JSON, obiekt Zawartość wiadomości, która ma być wysyłana jako ładunek z żądaniem
authentication <authentication-type-and-property-values> JSON, obiekt Model uwierzytelniania używany przez żądanie do uwierzytelniania żądań wychodzących. Aby uzyskać więcej informacji, zobacz Dodawanie uwierzytelniania do wywołań wychodzących. Poza usługą Scheduler obsługiwana authority jest właściwość . Jeśli nie zostanie określona, wartość domyślna to https://management.azure.com/, ale można użyć innej wartości.
retryPolicy > type <zachowanie ponawiania próby> JSON, obiekt Dostosowuje zachowanie ponawiania prób dla sporadycznych błędów, które mają kod stanu 408, 429 i 5XX oraz wszelkie wyjątki łączności. Aby uzyskać więcej informacji, zobacz Zasady ponawiania prób.
<inne właściwości wejściowe specyficzne dla akcji> <input-property> JSON, obiekt Wszelkie inne właściwości wejściowe, które mają zastosowanie do tej konkretnej akcji
<inne właściwości specyficzne dla akcji> <właściwość-wartość> JSON, obiekt Wszelkie inne właściwości, które mają zastosowanie do tej konkretnej akcji

Przykład

Ta definicja akcji pobiera najnowsze wiadomości, wysyłając żądanie do określonego punktu końcowego:

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "https://mynews.example.com/latest"
   }
}

Dołączanie do akcji

Ta akcja tworzy ciąg ze wszystkich elementów tablicy i oddziela te elementy określonym znakiem ogranicznika.

"Join": {
   "type": "Join",
   "inputs": {
      "from": <array>,
      "joinWith": "<delimiter>"
   },
   "runAfter": {}
}

Wymagane

Wartość Type Opis
<Tablicy> Tablica Tablica lub wyrażenie zawierające elementy źródłowe. Jeśli określisz wyrażenie, należy ująć to wyrażenie w cudzysłowy.
<Ogranicznik> Ciąg z pojedynczym znakiem Znak oddzielający każdy element w ciągu

Przykład

Załóżmy, że masz wcześniej utworzoną zmienną "myIntegerArray", która zawiera tę tablicę całkowitą:

[1,2,3,4]

Ta definicja akcji pobiera wartości ze zmiennej przy użyciu variables() funkcji w wyrażeniu i tworzy ten ciąg z tymi wartościami, które są oddzielone przecinkiem: "1,2,3,4"

"Join": {
   "type": "Join",
   "inputs": {
      "from": "@variables('myIntegerArray')",
      "joinWith": ","
   },
   "runAfter": {}
}

Analizowanie akcji JSON

Ta akcja tworzy przyjazne dla użytkownika pola lub tokeny na podstawie właściwości w zawartości JSON. Następnie możesz uzyskać dostęp do tych właściwości w aplikacji logiki przy użyciu tokenów. Jeśli na przykład chcesz użyć danych wyjściowych JSON z usług, takich jak Azure Service Bus i Azure Cosmos DB, możesz uwzględnić tę akcję w aplikacji logiki, aby ułatwić odwoływanie się do danych wyjściowych.

"Parse_JSON": {
   "type": "ParseJson",
   "inputs": {
      "content": "<JSON-source>",
         "schema": { "<JSON-schema>" }
      },
      "runAfter": {}
},

Wymagane

Wartość Type Opis
<Źródło JSON> JSON, obiekt Zawartość JSON, którą chcesz przeanalizować
<Schemat JSON> JSON, obiekt Schemat JSON opisujący podstawową zawartość JSON, która jest używana przez akcję do analizowania źródłowej zawartości JSON.

Porada: w usłudze Logic Apps Projektant możesz podać schemat lub podać przykładowy ładunek, aby akcja mogła wygenerować schemat.

Przykład

Ta definicja akcji tworzy te tokeny, których można użyć w przepływie pracy, ale tylko w akcjach uruchamianych po akcji Przeanalizuj kod JSON :

FirstName, LastNamei Email

"Parse_JSON": {
   "type": "ParseJson",
   "inputs": {
      "content": {
         "Member": {
            "Email": "Sophie.Owen@contoso.com",
            "FirstName": "Sophie",
            "LastName": "Owen"
         }
      },
      "schema": {
         "type": "object",
         "properties": {
            "Member": {
               "type": "object",
               "properties": {
                  "Email": {
                     "type": "string"
                  },
                  "FirstName": {
                     "type": "string"
                  },
                  "LastName": {
                     "type": "string"
                  }
               }
            }
         }
      }
   },
   "runAfter": { }
},

W tym przykładzie właściwość "content" określa zawartość JSON dla akcji do analizy. Tę zawartość JSON można również podać jako przykładowy ładunek do generowania schematu.

"content": {
   "Member": { 
      "FirstName": "Sophie",
      "LastName": "Owen",
      "Email": "Sophie.Owen@contoso.com"
   }
},

Właściwość "schema" określa schemat JSON używany do opisywania zawartości JSON:

"schema": {
   "type": "object",
   "properties": {
      "Member": {
         "type": "object",
         "properties": {
            "FirstName": {
               "type": "string"
            },
            "LastName": {
               "type": "string"
            },
            "Email": {
               "type": "string"
            }
         }
      }
   }
}

Akcja kwerendy

Ta akcja tworzy tablicę na podstawie elementów w innej tablicy na podstawie określonego warunku lub filtru.

"Filter_array": {
   "type": "Query",
   "inputs": {
      "from": <array>,
      "where": "<condition-or-filter>"
   },
   "runAfter": {}
}

Wymagane

Wartość Type Opis
<Tablicy> Tablica Tablica lub wyrażenie zawierające elementy źródłowe. Jeśli określisz wyrażenie, należy ująć to wyrażenie w cudzysłowy.
<warunek lub filtr> String Warunek używany do filtrowania elementów w tablicy źródłowej

Uwaga: jeśli żadne wartości nie spełniają warunku, akcja tworzy pustą tablicę.

Przykład

Ta definicja akcji tworzy tablicę zawierającą wartości większe niż określona wartość, czyli dwie:

"Filter_array": {
   "type": "Query",
   "inputs": {
      "from": [ 1, 3, 0, 5, 4, 2 ],
      "where": "@greater(item(), 2)"
   }
}

Response action

Ta akcja tworzy ładunek odpowiedzi na żądanie HTTP.

"Response" {
    "type": "Response",
    "kind": "http",
    "inputs": {
        "statusCode": 200,
        "headers": { <response-headers> },
        "body": { <response-body> }
    },
    "runAfter": {}
},

Wymagane

Wartość Type Opis
<response-status-code> Liczba całkowita Kod stanu HTTP, który jest wysyłany do żądania przychodzącego. Domyślny kod to "200 OK", ale kod może być dowolnym prawidłowym kodem stanu rozpoczynającym się od 2xx, 4xx lub 5xx, ale nie z 3xxx.

Opcjonalne

Wartość Type Opis
<nagłówki odpowiedzi> JSON, obiekt Co najmniej jeden nagłówek do uwzględnienia w odpowiedzi
<treść odpowiedzi> Różne Treść odpowiedzi, która może być ciągiem, obiektem JSON, a nawet zawartością binarną z poprzedniej akcji

Przykład

Ta definicja akcji tworzy odpowiedź na żądanie HTTP z określonym kodem stanu, treścią komunikatu i nagłówkami komunikatów:

"Response": {
   "type": "Response",
   "inputs": {
      "statusCode": 200,
      "body": {
         "ProductID": 0,
         "Description": "Organic Apples"
      },
      "headers": {
         "x-ms-date": "@utcnow()",
         "content-type": "application/json"
      }
   },
   "runAfter": {}
}

Ograniczenia

W przeciwieństwie do innych akcji akcja Odpowiedź ma specjalne ograniczenia:

  • Przepływ pracy może używać akcji Odpowiedź tylko wtedy, gdy przepływ pracy rozpoczyna się od wyzwalacza żądania HTTP, co oznacza, że przepływ pracy musi zostać wyzwolony przez żądanie HTTP.

  • Przepływ pracy może używać akcji Odpowiedź w dowolnym miejscu, z wyjątkiem pętli Foreach, pętli Until, w tym pętli sekwencyjnych i gałęzi równoległych.

  • Oryginalne żądanie pobiera odpowiedź przepływu pracy tylko wtedy, gdy wszystkie akcje wymagane przez akcję Odpowiedź zostaną zakończone w limicie czasu HTTP.

    Jeśli jednak przepływ pracy wywołuje inną aplikację logiki jako zagnieżdżony przepływ pracy, nadrzędny przepływ pracy czeka na zakończenie zagnieżdżonego przepływu pracy, bez względu na to, ile czasu mija przed zakończeniem zagnieżdżonego przepływu pracy.

  • Gdy przepływ pracy używa akcji Odpowiedź i synchronicznego wzorca odpowiedzi, przepływ pracy nie może również używać polecenia splitOn w definicji wyzwalacza, ponieważ to polecenie tworzy wiele uruchomień. Sprawdź, czy w tym przypadku jest używana metoda PUT, a jeśli jest to prawda, zwróć odpowiedź "nieprawidłowe żądanie".

    W przeciwnym razie jeśli przepływ pracy używa polecenia splitOn i akcji Odpowiedź , przepływ pracy jest uruchamiany asynchronicznie i natychmiast zwraca odpowiedź "202 ZAAKCEPTOWANE".

  • Gdy wykonanie przepływu pracy osiągnie akcję Odpowiedź , ale przychodzące żądanie odebrało już odpowiedź, akcja Odpowiedź jest oznaczona jako "Niepowodzenie" z powodu konfliktu. W związku z tym uruchomienie aplikacji logiki jest również oznaczone stanem "Niepowodzenie".

Wybieranie akcji

Ta akcja tworzy tablicę z obiektami JSON, przekształcając elementy z innej tablicy na podstawie określonej mapy. Tablica wyjściowa i tablica źródłowa zawsze mają taką samą liczbę elementów. Chociaż nie można zmienić liczby obiektów w tablicy wyjściowej, można dodawać lub usuwać właściwości i ich wartości w tych obiektach. Właściwość select określa co najmniej jedną parę klucz-wartość, która definiuje mapę przekształcania elementów w tablicy źródłowej. Para klucz-wartość reprezentuje właściwość i jej wartość we wszystkich obiektach w tablicy wyjściowej.

"Select": {
   "type": "Select",
   "inputs": {
      "from": <array>,
      "select": { 
          "<key-name>": "<expression>",
          "<key-name>": "<expression>"        
      }
   },
   "runAfter": {}
},

Wymagane

Wartość Type Opis
<Tablicy> Tablica Tablica lub wyrażenie zawierające elementy źródłowe. Upewnij się, że ujmujesz wyrażenie z podwójnymi cudzysłowami.

Uwaga: jeśli tablica źródłowa jest pusta, akcja tworzy pustą tablicę.

<key-name> String Nazwa właściwości przypisana do wyniku z <wyrażenia>

Aby dodać nową właściwość we wszystkich obiektach w tablicy wyjściowej, podaj <nazwę klucza> dla tej właściwości i <wyrażenie> dla wartości właściwości.

Aby usunąć właściwość ze wszystkich obiektów w tablicy, pomiń <nazwę klucza> dla tej właściwości.

<Wyrażenie> String Wyrażenie, które przekształca element w tablicy źródłowej i przypisuje wynik do <nazwy klucza>

Akcja Wybierz tworzy tablicę jako dane wyjściowe, więc każda akcja, która chce używać tych danych wyjściowych, musi zaakceptować tablicę lub przekonwertować tablicę na typ akceptowany przez akcję odbiorcy. Na przykład, aby przekonwertować tablicę wyjściową na ciąg, możesz przekazać tablicę do akcji Redaguj, a następnie odwołać się do danych wyjściowych z akcji Redaguj w innych akcjach.

Przykład

Ta definicja akcji tworzy tablicę obiektów JSON z tablicy całkowitej. Akcja iteruje za pośrednictwem tablicy źródłowej, pobiera każdą wartość całkowitą przy użyciu @item() wyrażenia i przypisuje każdą wartość do właściwości "number" w każdym obiekcie JSON:

"Select": {
   "type": "Select",
   "inputs": {
      "from": [ 1, 2, 3 ],
      "select": { 
         "number": "@item()" 
      }
   },
   "runAfter": {}
},

Oto tablica tworzona przez tę akcję:

[ { "number": 1 }, { "number": 2 }, { "number": 3 } ]

Aby użyć tych danych wyjściowych tablicy w innych akcjach, przekaż te dane wyjściowe do akcji Redaguj:

"Compose": {
   "type": "Compose",
   "inputs": "@body('Select')",
   "runAfter": {
      "Select": [ "Succeeded" ]
   }
},

Następnie możesz użyć danych wyjściowych z akcji Redaguj w innych akcjach, na przykład akcji Office 365 Outlook — Wyślij wiadomość e-mail :

"Send_an_email": {
   "type": "ApiConnection",
   "inputs": {
      "body": {
         "Body": "@{outputs('Compose')}",
         "Subject": "Output array from Select and Compose actions",
         "To": "<your-email@domain>"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "post",
      "path": "/Mail"
   },
   "runAfter": {
      "Compose": [ "Succeeded" ]
   }
},

Akcja tabeli

Ta akcja tworzy tabelę CSV lub HTML na podstawie tablicy. W przypadku tablic z obiektami JSON ta akcja automatycznie tworzy nagłówki kolumn z nazw właściwości obiektów. W przypadku tablic z innymi typami danych należy określić nagłówki i wartości kolumn. Na przykład ta tablica zawiera właściwości "ID" i "Product_Name", których ta akcja może użyć dla nazw nagłówków kolumn:

[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]

"Create_<CSV | HTML>_table": {
   "type": "Table",
   "inputs": {
      "format": "<CSV | HTML>",
      "from": <array>,
      "columns": [ 
         {
            "header": "<column-name>",
            "value": "<column-value>"
         },
         {
            "header": "<column-name>",
            "value": "<column-value>"
         } 
      ]
   },
   "runAfter": {}
}

Wymagane

Wartość Type Opis
<CSV lub HTML> String Format tabeli, którą chcesz utworzyć
<Tablicy> Tablica Tablica lub wyrażenie, które udostępnia elementy źródłowe dla tabeli

Uwaga: jeśli tablica źródłowa jest pusta, akcja tworzy pustą tabelę.

Opcjonalne

Aby określić lub dostosować nagłówki i wartości kolumn, użyj tablicy columns . Gdy header-value pary mają taką samą nazwę nagłówka, ich wartości są wyświetlane w tej samej kolumnie pod tą nazwą nagłówka. W przeciwnym razie każdy unikatowy nagłówek definiuje unikatową kolumnę.

Wartość Type Opis
<nazwa kolumny> String Nazwa nagłówka kolumny
<kolumna-wartość> Dowolne Wartość w tej kolumnie

Przykład 1

Załóżmy, że masz wcześniej utworzoną zmienną "myItemArray", która obecnie zawiera tę tablicę:

[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]

Ta definicja akcji tworzy tabelę CSV ze zmiennej "myItemArray". Wyrażenie używane przez from właściwość pobiera tablicę z "myItemArray" przy użyciu variables() funkcji :

"Create_CSV_table": {
   "type": "Table",
   "inputs": {
      "format": "CSV",
      "from": "@variables('myItemArray')"
   },
   "runAfter": {}
}

Oto tabela CSV tworzona przez tę akcję:

ID,Product_Name 
0,Apples 
1,Oranges 

Przykład 2

Ta definicja akcji tworzy tabelę HTML ze zmiennej "myItemArray". Wyrażenie używane przez from właściwość pobiera tablicę z "myItemArray" przy użyciu variables() funkcji :

"Create_HTML_table": {
   "type": "Table",
   "inputs": {
      "format": "HTML",
      "from": "@variables('myItemArray')"
   },
   "runAfter": {}
}

Oto tabela HTML tworzona przez tę akcję:

IDProduct_Name
0Jabłka
1Pomarańcze

Przykład 3

Ta definicja akcji tworzy tabelę HTML ze zmiennej "myItemArray". Ten przykład zastępuje jednak domyślne nazwy nagłówków kolumn z wartościami "Stock_ID" i "Description" oraz dodaje wyraz "Organic" do wartości w kolumnie "Description".

"Create_HTML_table": {
   "type": "Table",
   "inputs": {
      "format": "HTML",
      "from": "@variables('myItemArray')",
      "columns": [ 
         {
            "header": "Stock_ID",
            "value": "@item().ID"
         },
         {
            "header": "Description",
            "value": "@concat('Organic ', item().Product_Name)"
         }
      ]
    },
   "runAfter": {}
},

Oto tabela HTML tworzona przez tę akcję:

Stock_IDopis
0Jabłka organiczne
1Pomarańcze organiczne

Akcja kończenie

Ta akcja zatrzymuje przebieg dla wystąpienia przepływu pracy, anuluje wszystkie akcje w toku, pomija wszelkie pozostałe akcje i zwraca określony stan. Na przykład możesz użyć akcji Zakończ , gdy aplikacja logiki musi całkowicie zakończyć działanie ze stanu błędu. Ta akcja nie ma wpływu na już ukończone akcje i nie może być wyświetlana w pętlach Foreach i Until , w tym w pętlach sekwencyjnych.

"Terminate": {
   "type": "Terminate",
   "inputs": {
       "runStatus": "<status>",
       "runError": {
            "code": "<error-code-or-name>",
            "message": "<error-message>"
       }
   },
   "runAfter": {}
}

Wymagane

Wartość Type Opis
<status> String Stan, który ma zostać zwrócony dla przebiegu: "Niepowodzenie", "Anulowane" lub "Powodzenie"

Opcjonalne

Właściwości obiektu "runStatus" mają zastosowanie tylko wtedy, gdy właściwość "runStatus" jest ustawiona na stan "Niepowodzenie".

Wartość Type Opis
<error-code-or-name> String Kod lub nazwa błędu
<komunikat o błędzie> String Komunikat lub tekst opisujący błąd i wszelkie akcje, które użytkownik aplikacji może wykonać

Przykład

Ta definicja akcji zatrzymuje przebieg przepływu pracy, ustawia stan uruchomienia na "Niepowodzenie" i zwraca stan, kod błędu i komunikat o błędzie:

"Terminate": {
    "type": "Terminate",
    "inputs": {
        "runStatus": "Failed",
        "runError": {
            "code": "Unexpected response",
            "message": "The service received an unexpected response. Please try again."
        }
   },
   "runAfter": {}
}

Akcja oczekiwania

Ta akcja wstrzymuje wykonywanie przepływu pracy dla określonego interwału lub do określonego czasu, ale nie obu.

Określony interwał

"Delay": {
   "type": "Wait",
   "inputs": {
      "interval": {
         "count": <number-of-units>,
         "unit": "<interval>"
      }
   },
   "runAfter": {}
},

Określony czas

"Delay_until": {
   "type": "Wait",
   "inputs": {
      "until": {
         "timestamp": "<date-time-stamp>"
      }
   },
   "runAfter": {}
},

Wymagane

Wartość Type Opis
<liczba jednostek> Liczba całkowita W przypadku akcji Opóźnienie liczba jednostek do oczekiwania
<interval> String W przypadku akcji Opóźnienie interwał oczekiwania: "Sekunda", "Minuta", "Godzina", "Dzień", "Tydzień", "Miesiąc"
<sygnatura daty i godziny> String W przypadku akcji Opóźnienie do daty i godziny wznowienia wykonywania. Ta wartość musi używać formatu daty i godziny UTC.

Przykład 1

Ta definicja akcji wstrzymuje przepływ pracy przez 15 minut:

"Delay": {
   "type": "Wait",
   "inputs": {
      "interval": {
         "count": 15,
         "unit": "Minute"
      }
   },
   "runAfter": {}
},

Przykład 2

Ta definicja akcji wstrzymuje przepływ pracy do określonego czasu:

"Delay_until": {
   "type": "Wait",
   "inputs": {
      "until": {
         "timestamp": "2017-10-01T00:00:00Z"
      }
   },
   "runAfter": {}
},

Akcja Przepływ pracy

Ta akcja wywołuje inną wcześniej utworzoną aplikację logiki, co oznacza, że można dołączać i ponownie używać innych przepływów pracy aplikacji logiki. Można również użyć danych wyjściowych z podrzędnej lub zagnieżdżonej aplikacji logiki w akcjach, które są zgodne z zagnieżdżonym aplikacją logiki, pod warunkiem, że podrzędna aplikacja logiki zwraca odpowiedź.

Aparat usługi Logic Apps sprawdza dostęp do wyzwalacza, który chcesz wywołać, więc upewnij się, że masz dostęp do tego wyzwalacza. Ponadto zagnieżdżona aplikacja logiki musi spełniać następujące kryteria:

  • Wyzwalacz sprawia, że zagnieżdżona aplikacja logiki może być wywoływana, na przykład żądanie lub wyzwalacz HTTP

  • Ta sama subskrypcja platformy Azure co nadrzędna aplikacja logiki

  • Aby korzystać z danych wyjściowych z zagnieżdżonej aplikacji logiki w nadrzędnej aplikacji logiki, zagnieżdżona aplikacja logiki musi mieć akcję Odpowiedź

"<nested-logic-app-name>": {
   "type": "Workflow",
   "inputs": {
      "body": { "<body-content" },
      "headers": { "<header-content>" },
      "host": {
         "triggerName": "<trigger-name>",
         "workflow": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Logic/<nested-logic-app-name>"
         }
      }
   },
   "runAfter": {}
}

Wymagane

Wartość Type Opis
<zagnieżdżona nazwa aplikacji logiki> String Nazwa aplikacji logiki, którą chcesz wywołać
<nazwa wyzwalacza> String Nazwa wyzwalacza w zagnieżdżonej aplikacji logiki, którą chcesz wywołać
<Identyfikator subskrypcji platformy Azure> String Identyfikator subskrypcji platformy Azure dla zagnieżdżonej aplikacji logiki
<Azure-resource-group> String Nazwa grupy zasobów platformy Azure dla zagnieżdżonej aplikacji logiki

Opcjonalne

Wartość Type Opis
<nagłówek-zawartość> JSON, obiekt Wszystkie nagłówki do wysłania za pomocą wywołania
<body-content> JSON, obiekt Dowolna zawartość wiadomości do wysłania za pomocą połączenia

Dane wyjściowe

Dane wyjściowe tej akcji różnią się w zależności od akcji Odpowiedź zagnieżdżonej aplikacji logiki. Jeśli zagnieżdżona aplikacja logiki nie zawiera akcji Odpowiedź, dane wyjściowe są puste.

Przykład

Po pomyślnym zakończeniu akcji "Start_search" ta definicja akcji przepływu pracy wywołuje inną aplikację logiki o nazwie "Get_product_information", która przekazuje określone dane wejściowe:

"actions": {
   "Start_search": { <action-definition> },
   "Get_product_information": {
      "type": "Workflow",
      "inputs": {
         "body": {
            "ProductID": "24601",
         },
         "host": {
            "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/InventoryManager-RG/providers/Microsoft.Logic/Get_product_information",
            "triggerName": "Find_product"
         },
         "headers": {
            "content-type": "application/json"
         }
      },
      "runAfter": { 
         "Start_search": [ "Succeeded" ]
      }
   }
},

Szczegóły akcji przepływu pracy sterowania

Akcja Foreach

Ta akcja pętli iteruje przez tablicę i wykonuje akcje na każdym elemencie tablicy. Domyślnie pętla "dla każdego" jest uruchamiana równolegle do maksymalnej liczby pętli. Aby uzyskać tę maksymalną wartość, zobacz Limity i konfiguracja. Dowiedz się , jak utworzyć pętle "dla każdego".

"For_each": {
   "type": "Foreach",
   "actions": { 
      "<action-1>": { "<action-definition-1>" },
      "<action-2>": { "<action-definition-2>" }
   },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": <count>
      }
    },
    "operationOptions": "<operation-option>"
}

Wymagane

Wartość Type Opis
<action-1... N> String Nazwy akcji uruchamianych w każdym elemencie tablicy
<action-definition-1... N> JSON, obiekt Definicje akcji, które są uruchamiane
<wyrażenie -for-each> String Wyrażenie odwołujące się do każdego elementu w określonej tablicy

Opcjonalne

Wartość Type Opis
<count> Liczba całkowita Domyślnie iteracje pętli "dla każdego" są uruchamiane w tym samym czasie (współbieżnie lub równolegle) do domyślnego limitu. Aby zmienić ten limit, ustawiając nową <wartość licznika> , zobacz Zmienianie współbieżności pętli "dla każdego".
<opcja operacji> String Aby uruchomić pętlę "dla każdego" sekwencyjnie, a nie równolegle, ustaw <opcję> operacji na Sequential wartość lub <zlicz> wartość 1, ale nie obie. Aby uzyskać więcej informacji, zobacz Sekwencyjnie uruchamianie pętli "dla każdego".

Przykład

Ta pętla "dla każdego" wysyła wiadomość e-mail dla każdego elementu w tablicy, który zawiera załączniki z przychodzącej wiadomości e-mail. Pętla wysyła wiadomość e-mail, w tym załącznik, do osoby, która przegląda załącznik.

"For_each": {
   "type": "Foreach",
   "actions": {
      "Send_an_email": {
         "type": "ApiConnection",
         "inputs": {
            "body": {
               "Body": "@base64ToString(items('For_each')?['Content'])",
               "Subject": "Review attachment",
               "To": "Sophie.Owen@contoso.com"
                },
            "host": {
               "connection": {
                  "id": "@parameters('$connections')['office365']['connectionId']"
               }
            },
            "method": "post",
            "path": "/Mail"
         },
         "runAfter": {}
      }
   },
   "foreach": "@triggerBody()?['Attachments']",
   "runAfter": {}
}

Aby określić tylko tablicę, która jest przekazywana jako dane wyjściowe z wyzwalacza, to wyrażenie pobiera <tablicę nazw> tablicy z treści wyzwalacza. Aby uniknąć błędu, jeśli tablica nie istnieje, wyrażenie używa ? operatora :

@triggerBody()?['<array-name>']

Jeśli akcja

Ta akcja, która jest instrukcją warunkową, oblicza wyrażenie reprezentujące warunek i uruchamia inną gałąź na podstawie tego, czy warunek ma wartość true, czy false. Jeśli warunek ma wartość true, warunek jest oznaczony stanem "Powodzenie". Dowiedz się , jak tworzyć instrukcje warunkowe.

"Condition": {
   "type": "If",
   "expression": { "<condition>" },
   "actions": {
      "<action-1>": { "<action-definition>" }
   },
   "else": {
      "actions": {
        "<action-2>": { "<action-definition" }
      }
   },
   "runAfter": {}
}
Wartość Type Opis
<Warunek> JSON, obiekt Warunek, który może być wyrażeniem, aby ocenić
<action-1> JSON, obiekt Akcja do uruchomienia, gdy <warunek> ma wartość true
<action-definition> JSON, obiekt Definicja akcji
<action-2> JSON, obiekt Akcja do uruchomienia, gdy <warunek> daje wartość false

Akcje w actions obiektach lub else uzyskują następujące stany:

  • "Powodzenie" po uruchomieniu i pomyślnym zakończeniu
  • "Niepowodzenie", gdy są uruchamiane i kończą się niepowodzeniem
  • "Pominięto", gdy odpowiednia gałąź nie jest uruchamiana

Przykład

Ten warunek określa, że gdy zmienna całkowita ma wartość większą niż zero, przepływ pracy sprawdza witrynę internetową. Jeśli zmienna ma wartość zero lub mniej, przepływ pracy sprawdza inną witrynę internetową.

"Condition": {
   "type": "If",
   "expression": {
      "and": [ {
         "greater": [ "@variables('myIntegerVariable')", 0 ] 
      } ]
   },
   "actions": { 
      "HTTP - Check this website": {
         "type": "Http",
         "inputs": {
         "method": "GET",
            "uri": "http://this-url"
         },
         "runAfter": {}
      }
   },
   "else": {
      "actions": {
         "HTTP - Check this other website": {
            "type": "Http",
            "inputs": {
               "method": "GET",
               "uri": "http://this-other-url"
            },
            "runAfter": {}
         }
      }
   },
   "runAfter": {}
}

Jak warunki używają wyrażeń

Poniżej przedstawiono kilka przykładów pokazujących, jak można używać wyrażeń w warunkach:

JSON Result
"expression": "@parameters('<hasSpecialAction>')" Tylko w przypadku wyrażeń logicznych warunek przekazuje dowolną wartość, która daje wartość true.

Aby przekonwertować inne typy na wartość logiczną, użyj następujących funkcji: empty() lub equals().

"expression": "@greater(actions('<action>').output.value, parameters('<threshold>'))" W przypadku funkcji porównania akcja jest uruchamiana tylko wtedy, gdy dane wyjściowe z <akcji> są większe niż wartość progowa<>.
"expression": "@or(greater(actions('<action>').output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100)" W przypadku funkcji logiki i tworzenia zagnieżdżonych wyrażeń logicznych akcja jest uruchamiana, gdy dane wyjściowe z <akcji> są większe niż <wartość progowa> lub poniżej 100.
"expression": "@equals(length(actions('<action>').outputs.errors), 0))" Do sprawdzania, czy tablica zawiera jakiekolwiek elementy, można użyć funkcji tablicy. Akcja jest uruchamiana, gdy tablica jest pusta errors .

Akcja zakresu

Ta akcja logicznie grupuje akcje w zakresy, które uzyskują własny stan po zakończeniu działania akcji w tym zakresie. Następnie możesz użyć stanu zakresu, aby określić, czy są uruchamiane inne akcje. Dowiedz się , jak tworzyć zakresy.

"Scope": {
   "type": "Scope",
   "actions": {
      "<inner-action-1>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      },
      "<inner-action-2>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      }
   }
}

Wymagane

Wartość Type Opis
<inner-action-1... N> JSON, obiekt Co najmniej jedna akcja uruchamiana wewnątrz zakresu
<action-inputs> JSON, obiekt Dane wejściowe dla każdej akcji

Akcja Przełącznik

Ta akcja, znana również jako instrukcja switch, organizuje inne akcje w przypadkach i przypisuje wartość do każdego przypadku, z wyjątkiem przypadku domyślnego, jeśli istnieje. Po uruchomieniu przepływu pracy akcja Przełącz porównuje wartość z wyrażenia, obiektu lub tokenu z wartościami określonymi dla każdego przypadku. Jeśli akcja Przełącz znajdzie pasujący przypadek, przepływ pracy uruchamia tylko akcje dla tego przypadku. Za każdym razem, gdy akcja Przełącz jest uruchamiana, istnieje tylko jeden pasujący przypadek lub nie ma pasujących dopasowań. Jeśli nie ma dopasowań, akcja Przełącz uruchamia akcje domyślne. Dowiedz się , jak tworzyć instrukcje switch.

"Switch": {
   "type": "Switch",
   "expression": "<expression-object-or-token>",
   "cases": {
      "Case": {
         "actions": {
           "<action-name>": { "<action-definition>" }
         },
         "case": "<matching-value>"
      },
      "Case_2": {
         "actions": {
           "<action-name>": { "<action-definition>" }
         },
         "case": "<matching-value>"
      }
   },
   "default": {
      "actions": {
         "<default-action-name>": { "<default-action-definition>" }
      }
   },
   "runAfter": {}
}

Wymagane

Wartość Type Opis
<expression-object-or-token> Różne wartości Wyrażenie, obiekt JSON lub token do oceny
<nazwa akcji> String Nazwa akcji do uruchomienia dla pasującego przypadku
<action-definition> JSON, obiekt Definicja akcji do uruchomienia dla pasującego przypadku
<dopasowywanie wartości> Różne wartości Wartość do porównania z obliczonym wynikiem

Opcjonalne

Wartość Type Opis
<default-action-name> String Nazwa akcji domyślnej do uruchomienia, gdy nie istnieje pasujący przypadek
<default-action-definition> JSON, obiekt Definicja akcji do uruchomienia, gdy nie istnieje pasujący przypadek

Przykład

Ta definicja akcji ocenia, czy osoba odpowiadająca na wiadomość e-mail z żądaniem zatwierdzenia wybrała opcję "Zatwierdź" lub opcję "Odrzuć". Na podstawie tego wyboru akcja Przełącz uruchamia akcje dla pasującego przypadku, czyli wysłanie kolejnej wiadomości e-mail do obiektu odpowiadającego, ale z innym sformułowaniem w każdym przypadku.

"Switch": {
   "type": "Switch",
   "expression": "@body('Send_approval_email')?['SelectedOption']",
   "cases": {
      "Case": {
         "actions": {
            "Send_an_email": { 
               "type": "ApiConnection",
               "inputs": {
                  "Body": "Thank you for your approval.",
                  "Subject": "Response received", 
                  "To": "Sophie.Owen@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/Mail"
            },
            "runAfter": {}
         },
         "case": "Approve"
      },
      "Case_2": {
         "actions": {
            "Send_an_email_2": { 
               "type": "ApiConnection",
               "inputs": {
                  "Body": "Thank you for your response.",
                  "Subject": "Response received", 
                  "To": "Sophie.Owen@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/Mail"
            },
            "runAfter": {}     
         },
         "case": "Reject"
      }
   },
   "default": {
      "actions": { 
         "Send_an_email_3": { 
            "type": "ApiConnection",
            "inputs": {
               "Body": "Please respond with either 'Approve' or 'Reject'.",
               "Subject": "Please respond", 
               "To": "Sophie.Owen@contoso.com"
            },
            "host": {
               "connection": {
                  "name": "@parameters('$connections')['office365']['connectionId']"
               }
            },
            "method": "post",
            "path": "/Mail"
         },
         "runAfter": {} 
      }
   },
   "runAfter": {
      "Send_approval_email": [ 
         "Succeeded"
      ]
   }
}

Do momentu wykonania akcji

Ta akcja pętli zawiera akcje uruchamiane do momentu spełnienia określonego warunku. Pętla sprawdza warunek jako ostatni krok po uruchomieniu wszystkich innych akcji. W obiekcie można uwzględnić więcej niż jedną akcję "actions" , a akcja musi zdefiniować co najmniej jeden limit. Dowiedz się , jak tworzyć pętle "until".

 "Until": {
   "type": "Until",
   "actions": {
      "<action-name>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      },
      "<action-name>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      }
   },
   "expression": "<condition>",
   "limit": {
      "count": <loop-count>,
      "timeout": "<loop-timeout>"
   },
   "runAfter": {}
}
Wartość Type Opis
<nazwa akcji> String Nazwa akcji, którą chcesz uruchomić wewnątrz pętli
<typ akcji> String Typ akcji, który chcesz uruchomić
<action-inputs> Różne Dane wejściowe akcji do uruchomienia
<Warunek> String Warunek lub wyrażenie, które ma być obliczane po zakończeniu działania wszystkich akcji w pętli
<liczba pętli> Liczba całkowita Limit największej liczby pętli, które można uruchomić. Aby uzyskać więcej informacji na temat domyślnego limitu i maksymalnego limitu, zobacz Limity i konfiguracja usługi Azure Logic Apps.
<limit czasu pętli> String Limit najdłuższego czasu, w jaki pętla może działać. Wartość domyślna timeout to PT1H, która jest wymaganym formatem ISO 8601.

Uwaga

Jeśli wyrażenie zależy od danych wyjściowych z dowolnej akcji w pętli Until, upewnij się, że uwzględniasz wszelkie błędy wynikające z tej akcji.

Przykład

Ta definicja akcji pętli wysyła żądanie HTTP do określonego adresu URL do momentu spełnienia jednego z następujących warunków:

  • Żądanie otrzymuje odpowiedź z kodem stanu "200 OK".
  • Pętla została uruchomiona 60 razy.
  • Pętla została uruchomiona przez jedną godzinę.
 "Run_until_loop_succeeds_or_expires": {
    "type": "Until",
    "actions": {
        "HTTP": {
            "type": "Http",
            "inputs": {
                "method": "GET",
                "uri": "http://myurl"
            },
            "runAfter": {}
        }
    },
    "expression": "@equals(outputs('HTTP')['statusCode'], 200)",
    "limit": {
        "count": 60,
        "timeout": "PT1H"
    },
    "runAfter": {}
}

Elementy webhook i subskrypcje

Wyzwalacze i akcje oparte na elementach webhook nie regularnie sprawdzają punktów końcowych, ale czekają na określone zdarzenia lub dane w tych punktach końcowych. Te wyzwalacze i akcje subskrybują punkty końcowe, podając adres URL wywołania zwrotnego, pod którym punkt końcowy może wysyłać odpowiedzi.

Wywołanie subscribe odbywa się, gdy przepływ pracy zmienia się w dowolny sposób, na przykład po odnowieniu poświadczeń lub gdy parametry wejściowe zmieniają się dla wyzwalacza lub akcji. To wywołanie używa tych samych parametrów co standardowe akcje HTTP.

Wywołanie unsubscribe odbywa się automatycznie, gdy operacja powoduje, że wyzwalacz lub akcja są nieprawidłowe, na przykład:

  • Usuwanie lub wyłączanie wyzwalacza.
  • Usuwanie lub wyłączanie przepływu pracy.
  • Usuwanie lub wyłączanie subskrypcji.

Aby obsługiwać te wywołania, @listCallbackUrl() wyrażenie zwraca unikatowy "adres URL wywołania zwrotnego" dla wyzwalacza lub akcji. Ten adres URL reprezentuje unikatowy identyfikator punktów końcowych korzystających z interfejsu API REST usługi. Parametry tej funkcji są takie same jak wyzwalacz lub akcja elementu webhook.

Zmienianie czasu trwania asynchronicznego

W przypadku wyzwalaczy i akcji można ograniczyć czas trwania wzorca asynchronicznego do określonego przedziału czasu, dodając limit.timeout właściwość . W ten sposób, jeśli akcja nie została zakończona po upływie interwału, stan akcji jest oznaczony jako Cancelled kod ActionTimedOut . Właściwość timeout używa formatu ISO 8601.

"<trigger-or-action-name>": {
   "type": "Workflow | Webhook | Http | ApiConnectionWebhook | ApiConnection",
   "inputs": {},
   "limit": {
      "timeout": "PT10S"
   },
   "runAfter": {}
}

Ustawienia konfiguracji środowiska uruchomieniowego

Domyślne zachowanie środowiska uruchomieniowego dla wyzwalaczy i akcji można zmienić, dodając te runtimeConfiguration właściwości do definicji wyzwalacza lub akcji.

Właściwość Type Opis Wyzwalacz lub akcja
runtimeConfiguration.concurrency.runs Liczba całkowita Zmień domyślny limit liczby wystąpień przepływu pracy, które mogą być uruchamiane jednocześnie (współbieżnie lub równolegle). Dostosowanie tej wartości może pomóc ograniczyć liczbę żądań odbieranych przez systemy zaplecza.

runs Ustawienie właściwości w taki 1 sam sposób, jak ustawienie operationOptions właściwości na SingleInstance. Można ustawić jedną z tych właściwości, ale nie obie.

Aby zmienić limit domyślny, zobacz Zmienianie współbieżności wyzwalacza lub sekwencyjnie wystąpień wyzwalacza.

Wszystkie wyzwalacze
runtimeConfiguration.concurrency.maximumWaitingRuns Liczba całkowita Zmień domyślny limit liczby wystąpień przepływu pracy, które muszą czekać na uruchomienie, gdy aplikacja logiki jest już uruchomiona maksymalnie współbieżnych wystąpień.

Aby zmienić limit domyślny, zobacz Zmienianie limitu oczekujących przebiegów.

Wszystkie wyzwalacze
runtimeConfiguration.concurrency.repetitions Liczba całkowita Zmień domyślny limit liczby iteracji pętli "dla każdego", które mogą być uruchamiane jednocześnie (współbieżnie lub równolegle).

repetitions Ustawienie właściwości w taki 1 sam sposób, jak ustawienie operationOptions właściwości na SingleInstance. Można ustawić jedną z tych właściwości, ale nie obie.

Aby zmienić limit domyślny, zobacz Zmienianie współbieżności "dla każdego" lub Uruchamianie pętli "dla każdego" sekwencyjnie.

Działania:

Foreach

runtimeConfiguration.paginationPolicy.minimumItemCount Liczba całkowita W przypadku określonych akcji, które obsługują i mają włączone stronicowanie, ta wartość określa minimalną liczbę wyników do pobrania.

Aby włączyć stronicowanie, zobacz Pobieranie danych zbiorczych, elementów lub wyników przy użyciu stronicowania

Działanie: zróżnicowane
runtimeConfiguration.secureData.properties Tablica W przypadku wielu wyzwalaczy i akcji te ustawienia ukrywają dane wejściowe, wyjściowe lub oba te ustawienia z historii uruchamiania aplikacji logiki.

Aby dowiedzieć się więcej na temat ochrony tych danych, zobacz Ukrywanie danych wejściowych i wyjściowych z historii uruchamiania.

Większość wyzwalaczy i akcji
runtimeConfiguration.staticResult JSON, obiekt W przypadku akcji, które obsługują i mają włączone ustawienie statycznego wyniku , staticResult obiekt ma następujące atrybuty:

- name, który odwołuje się do statycznej nazwy definicji wyniku bieżącej akcji, która jest wyświetlana definition wewnątrz atrybutu w atrybucie staticResults przepływu pracy aplikacji logiki. Aby uzyskać więcej informacji, zobacz Statyczne wyniki — dokumentacja schematu dla języka definicji przepływu pracy.

- staticResultOptions, który określa, czy wyniki statyczne są, czy nie dla Enabled bieżącej akcji.

Aby włączyć wyniki statyczne, zobacz Testowanie aplikacji logiki przy użyciu pozornych danych przez skonfigurowanie wyników statycznych

Działanie: zróżnicowane

Opcje operacji

Możesz zmienić domyślne zachowanie wyzwalaczy i akcji za pomocą operationOptions właściwości w definicji wyzwalacza lub akcji.

Opcja operacji Type Opis Wyzwalacz lub akcja
DisableAsyncPattern String Uruchamiaj akcje oparte na protokole HTTP synchronicznie, a nie asynchronicznie.

Aby ustawić tę opcję, zobacz Synchroniczne uruchamianie akcji.

Działania:

Api Połączenie ion,
HTTP,
Response

IncludeAuthorizationHeadersInOutputs String W przypadku aplikacji logiki, które umożliwiają uwierzytelnianie OAuth z identyfikatorem Entra firmy Microsoft w celu autoryzowania dostępu do wywołań przychodzących do punktu końcowego wyzwalacza opartego na żądaniach, dołącz Authorization nagłówek z tokenu dostępu OAuth w danych wyjściowych wyzwalacza. Aby uzyskać więcej informacji, zobacz Dołączanie nagłówka "Autoryzacja" w danych wyjściowych wyzwalacza żądania. Wyzwalaczy:

Żądanie,
Element webhook protokołu HTTP

Sequential String Uruchom iterację pętli "dla każdego" pojedynczo, a nie jednocześnie jednocześnie.

Ta opcja działa tak samo jak ustawienie runtimeConfiguration.concurrency.repetitions właściwości na 1. Można ustawić jedną z tych właściwości, ale nie obie.

Aby ustawić tę opcję, zobacz Sekwencyjnie uruchamianie pętli "dla każdego".

Działania:

Foreach

SingleInstance String Uruchom wyzwalacz dla każdego wystąpienia aplikacji logiki sekwencyjnie i poczekaj na zakończenie poprzedniego aktywnego przebiegu przed wyzwoleniem kolejnego wystąpienia aplikacji logiki.

Ta opcja działa tak samo jak ustawienie runtimeConfiguration.concurrency.runs właściwości na 1. Można ustawić jedną z tych właściwości, ale nie obie.

Aby ustawić tę opcję, zobacz Wyzwalanie wystąpień sekwencyjnie.

Wszystkie wyzwalacze
SuppressWorkflowHeaders String Nie wysyłaj x-ms-* nagłówków metadanych w żądaniach wychodzących. Domyślnie usługa Azure Logic Apps zawiera dodatkowe nagłówki metadanych z prefiksem x-ms- w nazwie nagłówka w ramach żądań wychodzących. Jednak niektóre starsze usługi nie akceptują żądań z dodatkowymi nieznanymi nagłówkami, co powoduje niepowodzenie żądań. Działania:

HTTP,
Funkcja,
ApiManagement

SuppressWorkflowHeadersOnResponse String Nie wysyłaj x-ms-* nagłówków metadanych w odpowiedziach na żądania wyzwalacza przychodzącego. Domyślnie usługa Azure Logic Apps wysyła odpowiedzi do żądań przychodzących, które zawierają dodatkowe nagłówki metadanych z prefiksem x-ms- w nazwie nagłówka. Jednak niektóre starsze usługi nie akceptują żądań ani odpowiedzi z dodatkowymi nieznanymi nagłówkami, co powoduje niepowodzenie żądań. Wyzwalaczy:

Żądanie,
Element webhook protokołu HTTP

Zmienianie współbieżności wyzwalaczy

Domyślnie wystąpienia przepływu pracy aplikacji logiki są uruchamiane jednocześnie (współbieżnie lub równolegle). To zachowanie oznacza, że każde wystąpienie wyzwalacza jest uruchamiane przed zakończeniem działania wcześniej aktywnego wystąpienia przepływu pracy. Jednak liczba równoczesnych uruchomionych wystąpień ma domyślny limit. Gdy liczba współbieżnie uruchomionych wystąpień przepływu pracy osiągnie ten limit, wszystkie inne nowe wystąpienia muszą czekać na uruchomienie. Ten limit pomaga kontrolować liczbę żądań odbieranych przez systemy zaplecza.

Po włączeniu kontrolki współbieżności wyzwalacza wystąpienia wyzwalacza są uruchamiane równolegle do limitu domyślnego. Aby zmienić ten domyślny limit współbieżności, możesz użyć edytora widoku kodu lub usługi Logic Apps Projektant, ponieważ zmiana ustawienia współbieżności za pośrednictwem projektanta dodaje lub aktualizuje runtimeConfiguration.concurrency.runs właściwość w podstawowej definicji wyzwalacza i odwrotnie. Ta właściwość steruje maksymalną liczbą nowych wystąpień przepływu pracy, które mogą być uruchamiane równolegle.

Przed włączeniem współbieżności na wyzwalaczu zapoznaj się z następującymi zagadnieniami:

  • Nie można wyłączyć współbieżności po włączeniu kontrolki współbieżności.

  • Jeśli maksymalna liczba współbieżnych uruchomień wyzwalacza osiągnie maksymalny stopień równoległości, kolejne uruchomienia wyzwalacza mogą napotkać ograniczanie przepustowości lub błędy "429 — zbyt wiele żądań". Jeśli skonfigurujesz zasady ponawiania, które obsługują błędy 429, wyzwalacz może napotkać cykl ponawiania próby i ograniczania przepustowości, co powoduje długie opóźnienia przetwarzania nowych żądań wyzwalacza.

  • Po włączeniu współbieżności limit SplitOn jest znacznie zmniejszony dla tablic dyskusyjnych. Jeśli liczba elementów przekroczy ten limit, funkcja SplitOn jest wyłączona.

  • Po włączeniu współbieżności długotrwałe wystąpienie aplikacji logiki może spowodować wprowadzenie stanu oczekiwania przez nowe wystąpienia aplikacji logiki. Ten stan uniemożliwia usłudze Azure Logic Apps tworzenie nowych wystąpień i występuje nawet wtedy, gdy liczba współbieżnych przebiegów jest mniejsza niż określona maksymalna liczba współbieżnych uruchomień.

    • Aby przerwać ten stan, anuluj najwcześniejsze wystąpienia, które nadal działają.

      1. W menu aplikacji logiki wybierz pozycję Przegląd.

      2. W sekcji Historia przebiegów wybierz najwcześniejsze wystąpienie, które jest nadal uruchomione, na przykład:

        Select earliest running instance

        Napiwek

        Aby wyświetlić tylko uruchomione wystąpienia, otwórz listę Wszystkie i wybierz pozycję Uruchomione.

      3. W obszarze Uruchamianie aplikacji logiki wybierz pozycję Anuluj przebieg.

        Find earliest running instance

    • Aby obejść tę możliwość, dodaj limit czasu do każdej akcji, która może pomieścić te uruchomienia. Jeśli pracujesz w edytorze kodu, zobacz Zmienianie czasu trwania asynchronicznego. W przeciwnym razie, jeśli używasz projektanta, wykonaj następujące kroki:

      1. W przepływie pracy aplikacji logiki wybierz akcję, w której chcesz dodać limit czasu. W prawym górnym rogu akcji wybierz przycisk wielokropka (...), a następnie wybierz Ustawienia.

        Open action settings

      2. W obszarze Limit czasu określ czas trwania limitu czasu w formacie ISO 8601.

        Specify timeout duration

  • Aby uruchomić aplikację logiki sekwencyjnie, ustaw współbieżność wyzwalacza na 1 wartość przy użyciu edytora widoku kodu lub projektanta. Upewnij się, że nie ustawiono również właściwości wyzwalacza operationOptions na SingleInstance wartość w edytorze widoku kodu. W przeciwnym razie zostanie wyświetlony błąd weryfikacji. Aby uzyskać więcej informacji, zobacz Wyzwalanie wystąpień sekwencyjnie.

Edytuj w widoku kodu

W podstawowej definicji wyzwalacza dodaj runtimeConfiguration.concurrency.runs właściwość i ustaw wartość na podstawie limitów współbieżności wyzwalacza. Aby uruchomić przepływ pracy sekwencyjnie, ustaw wartość właściwości na 1.

Ten przykład ogranicza współbieżne uruchomienia do 10 wystąpień:

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": 10
      }
   }
}

Aby uzyskać więcej informacji, zobacz Ustawienia konfiguracji środowiska uruchomieniowego.

Edytowanie w usłudze Logic Apps Projektant

  1. W prawym górnym rogu wyzwalacza wybierz przycisk wielokropka (...), a następnie wybierz Ustawienia.

  2. W obszarze Kontrolka współbieżności ustaw wartość Limit na Włączone.

  3. Przeciągnij suwak Degree of Parallelism (Stopień równoległości) do żądanej wartości. Aby uruchomić aplikację logiki sekwencyjnie, przeciągnij wartość suwaka na 1.

Zmiana współbieżności "dla każdego"

Domyślnie iteracje pętli "dla każdego" są uruchamiane jednocześnie (współbieżnie lub równolegle). To zachowanie oznacza, że każda iteracja rozpoczyna działanie przed zakończeniem poprzedniej iteracji. Jednak liczba współbieżnych iteracji ma domyślny limit. Gdy liczba jednoczesnie uruchomionych iteracji osiągnie ten limit, wszystkie inne iteracji muszą czekać na uruchomienie.

Aby zmienić limit domyślny, możesz użyć edytora widoku kodu lub usługi Logic Apps Projektant, ponieważ zmiana ustawienia współbieżności za pomocą projektanta dodaje lub aktualizuje runtimeConfiguration.concurrency.repetitions właściwość w podstawowej definicji akcji "dla każdego" i odwrotnie. Ta właściwość steruje maksymalną liczbą iteracji, które mogą być uruchamiane równolegle.

Uwaga

Jeśli ustawisz akcję "dla każdego", która będzie uruchamiana sekwencyjnie przy użyciu projektanta lub edytora widoku kodu, nie ustawiaj właściwości akcji operationOptions na Sequential wartość w edytorze widoku kodu. W przeciwnym razie zostanie wyświetlony błąd weryfikacji. Aby uzyskać więcej informacji, zobacz Sekwencyjnie uruchamianie pętli "dla każdego".

Edytuj w widoku kodu

W podstawowej definicji "dla każdej" dodaj lub zaktualizuj runtimeConfiguration.concurrency.repetitions właściwość, która może mieć wartość z zakresu od 1 i 50.

Oto przykład, który ogranicza współbieżne uruchomienia do 10 iteracji:

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": 10
      }
   }
}

Aby uzyskać więcej informacji, zobacz Ustawienia konfiguracji środowiska uruchomieniowego.

Edytowanie w usłudze Logic Apps Projektant

  1. W obszarze Dla każdej akcji w prawym górnym rogu wybierz przycisk wielokropka (...), a następnie wybierz Ustawienia.

  2. W obszarze Kontrolka współbieżności ustaw dla kontrolki współbieżności wartość Włączone.

  3. Przeciągnij suwak Degree of Parallelism (Stopień równoległości) do żądanej wartości. Aby uruchomić aplikację logiki sekwencyjnie, przeciągnij wartość suwaka na 1.

Zmienianie limitu oczekujących przebiegów

Domyślnie wystąpienia przepływu pracy aplikacji logiki są uruchamiane jednocześnie (współbieżnie lub równolegle). To zachowanie oznacza, że każde wystąpienie wyzwalacza jest uruchamiane przed zakończeniem działania wcześniej aktywnego wystąpienia przepływu pracy. Istnieje jednak domyślny limit liczby równoczesnych uruchomionych wystąpień przepływu pracy. Gdy liczba współbieżnych przebiegów osiągnie ten limit, wszystkie inne nowe wystąpienia przepływu pracy muszą czekać na uruchomienie. Istnieje również limit domyślny liczby oczekujących wystąpień przepływu pracy. Gdy liczba oczekujących wystąpień osiągnie ten limit, aparat usługi Azure Logic Apps nie akceptuje już nowych wystąpień przepływu pracy do uruchomienia. Wyzwalacze żądań i elementów webhook zwracają błąd 429 — zbyt wiele żądań, a wyzwalacze cykliczne zaczynają pomijać próby sondowania.

Możesz zmienić domyślny limit współbieżności wyzwalacza, a także domyślny limit oczekujących przebiegów. Jednak ta zmiana spowalnia przede wszystkim wyzwalacz, aby złagodzić ciśnienie z powodu współbieżności. Jeśli na przykład masz wyzwalacz sondowania, a kolejka oczekujących przebiegów jest pełna z powodu przebiegów w toku, usługa Azure Logic Apps przestanie sondować. Jeśli przepływ pracy używa wyzwalacza opartego na żądaniach, a kolejka oczekujących przebiegów jest pełna, usługa Azure Logic Apps zacznie zwracać błąd 429. Istnieją pewne scenariusze, w których usługa Azure Logic Apps nie może zatrzymać wyzwalacza z sondowania bez wprowadzania błędów i decyduje się na dodanie takich przebiegów do kolejki oczekujących przebiegów bez niepowodzenia przebiegów wywołań.

W podstawowej definicji wyzwalacza dodaj runtimeConfiguration.concurrency.maximumWaitingRuns właściwość , która może mieć wartość z zakresu od 1 do 100.

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "maximumWaitingRuns": 50
      }
   }
}

Aby uzyskać więcej informacji, zobacz Ustawienia konfiguracji środowiska uruchomieniowego.

Sekwencyjnie wyzwalacz wystąpień

Aby uruchomić każde wystąpienie przepływu pracy aplikacji logiki dopiero po zakończeniu działania poprzedniego wystąpienia, ustaw wyzwalacz, aby był uruchamiany sekwencyjnie. Możesz użyć edytora widoku kodu lub usługi Logic Apps Projektant, ponieważ zmiana ustawienia współbieżności za pomocą projektanta powoduje również dodanie lub zaktualizowanie runtimeConfiguration.concurrency.runs właściwości w podstawowej definicji wyzwalacza i odwrotnie.

Uwaga

Po ustawieniu wyzwalacza do uruchomienia sekwencyjnie przy użyciu projektanta lub edytora widoku kodu nie należy ustawiać właściwości wyzwalacza operationOptions na Sequential wartość w edytorze widoku kodu. W przeciwnym razie zostanie wyświetlony błąd weryfikacji.

Edytuj w widoku kodu

W definicji wyzwalacza ustaw jedną z tych właściwości, ale nie obie.

runtimeConfiguration.concurrency.runs Ustaw właściwość na 1:

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": 1
      }
   }
}

-Lub-

operationOptions Ustaw właściwość na SingleInstance:

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "operationOptions": "SingleInstance"
}

Aby uzyskać więcej informacji, zobacz Ustawienia konfiguracji środowiska uruchomieniowego i Opcje operacji.

Edytowanie w usłudze Logic Apps Projektant

  1. W prawym górnym rogu wyzwalacza wybierz przycisk wielokropka (...), a następnie wybierz Ustawienia.

  2. W obszarze Kontrolka współbieżności ustaw wartość Limit na Włączone.

  3. Przeciągnij suwak Degree of Parallelism (Stopień równoległości) do liczby 1.

Sekwencyjnie uruchamiaj pętle "dla każdego"

Aby uruchomić iterację pętli "dla każdego" dopiero po zakończeniu poprzedniej iteracji, ustaw akcję "dla każdego", aby uruchamiać sekwencyjnie. Możesz użyć edytora widoku kodu lub usługi Logic Apps Projektant, ponieważ zmiana współbieżności akcji za pomocą projektanta również dodaje lub aktualizuje runtimeConfiguration.concurrency.repetitions właściwość w podstawowej definicji akcji i na odwrót.

Uwaga

Po ustawieniu akcji "dla każdego" uruchamianej sekwencyjnie przy użyciu projektanta lub edytora widoku kodu nie należy ustawiać właściwości akcji operationOptions na Sequential w edytorze widoku kodu. W przeciwnym razie zostanie wyświetlony błąd weryfikacji.

Edytuj w widoku kodu

W definicji akcji ustaw jedną z tych właściwości, ale nie obie.

runtimeConfiguration.concurrency.repetitions Ustaw właściwość na 1:

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": 1
      }
   }
}

-Lub-

operationOptions Ustaw właściwość na Sequential:

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "operationOptions": "Sequential"
}

Aby uzyskać więcej informacji, zobacz Ustawienia konfiguracji środowiska uruchomieniowego i Opcje operacji.

Edytowanie w usłudze Logic Apps Projektant

  1. W prawym górnym rogu każdej akcji wybierz przycisk wielokropka (...), a następnie wybierz Ustawienia.

  2. W obszarze Kontrolka współbieżności ustaw dla kontrolki współbieżności wartość Włączone.

  3. Przeciągnij suwak Degree of Parallelism (Stopień równoległości) do liczby 1.

Uruchamianie akcji we wzorcu operacji synchronicznej

Domyślnie akcja HTTP i akcje interfejsu API Połączenie ion w usłudze Azure Logic Apps są zgodne ze standardowym wzorcem operacji asynchronicznej, a akcja Odpowiedź jest zgodna ze wzorcem operacji synchronicznej. Wzorzec asynchroniczny określa, że po wywołaniu akcji lub wysłaniu żądania do określonego punktu końcowego, usługi, systemu lub interfejsu API odbiorca natychmiast zwraca odpowiedź "ZAAKCEPTOWANE" 202. Ten kod potwierdza, że odbiorca zaakceptował żądanie, ale nie zakończył przetwarzania. Odpowiedź może zawierać location nagłówek, który określa adres URL i identyfikator odświeżania, którego obiekt wywołujący może używać do ciągłego sondowania lub sprawdzania stanu żądania asynchronicznego, dopóki odbiorca nie przestanie przetwarzać i zwraca odpowiedź powodzenia "200 OK" lub inną odpowiedź inną niż 202. Aby uzyskać więcej informacji, zobacz Asynchroniczne integracje mikrousług wymusza autonomię mikrousług.

  • W Projektant aplikacji logiki akcje HTTP, interfejs API Połączenie ion i akcja odpowiedź mają ustawienie Wzorzec asynchroniczny. Po włączeniu tego ustawienia określa, że obiekt wywołujący nie czeka na zakończenie przetwarzania i może przejść do następnej akcji, ale kontynuuje sprawdzanie stanu do momentu zatrzymania przetwarzania. Jeśli to ustawienie jest wyłączone, określa, że obiekt wywołujący czeka na zakończenie przetwarzania przed przejściem do następnej akcji. Aby znaleźć to ustawienie, wykonaj następujące kroki:

    1. Na pasku tytułu akcji HTTP wybierz przycisk wielokropka (...), który otwiera ustawienia akcji.

    2. Znajdź ustawienie Wzorzec asynchroniczny.

  • W podstawowej definicji kodu JavaScript Object Notation (JSON) akcji HTTP i akcji interfejsu API Połączenie ion niejawnie postępuj zgodnie ze wzorcem operacji asynchronicznej.

W niektórych scenariuszach zamiast tego możesz chcieć wykonać akcję zgodnie ze wzorcem synchronicznym. Na przykład w przypadku korzystania z akcji HTTP możesz wykonać następujące czynności:

W takich przypadkach można wykonać akcję synchronicznie, używając następujących opcji:

Wyłącz ustawienie asynchronicznego wzorca

  1. W Projektant aplikacji logiki na pasku tytułu akcji wybierz przycisk wielokropka (...), który otwiera ustawienia akcji.

  2. Znajdź ustawienie Wzorzec asynchroniczny, włącz ustawienie Wyłączone, jeśli jest włączone, i wybierz pozycję Gotowe.

    Turn off

Wyłącz wzorzec asynchroniczny w definicji JSON akcji

W podstawowej definicji JSON akcji dodaj i ustaw właściwość "operationOptions" na wartość "DisableAsyncPattern" w sekcji akcji "inputs" , na przykład:

"<some-long-running-action>": {
   "type": "Http",
   "inputs": { "<action-inputs>" },
   "operationOptions": "DisableAsyncPattern",
   "runAfter": {}
}

Uwierzytelnianie wyzwalaczy i akcji

Punkty końcowe HTTP i HTTPS obsługują różne rodzaje uwierzytelniania. Na podstawie wyzwalacza lub akcji używanej do nawiązywania wywołań wychodzących lub żądań dostępu do tych punktów końcowych można wybrać spośród różnych zakresów typów uwierzytelniania. Aby uzyskać więcej informacji, zobacz Dodawanie uwierzytelniania do wywołań wychodzących.

Następne kroki