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:
Działa w języku JavaScript. Więcej języków jest w programowania.
Kończy działanie w ciągu pięciu sekund lub mniej.
Obsługuje dane o rozmiarze do 50 MB.
Nie wymaga pracy z akcjami Zmienne, które nie są jeszcze obsługiwane.
Używa Node.js w wersji 8.11.1 dla aplikacji logiki opartych na wielu dzierżawach lub Node.js w wersji 12.x.x lub 14.x.x dla aplikacji logiki opartych na jednej dzierżawie.
Aby uzyskać więcej informacji, zobacz Obiekty wbudowane w warstwie Standardowa.
Uwaga
Funkcja nie jest obsługiwana
require()
przez akcję Śródliniowy kod na potrzeby uruchamiania języka JavaScript.
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.
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ą:
- Wiele dzierżaw: Szybki start: tworzenie pierwszej aplikacji logiki
- Pojedyncza dzierżawa: tworzenie przepływów pracy aplikacji logiki opartej na jednej dzierżawie
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
Jeśli jeszcze tego nie zrobiono, w Azure Portal otwórz przepływ pracy aplikacji logiki w projektancie.
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.
W polu wyszukiwania akcji wprowadź .
inline code
Z listy akcji wybierz akcję o nazwie Wykonaj kod JavaScript.Akcja jest wyświetlana w projektancie i domyślnie 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.
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:
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.
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-mailBody
: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 instrukcjireturn
są dostępne do odwołania w kolejnych akcjach za pośrednictwem tokenu Wynik . Na przykład fragment kodu zwraca wynik przez wywołaniematch()
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.Po zakończeniu zapisz aplikację logiki.
Wyzwalacz odwołania i akcja powoduje wyświetlenie kodu
Obiekt workflowContext
ma tę strukturę, która obejmuje actions
wł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:
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
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 .Aby powrócić do widoku projektanta, na pasku narzędzi widoku kodu wybierz pozycję Projektant.
Aby dodać pierwszą akcję, w polu Element akcji — 1 wprowadź nazwę JSON akcji.
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