Dodawanie i uruchamianie fragmentów kodu przy użyciu kodu wbudowanego w usłudze Azure Logic Apps

Jeśli chcesz uruchomić fragment kodu wewnątrz przepływu pracy aplikacji logiki, możesz dodać wbudowaną akcję Kod wbudowany jako krok w przepływie pracy aplikacji logiki. Ta akcja działa najlepiej, gdy chcesz uruchomić kod pasujący do tego scenariusza:

Ta akcja uruchamia fragment kodu i zwraca dane wyjściowe z tego fragmentu kodu jako token o nazwie Result. Możesz użyć tego tokenu z kolejnymi akcjami w przepływie pracy aplikacji logiki. W przypadku innych scenariuszy, w których chcesz utworzyć funkcję dla kodu, spróbuj utworzyć i wywołać funkcję za pomocą Azure Functions zamiast tego w aplikacji logiki.

W tym artykule przykładowa aplikacja logiki jest wyzwalana po nadejściu nowej wiadomości e-mail na koncie służbowym. Fragment kodu wyodrębnia i zwraca wszystkie adresy e-mail wyświetlane w treści wiadomości e-mail.

Screenshot that shows an example logic app

Wymagania wstępne

  • Konto i subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, zarejestruj się w celu założenia bezpłatnego konta platformy Azure.

  • Przepływ pracy aplikacji logiki, w którym chcesz dodać fragment kodu, w tym wyzwalacz. W przykładzie w tym temacie użyto wyzwalacza Office 365 Outlook o nazwie Po nadejściu nowej wiadomości e-mail.

    Jeśli nie masz aplikacji logiki, zapoznaj się z następującą dokumentacją:

  • W zależności od tego, czy aplikacja logiki jest wielodostępna, czy pojedyncza dzierżawa, zapoznaj się z poniższymi informacjami.

    • Wiele dzierżaw: wymaga Node.js w wersji 8.11.1. Potrzebne jest również puste konto integracji połączone z aplikacją logiki. Upewnij się, że używasz konta integracji odpowiedniego dla danego przypadku użycia lub scenariusza.

      Na przykład konta integracji w warstwie Bezpłatna są przeznaczone tylko dla scenariuszy eksploracyjnych i obciążeń, a nie scenariuszy produkcyjnych, są ograniczone w użyciu i przepływności i nie są obsługiwane przez umowę dotyczącą poziomu usług (SLA).

      Inne warstwy kont integracji generują koszty, ale obejmują obsługę umowy SLA, oferują większą przepływność i mają wyższe limity. Dowiedz się więcej o warstwach konta integracji, cenach i limitach.

    • Pojedyncza dzierżawa: wymaga Node.js wersji 10.x.x, 11.x.x lub 12.x.x. Nie potrzebujesz jednak konta integracji, ale nazwa akcji Wbudowanego kodu została zmieniona na Operacje wbudowanego kodu i ma zaktualizowane limity.

Dodawanie kodu wbudowanego

  1. Jeśli jeszcze tego nie zrobiono, w Azure Portal otwórz przepływ pracy aplikacji logiki w projektancie.

  2. W przepływie pracy wybierz miejsce dodania akcji Śródliniowy kod jako nowy krok na końcu przepływu pracy lub między krokami.

    Aby dodać akcję między krokami, przenieś wskaźnik myszy na strzałkę, która łączy te kroki. Wybierz wyświetlony znak plus (+), a następnie wybierz pozycję Dodaj akcję.

    Ten przykład dodaje akcję w ramach wyzwalacza Office 365 Outlook.

    Add the new step under the trigger

  3. W polu wyszukiwania akcji wprowadź .inline code Z listy akcji wybierz akcję o nazwie Wykonaj kod JavaScript.

    Select the

    Akcja jest wyświetlana w projektancie i domyślnie zawiera przykładowy kod, w tym instrukcję return .

    Inline Code action with default sample code

  4. 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.

    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:

    Keyword autocomplete list

    Ten przykładowy fragment kodu najpierw tworzy zmienną, która przechowuje wyrażenie regularne, które określa wzorzec zgodny z tekstem wejściowym. Następnie kod tworzy zmienną, która przechowuje dane treści wiadomości e-mail z wyzwalacza.

    Create variables

    Aby ułatwić odwołanie się do wyników z wyzwalacza i poprzednich akcji, lista zawartości dynamicznej jest wyświetlana, gdy kursor znajduje się w polu Kod . Na potrzeby tego przykładu lista zawiera dostępne wyniki z wyzwalacza, w tym token treść , który można teraz wybrać.

    Po wybraniu tokenu Treść akcja kodu wbudowanego rozpozna token do obiektu, który odwołuje się do workflowContext wartości właściwości wiadomości e-mail Body :

    Select result

    W polu Kod fragment kodu może używać obiektu tylko do workflowContext odczytu jako danych wejściowych. Ten obiekt zawiera właściwości, które zapewniają dostęp kodu do wyników z wyzwalacza i poprzednich akcji w przepływie pracy. Aby uzyskać więcej informacji, zobacz Wyzwalacz referencyjny i akcja powoduje wyświetlenie kodu w dalszej części tego tematu.

    Uwaga

    Jeśli fragment kodu odwołuje się do nazw akcji używających operatora kropki (.), musisz dodać te nazwy akcji do parametru Actions. Odwołania te muszą również zawierać nazwy akcji z nawiasami kwadratowymi ([]) i znakami cudzysłowu, na przykład:

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

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

    Akcja Śródliniowy kod nie wymaga return instrukcji, ale wyniki instrukcji return są dostępne do odwołania w kolejnych akcjach za pośrednictwem tokenu Wynik . Na przykład fragment kodu zwraca wynik przez wywołanie match() funkcji, która znajduje dopasowania w treści wiadomości e-mail względem wyrażenia regularnego. Akcja Redagowanie używa tokenu Wynik do odwołowania się do wyników z wbudowanej akcji kodu i tworzy pojedynczy wynik.

    Finished logic app

  5. Po zakończeniu zapisz aplikację logiki.

Wyzwalacz odwołania i akcja powoduje wyświetlenie kodu

Obiekt workflowContext ma tę strukturę, która obejmuje actionswłaściwości podrzędne , i workflow , trigger:

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

Ta tabela zawiera więcej informacji na temat tych podwłaściwości:

Właściwość Typ Opis
actions Kolekcja obiektów Wynikowe obiekty z akcji uruchamianych przed uruchomieniem fragmentu kodu. Każdy obiekt ma parę klucz-wartość , w której klucz jest nazwą akcji, a wartość jest równoważna wywołaniu funkcji actions() za pomocą @actions('<action-name>')polecenia . Nazwa akcji używa tej samej nazwy akcji używanej w bazowej definicji przepływu pracy, która zastępuje spacje (" ") w nazwie akcji podkreśleniami (_). Ten obiekt zapewnia dostęp do wartości właściwości akcji z bieżącego uruchomienia wystąpienia przepływu pracy.
trigger Obiekt Wynik obiektu z wyzwalacza i odpowiednik wywołania funkcji trigger(). Ten obiekt zapewnia dostęp do wyzwalania wartości właściwości z bieżącego uruchomienia wystąpienia przepływu pracy.
workflow Obiekt Obiekt przepływu pracy i odpowiednik wywołania funkcji workflow(). Ten obiekt zapewnia dostęp do wartości właściwości przepływu pracy, takich jak nazwa przepływu pracy, identyfikator uruchomienia itd., z bieżącego uruchomienia wystąpienia przepływu pracy.

W tym przykładzie tematu workflowContext obiekt ma następujące właściwości, do których kod może uzyskać dostęp:

{
   "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 parametrów

W niektórych przypadkach może być konieczne jawne wymaganie, aby akcja Śródliniowy kod zawierała wyniki z wyzwalacza lub określonych akcji, do których odwołuje się kod jako zależności, dodając parametry Wyzwalacz lub Akcje . Ta opcja jest przydatna w scenariuszach, w których nie można odnaleźć odwołanych wyników w czasie wykonywania.

Porada

Jeśli planujesz ponownie użyć kodu, dodaj odwołania do właściwości przy użyciu pola Kod , aby kod zawierał odwołania do rozpoznanego tokenu, a nie dodając wyzwalacza lub akcji jako jawne zależności.

Załóżmy na przykład, że masz kod odwołujący się do wyniku SelectedOption z akcji Wyślij wiadomość e-mail z zatwierdzeniem dla łącznika Office 365 Outlook. W czasie tworzenia aparat usługi Logic Apps analizuje kod, aby określić, czy odwołujesz się do dowolnego wyzwalacza lub wyników akcji i automatycznie uwzględnia te wyniki. W czasie wykonywania, jeśli wystąpi błąd, że przywołyny wyzwalacz lub wynik akcji nie jest dostępny w określonym workflowContext obiekcie, możesz dodać ten wyzwalacz lub akcję jako jawną zależność. W tym przykładzie dodasz parametr Actions (Akcje ) i określisz, że akcja Kod wbudowany jawnie zawiera wynik akcji Wyślij wiadomość e-mail z zatwierdzeniem .

Aby dodać te parametry, otwórz listę Dodaj nowy parametr i wybierz żądane parametry:

Add parameters

Parametr Opis
Akcje Uwzględnij wyniki z poprzednich akcji. Zobacz Dołączanie wyników akcji.
Wyzwalacz Dołącz wyniki z wyzwalacza. Zobacz Dołączanie wyników wyzwalacza.

Uwzględnij wyniki wyzwalacza

Jeśli wybierzesz pozycję Wyzwalacze, zostanie wyświetlony monit o dołączenie wyników wyzwalacza.

  • Z listy Wyzwalacz wybierz pozycję Tak.

Uwzględnij wyniki akcji

Jeśli wybierzesz pozycję Akcje, zostanie wyświetlony monit o akcje, które chcesz dodać. Jednak przed rozpoczęciem dodawania akcji potrzebna jest wersja nazwy akcji wyświetlanej w podstawowej definicji przepływu pracy aplikacji logiki.

  • Ta funkcja nie obsługuje zmiennych, pętli i indeksów iteracji.

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

  • W przypadku nazw akcji, które używają operatora kropki (.), uwzględnij te operatory, na przykład:

    My.Action.Name

  1. Na pasku narzędzi projektanta wybierz pozycję Widok kodu i wyszukaj wewnątrz atrybutu actions nazwę akcji.

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

    Find action name in JSON

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

  3. Aby dodać pierwszą akcję, w polu Element akcji — 1 wprowadź nazwę JSON akcji.

    Enter first action

  4. Aby dodać kolejną akcję, wybierz pozycję Dodaj nowy element.

Odwołanie

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

Następne kroki

Dowiedz się więcej o łącznikach dla Azure Logic Apps