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
Konto i subskrypcja platformy Azure. Jeśli nie masz subskrypcji, zarejestruj się w celu założenia bezpłatnego konta platformy Azure.
Przepływ pracy aplikacji logiki, w którym chcesz dodać fragment kodu. Przepływ pracy musi już rozpoczynać się od wyzwalacza.
W tym artykule użyto wyzwalacza Office 365 Outlook o nazwie Po nadejściu nowej wiadomości e-mail.
Jeśli nie masz przepływu pracy, zapoznaj się z następującą dokumentacją:
W zależności od tego, czy aplikacja logiki jest zużyciem, czy standardem, zapoznaj się z następującymi wymaganiami:
Użycie: wymaga Node.js w wersji 8.11.10 oraz linku do konta integracji, pustego lub w inny sposób z zasobu aplikacji logiki.
Ważne
Upewnij się, że używasz konta integracji odpowiedniego dla twojego 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 konta 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, limitach i cenach konta integracji.
Standardowa: wymaga Node.js w wersji 16.x.x, ale nie wymaga konta integracji.
Dodawanie akcji Wykonaj kod JavaScript
W Azure Portal otwórz przepływ pracy aplikacji logiki Zużycie w projektancie.
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
.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:
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.
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.
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. ObiektworkflowContext
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ść wyzwalaczabody
, która różni się od właściwości Treść wiadomości e-mail. Aby uzyskać więcej informacji na tematworkflowContext
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.
Aby odróżnić właściwość Treść wiadomości e-mail wybraną z właściwości wyzwalacza
body
, zmień nazwę drugiejbody
właściwości naBody
. Dodaj średnik zamykający (;) na końcu, aby zakończyć instrukcję kodu.Akcja Wykonaj kod JavaScript nie wymaga instrukcji
return
. Jednak przez dołączenie instrukcjireturn
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.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 actions
właściwości , trigger
i 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_email
do 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
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 .Aby powrócić do widoku projektanta, na pasku narzędzi widoku kodu wybierz pozycję Projektant.
Teraz dodaj nazwę JSON do akcji Wykonaj kod JavaScript .
Dodawanie nazwy wyzwalacza lub akcji do akcji Wykonaj kod JavaScript
W akcji Wykonaj kod JavaScript otwórz listę Dodaj nowy parametr .
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. W tym przykładzie wybierz parametr Akcje .
W polu Element akcji — 1 wprowadź nazwę JSON akcji.
Aby dodać kolejną nazwę akcji, wybierz pozycję Dodaj nowy element.
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.