Uruchamianie fragmentów kodu w przepływach pracy przy użyciu operacji kodu wbudowanego w usłudze Azure Logic Apps

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

Aby utworzyć i uruchomić fragment kodu w przepływie pracy aplikacji logiki bez dużej ilości konfiguracji, możesz użyć wbudowanego łącznika kodu wbudowanego w tekście. Ten łącznik ma akcję zwracającą wynik z fragmentu kodu, dzięki czemu można użyć tych danych wyjściowych w kolejnych akcjach przepływu pracy.

Obecnie łącznik ma tylko jedną akcję, która najlepiej sprawdza się w przypadku fragmentu kodu z następującymi atrybutami, ale więcej akcji jest w programowania. Wbudowany łącznik kodu wbudowanego ma również różne limity w zależności od tego, czy przepływ pracy aplikacji logiki jest zużyciem, czy standardowym.

Akcja Język Wersja języka Czas trwania przebiegu Rozmiar danych Inne uwagi
Wykonywanie kodu JavaScript JavaScript Standardowa:
Node.js 16.x.x

Zużycie:
Node.js 8.11.1

Aby uzyskać więcej informacji, zapoznaj się z tematem Obiekty wbudowane w warstwie Standardowa.
Kończy się w ciągu 5 sekund lub mniej. Obsługuje dane do 50 MB. — Nie wymaga pracy z akcjami Zmienne, które nie są obsługiwane przez akcję.

— Nie obsługuje funkcji do uruchamiania require() języka JavaScript.

Aby uruchomić kod, który nie pasuje do tych atrybutów, można zamiast tego utworzyć i wywołać funkcję za pomocą Azure Functions.

W tym artykule pokazano, jak działa akcja w przykładowym przepływie pracy rozpoczynającym się od wyzwalacza Office 365 Outlook. Przepływ pracy jest uruchamiany po nadejściu nowej wiadomości e-mail na skojarzonym koncie e-mail programu Outlook. Przykładowy fragment kodu wyodrębnia wszystkie adresy e-mail, które istnieją w treści wiadomości e-mail, i zwraca te adresy jako dane wyjściowe, których można użyć w kolejnej akcji.

Na poniższym diagramie przedstawiono wyróżnienia z przykładowego przepływu pracy:

Wymagania wstępne

Dodawanie akcji Wykonaj kod JavaScript

  1. W Azure Portal otwórz przepływ pracy aplikacji logiki Zużycie w projektancie.

  2. W projektancie wykonaj następujące ogólne kroki, aby dodać akcję Kod wbudowany o nazwie Wykonaj kod JavaScript do przepływu pracy.

    Ten przykład dodaje akcję w ramach wyzwalacza Office 365 Outlook. Domyślnie akcja zawiera przykładowy kod, w tym instrukcję return .

    Zrzut ekranu przedstawiający akcję Wykonaj kod JavaScript z domyślnym przykładowym kodem.

  3. W polu Kod usuń przykładowy kod i wprowadź kod. Napisz kod, który należy umieścić wewnątrz metody, ale bez podpisu metody.

    Porada

    Gdy kursor znajduje się w polu Kod , zostanie wyświetlona lista zawartości dynamicznej. Mimo że użyjesz tej listy później, możesz zignorować i pozostawić listę otwartą na razie. Nie zaznaczaj opcji Ukryj.

    Jeśli zaczniesz wpisywać rozpoznane słowo kluczowe, zostanie wyświetlona lista autouzupełniania, aby można było wybrać spośród dostępnych słów kluczowych, na przykład:

    Zrzut ekranu przedstawiający przepływ pracy Zużycie, akcję Wykonaj kod JavaScript i listę autouzupełniania słów kluczowych.

    Poniższy przykładowy fragment kodu najpierw tworzy zmienną o nazwie myResult , która przechowuje wyrażenie regularne, które określa wzorzec zgodny z tekstem wejściowym. Następnie kod tworzy zmienną o nazwie email , która przechowuje zawartość treści wiadomości e-mail z danych wyjściowych wyzwalacza.

    Zrzut ekranu przedstawiający przepływ pracy Zużycie, akcję Wykonaj kod JavaScript i przykładowy kod, który tworzy zmienne.

  4. Gdy kursor nadal znajduje się w polu Kod , na otwartej liście zawartości dynamicznej znajdź sekcję Po nadejściu nowej wiadomości e-mail i wybierz właściwość Treść , która odwołuje się do treści wiadomości e-mail.

    Zrzut ekranu przedstawiający wybrany przepływ pracy Zużycie, akcję Wykonaj kod JavaScript, listę zawartości dynamicznej i właściwość

    Lista zawartości dynamicznej zawiera dane wyjściowe z wyzwalacza i wszystkie poprzednie akcje, gdy te dane wyjściowe są zgodne z formatem wejściowym pola edycji, które jest obecnie w fokusie. Ta lista ułatwia korzystanie z tych danych wyjściowych i odwoływanie się do nich z przepływu pracy. W tym przykładzie lista zawiera dane wyjściowe z wyzwalacza programu Outlook, w tym właściwość Treść wiadomości e-mail.

    Po wybraniu właściwości Treść akcja Wykonaj kod JavaScript rozpoznaje token dla obiektu JSON tylko workflowContext do odczytu, którego fragment kodu może używać jako danych wejściowych. Obiekt workflowContext zawiera właściwości, które zapewniają dostęp kodu do danych wyjściowych z wyzwalacza i poprzednich akcji w przepływie pracy, takich jak właściwość wyzwalacza body , która różni się od właściwości Treść wiadomości e-mail. Aby uzyskać więcej informacji na temat workflowContext obiektu, zobacz Odwołania wyzwalacz i dane wyjściowe akcji przy użyciu obiektu workflowContext w dalszej części tego artykułu.

    Ważne

    Jeśli fragment kodu odwołuje się do nazw akcji zawierających operator kropki (.), te odwołania muszą ująć te nazwy akcji za pomocą nawiasów kwadratowych ([]) i cudzysłowów (""), na przykład:

    // Correct
    workflowContext.actions["my.action.name"].body

    // Incorrect
    workflowContext.actions.my.action.name.body

    Ponadto w akcji Wykonaj kod JavaScript należy dodać parametr Actions, a następnie dodać te nazwy akcji do tego parametru. Aby uzyskać więcej informacji, zobacz Dodawanie zależności jako parametrów do akcji Wykonaj kod JavaScript w dalszej części tego artykułu.

  5. Aby odróżnić właściwość Treść wiadomości e-mail wybraną z właściwości wyzwalacza body , zmień nazwę drugiej body właściwości na Body . Dodaj średnik zamykający (;) na końcu, aby zakończyć instrukcję kodu.

    Zrzut ekranu przedstawiający przepływ pracy aplikacji logiki Zużycie, akcję Wykonaj kod JavaScript i zmieniono nazwę właściwości

    Akcja Wykonaj kod JavaScript nie wymaga instrukcji return . Jednak przez dołączenie instrukcji return można łatwiej odwoływać się do wyników akcji w dalszej części przepływu pracy przy użyciu tokenu Wynik w kolejnych akcjach.

    W tym przykładzie fragment kodu zwraca wynik przez wywołanie match() funkcji , która znajduje wszystkie dopasowania w treści wiadomości e-mail do określonego wyrażenia regularnego. Następnie akcja Utwórz tabelę HTML używa tokenu Result do odwoływanie się do wyników z akcji Wykonaj kod JavaScript i tworzy pojedynczy wynik.

    Zrzut ekranu przedstawiający ukończony przepływ pracy aplikacji logiki Zużycie.

  6. Gdy wszystko będzie gotowe, zapisz przepływ pracy.

Wyzwalacz odwołania i dane wyjściowe akcji przy użyciu obiektu workflowContext

Z poziomu fragmentu kodu w projektancie możesz użyć listy zawartości dynamicznej, aby wybrać token, który odwołuje się do danych wyjściowych z wyzwalacza lub dowolnej poprzedniej akcji. Po wybraniu tokenu akcja Wykonaj kod JavaScript rozpoznaje ten token do obiektu JSON tylko workflowContext do odczytu. Ten obiekt zapewnia dostęp kodu do danych wyjściowych z wyzwalacza, wszelkich poprzednich akcji i przepływu pracy. Obiekt używa następującej struktury i zawiera actionswłaściwości , triggeri workflow , które są również obiektami:

{
   "workflowContext": {
      "actions": {
         "<action-name-1>": @actions('<action-name-1>'),
         "<action-name-2>": @actions('<action-name-2>')
      },
      "trigger": {
         @trigger()
      },
      "workflow": {
         @workflow()
      }
   }
}

Poniższa tabela zawiera więcej informacji o tych właściwościach:

Właściwość Typ Opis
actions Kolekcja obiektów Obiekty wynikowe z poprzednich akcji uruchamianych przed uruchomieniem fragmentu kodu. Każdy obiekt ma parę klucz-wartość , gdzie klucz jest nazwą akcji, a wartość jest równoważna wynikowi wywołania funkcji actions() z wyrażeniem @actions('<action-name>') .

Nazwa akcji używa tej samej nazwy akcji, która jest wyświetlana w bazowej definicji przepływu pracy, która zastępuje spacje (" ") w nazwie akcji podkreśleniami (_). Ta kolekcja obiektów zapewnia dostęp do wartości właściwości akcji z bieżącego uruchomienia wystąpienia przepływu pracy.
trigger Obiekt Obiekt wynikowy z wyzwalacza, w którym wynik jest odpowiednikiem wywołania funkcji trigger(). Ten obiekt zapewnia dostęp do wartości właściwości wyzwalacza z bieżącego uruchomienia wystąpienia przepływu pracy.
workflow Obiekt Obiekt przepływu pracy, który jest odpowiednikiem wywołania funkcji workflow(). Ten obiekt zapewnia dostęp do wartości właściwości, takich jak nazwa przepływu pracy, identyfikator uruchomienia itd., z bieżącego uruchomienia wystąpienia przepływu pracy.

W tym przykładzie workflowContext w tym artykule obiekt JSON może mieć następujące przykładowe właściwości i wartości z wyzwalacza programu Outlook:

{
   "workflowContext": {
      "trigger": {
         "name": "When_a_new_email_arrives",
         "inputs": {
            "host": {
               "connection": {
                  "name": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Web/connections/office365"
               }
            },
            "method": "get",
            "path": "/Mail/OnNewEmail",
            "queries": {
               "includeAttachments": "False"
            }
         },
         "outputs": {
            "headers": {
               "Pragma": "no-cache",
               "Content-Type": "application/json; charset=utf-8",
               "Expires": "-1",
               "Content-Length": "962095"
            },
            "body": {
               "Id": "AAMkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgBGAAAAAABmZwxUQtCGTqSPpjjMQeD",
               "DateTimeReceived": "2019-03-28T19:42:16+00:00",
               "HasAttachment": false,
               "Subject": "Hello World",
               "BodyPreview": "Hello World",
               "Importance": 1,
               "ConversationId": "AAQkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgAQ",
               "IsRead": false,
               "IsHtml": true,
               "Body": "Hello World",
               "From": "<sender>@<domain>.com",
               "To": "<recipient-2>@<domain>.com;<recipient-2>@<domain>.com",
               "Cc": null,
               "Bcc": null,
               "Attachments": []
            }
         },
         "startTime": "2019-05-03T14:30:45.971564Z",
         "endTime": "2019-05-03T14:30:50.1746874Z",
         "scheduledTime": "2019-05-03T14:30:45.8778117Z",
         "trackingId": "1cd5ffbd-f989-4df5-a96a-6e9ce31d03c5",
         "clientTrackingId": "08586447130394969981639729333CU06",
         "originHistoryName": "08586447130394969981639729333CU06",
         "code": "OK",
         "status": "Succeeded"
      },
      "workflow": {
         "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>",
         "name": "<logic-app-workflow-name>",
         "type": "Microsoft.Logic/workflows",
         "location": "<Azure-region>",
         "run": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>/runs/08586453954668694173655267965CU00",
            "name": "08586453954668694173655267965CU00",
            "type": "Microsoft.Logic/workflows/runs"
         }
      }
   }
}

Dodawanie zależności jako parametrów do akcji Wykonywanie kodu JavaScript

W niektórych scenariuszach może być konieczne jawne wymaganie, aby akcja Wykonaj kod JavaScript zawierała dane wyjściowe z wyzwalacza lub akcji, do których odwołuje się kod jako zależności. Na przykład musisz wykonać ten dodatkowy krok, gdy kod odwołuje się do danych wyjściowych, które nie są dostępne w czasie wykonywania przepływu pracy. W czasie tworzenia przepływu pracy aparat usługi Azure Logic Apps analizuje fragment kodu, aby określić, czy kod odwołuje się do dowolnego wyzwalacza lub danych wyjściowych akcji. Jeśli te odwołania istnieją, aparat automatycznie uwzględnia te dane wyjściowe. W czasie wykonywania przepływu pracy, jeśli w obiekcie nie znaleziono workflowContext przywołynego wyzwalacza lub akcji, aparat generuje błąd. Aby rozwiązać ten błąd, musisz dodać ten wyzwalacz lub akcję jako jawną zależność dla akcji Wykonaj kod JavaScript . Innym scenariuszem, który wymaga wykonania tego kroku, jest to, gdy workflowContext obiekt odwołuje się do wyzwalacza lub nazwy akcji, która używa operatora kropki (.).

Aby dodać wyzwalacz lub akcję jako zależność, należy dodać parametry Wyzwalacz lub Akcje zgodnie z zasadami do akcji Wykonaj kod JavaScript . Następnie należy dodać nazwy wyzwalacza lub akcji w miarę ich wyświetlania w bazowej definicji JSON przepływu pracy.

Uwaga

Nie można dodawać operacji zmiennych , pętli, takich jak Dla każdej lub Do, i indeksów iteracji jako jawnych zależności.

Jeśli planujesz ponownie użyć kodu, pamiętaj, aby zawsze używać pola edycji fragmentu kodu, aby odwołać się do wyzwalacza i danych wyjściowych akcji. Dzięki temu kod zawiera odwołania do rozpoznanego tokenu, a nie tylko dodać wyzwalacz lub dane wyjściowe akcji jako jawne zależności.

Załóżmy na przykład, że akcja wiadomości e-mail wyślij zatwierdzenie łącznika programu Outlook Office 365 poprzedza fragment kodu w przykładowym przepływie pracy. Poniższy przykładowy fragment kodu zawiera odwołanie do danych wyjściowych SelectedOption z tej akcji.

W tym przykładzie musisz dodać tylko parametr Actions , a następnie dodać nazwę JSON akcji , Send_approval_emaildo parametru . W ten sposób określisz, że akcja Wykonaj kod JavaScript jawnie zawiera dane wyjściowe z akcji Wyślij wiadomość e-mail z zatwierdzeniem .

Znajdowanie nazwy JSON wyzwalacza lub akcji

Przed rozpoczęciem potrzebna jest nazwa JSON wyzwalacza lub akcji w bazowej definicji przepływu pracy.

  • Nazwy w definicji przepływu pracy używają podkreślenia (_), a nie spacji.

  • Jeśli nazwa akcji używa operatora kropki (.), dołącz ten operator, na przykład:

    My.Action.Name

  1. Na pasku narzędzi projektanta przepływu pracy wybierz pozycję Widok kodu. actions W obiekcie znajdź nazwę akcji.

    Na przykład Send_approval_email to nazwa JSON akcji Wyślij wiadomość e-mail z zatwierdzeniem .

    Zrzut ekranu przedstawiający nazwę akcji w formacie JSON.

  2. Aby powrócić do widoku projektanta, na pasku narzędzi widoku kodu wybierz pozycję Projektant.

  3. Teraz dodaj nazwę JSON do akcji Wykonaj kod JavaScript .

Dodawanie nazwy wyzwalacza lub akcji do akcji Wykonaj kod JavaScript

  1. W akcji Wykonaj kod JavaScript otwórz listę Dodaj nowy parametr .

  2. Z listy parametrów wybierz następujące parametry zgodnie z wymaganiami scenariusza.

    Parametr Opis
    Akcje Dołącz dane wyjściowe z poprzednich akcji jako zależności. Po wybraniu tego parametru zostanie wyświetlony monit o akcje, które chcesz dodać.
    Wyzwalacz Dołącz dane wyjściowe z wyzwalacza jako zależności. Po wybraniu tego parametru zostanie wyświetlony monit o dołączenie wyników wyzwalacza. Z listy Wyzwalacz wybierz pozycję Tak.
  3. W tym przykładzie wybierz parametr Akcje .

    Zrzut ekranu przedstawiający akcję Wykonaj kod JavaScript z wybranym parametrem Akcje.

  4. W polu Element akcji — 1 wprowadź nazwę JSON akcji.

    Zrzut ekranu przedstawiający pole Element -1 akcji i nazwę JSON akcji.

  5. Aby dodać kolejną nazwę akcji, wybierz pozycję Dodaj nowy element.

  6. Gdy wszystko będzie gotowe, zapisz przepływ pracy.

Dokumentacja akcji

Aby uzyskać więcej informacji na temat struktury i składni akcji Execute JavaScript Code w podstawowej definicji przepływu pracy przy użyciu języka definicji przepływu pracy, zobacz sekcję referencyjną tej akcji.

Następne kroki