Freigeben über


Hinzufügen und Ausführen von JavaScript-Code inline mit Workflows für Azure Logic Apps

Gilt für: Azure Logic Apps (Verbrauch + Standard)

Um benutzerdefinierte Integrationsaufgaben inline mit Ihrem Workflow in Azure Logic Apps auszuführen, können Sie einfache JavaScript-Codeschnipsel direkt aus Ihrem Workflow im Azure-Portal hinzufügen und ausführen. Verwenden Sie für diese Aufgabe die Inlinecodeaktion namens JavaScript-Code ausführen. Diese Aktion gibt das Ergebnis aus dem Codeschnipsel zurück, sodass Sie diese Ausgabe in den nachfolgenden Aktionen Ihres Workflows verwenden können. Diese Aktion weist zudem unterschiedliche Grenzwerte auf, je nachdem, ob Sie über einen Verbrauchs- oder Standard-Workflow verfügen, und eignet sich am besten für Codeschnipsel mit den folgenden Attributen:

Aktion Sprache Sprachversion Ausführungsdauer Datengröße Sonstige Hinweise
JavaScript-Code ausführen JavaScript Standard:
Node.js 16.x.x

Verbrauch:
Node.js 20.9.0

Weitere Informationen finden Sie unter Standard integrierte Objekte.
Endet in 5 Sekunden oder weniger Verarbeitet Daten bis zu 50 MB – Erfordert keine Arbeit mit den Variablenaktionen, die von der Aktion nicht unterstützt werden

- Unterstützt die require() Funktion zum Ausführen von JavaScript nicht

Zum Ausführen von Code, der nicht diesen Attributen entspricht, können Sie eine Funktion über Azure Functions erstellen und aufrufen.

In diesem Leitfaden wird gezeigt, wie die Aktion in einem Beispielworkflow funktioniert, der mit einem Office 365 Outlook-Trigger beginnt. Der Workflow wird ausgeführt, wenn eine neue E-Mail im zugeordneten Outlook-E-Mail-Konto eingeht. Der Beispielcodeschnipsel extrahiert alle im E-Mail-Text vorhandenen E-Mail-Adressen und gibt diese als Ausgabe zurück, die Sie in einer nachfolgenden Aktion verwenden können.

Das folgende Diagramm zeigt die wichtigsten Aspekte eines Beispielworkflows:

Voraussetzungen

  • Ein Azure-Konto und ein Azure-Abonnement. Falls Sie kein Abonnement besitzen, können Sie sich für ein kostenloses Azure-Konto registrieren.

  • Die Logik-App-Ressource mit dem Workflow, in dem Sie Ihren Codeausschnitt hinzufügen möchten. Der Workflow muss bereits mit einem Trigger gestartet werden.

    Im Beispiel dieses Artikels wird der Office 365 Outlook-Trigger namens "Wenn eine neue E-Mail eintrifft" verwendet.

    Wenn Sie nicht über eine Logik-App-Ressource und einen Workflow verfügen, erstellen Sie sie jetzt, indem Sie die Schritte für die gewünschte Logik-App ausführen:

  • Abhängig davon, ob Ihr Logik-App-Workflow den Typ „Verbrauch“ oder „Standard“ aufweist, prüfen Sie die folgenden Anforderungen:

    • Verbrauchsworkflow:

      • Node.js, Version 8.11.10

      • Verknüpfen mit einem Integrationskonto, leer oder anderweitig, aus Ihrer Logik-App-Ressource

        Wichtig

        Achten Sie darauf, dass Sie ein Integrationskonto verwenden, das für Ihren Anwendungsfall oder Ihr Szenario geeignet ist.

        Beispielsweise gilt für Integrationskonten im Free-Tarif, dass sie für explorative Szenarien und Workloads, nicht für Produktionsszenarien vorgesehen sind, in Nutzung und Durchsatz beschränkt sind und von einer Vereinbarung zum Servicelevel (Service-Level Agreement, SLA) nicht unterstützt werden.

        Andere Integrationskonten verursachen Kosten, beinhalten jedoch SLA-Unterstützung, bieten mehr Durchsatz und haben höhere Grenzwerte. Erfahren Sie mehr über Tarife für Integrationskonten, Limits und Preise.

    • Standardworkflow:

Hinzufügen der Aktion „JavaScript-Code ausführen“

  1. Öffnen Sie im Azure-Portal Ihre Logik-App-Ressource (Verbrauch).

  2. Wählen Sie im Menü "Ressourcen-Randleiste" unter "Entwicklungstools" den Designer aus, um den Workflow zu öffnen.

    Bei diesen Schritten wird davon ausgegangen, dass ihr Workflow bereits über einen Trigger verfügt.

    In diesem Beispiel wird der Trigger "Wenn eine neue E-Mail eintrifft " verwendet.

  3. Fügen Sie die Inlinecode-Aktion namens "JavaScript-Code ausführen " zu Ihrem Workflow hinzu, indem Sie die allgemeinen Schritte ausführen, um eine Aktion hinzuzufügen.

    In diesem Beispiel wird die Aktion unter dem Office 365 Outlook-Trigger hinzugefügt. Standardmäßig enthält die Aktion Beispielcode, einschließlich einer return-Anweisung.

    Screenshot der Aktion

  4. Löschen Sie im Feld Code den Beispielcode, und geben Sie Ihren Code ein. Schreiben Sie den Code, den Sie in eine Methode einschließen, jedoch ohne Methodensignatur.

    Tipp

    Wenn sich der Cursor im Feld Code befindet, wird die dynamische Inhaltsliste angezeigt. Obwohl Sie diese Liste später verwenden werden, können Sie sie vorerst ignorieren und offen lassen. Wählen Sie nicht Ausblenden aus.

    Wenn Sie ein erkanntes Schlüsselwort eingeben, wird die AutoVervollständigen-Liste angezeigt, sodass Sie unter den verfügbaren Schlüsselwörter auswählen können. Beispiel:

    Screenshot zeigt den Verbrauchsworkflow, die Aktion „JavaScript-Code ausführen“ und die Schlüsselwort-AutoVervollständigen-Liste.

    Der folgende Beispielcodeschnipsel erstellt zunächst eine Variable mit dem Namen myResult, die einen regulären Ausdruck speichert, der ein im Eingabetext zu suchendes Muster angibt. Der Code erstellt dann eine Variable mit dem Namen email, die den Inhalt der E-Mail-Nachricht aus den Triggerausgaben speichert.

    Screenshot des Verbrauchs-Workflows, Ausführen von JavaScript-Code und Beispielcode zum Erstellen von Variablen.

  5. Wenn der Cursor weiterhin im Feld "Code " angezeigt wird, wählen Sie das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen.

  6. Wählen Sie in der Liste unter dem Abschnitt "Wenn eine neue E-Mail eintrifft " die Eigenschaft "Textkörper " aus, die auf die Triggerausgabe mit dem Textkörper der E-Mail-Nachricht verweist.

    Screenshot, das den Verbrauchs-Workflow, die Aktion

    Die dynamische Inhaltsliste zeigt die Ausgaben des Triggers und aller vorangegangenen Aktionen an, wenn diese Ausgaben mit dem Eingabeformat für das Bearbeitungsfeld übereinstimmen, das derzeit den Fokus hat. Diese Liste erleichtert Ihnen die Verwendung und Referenzierung dieser Ausgaben aus Ihrem Workflow. In diesem Beispiel zeigt die Liste die Ausgaben des Outlook-Triggers, einschließlich der Eigenschaft Text der E-Mail-Nachricht.

    Nachdem Sie die Eigenschaft Text ausgewählt haben, löst die Aktion JavaScript-Code ausführen das Token in ein schreibgeschütztes JSON-Objekt workflowContext auf, das ihr Codeschnipsel als Eingabe verwenden kann. Das workflowContext-Objekt umfasst Eigenschaften, die Ihrem Code Zugriff auf die Ausgaben des Triggers und der vorangehenden Aktionen in Ihrem Workflow geben, z. B. die body-Eigenschaft des Triggers, die sich von der Text-Eigenschaft der E-Mail-Nachricht unterscheidet. Weitere Informationen über das workflowContext-Objekt finden Sie unter Verweisen auf Trigger- und Aktionsausgaben mithilfe des workflowContext-Objekts weiter unten in diesem Artikel.

    Wichtig

    Wenn Ihr Codeschnipsel auf Aktionsnamen verweist, die den Punktoperator (.) enthalten, müssen die Aktionsnamen in den Verweisen in eckige Klammern ([]) und Anführungszeichen ("") eingeschlossen werden. Beispiel:

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

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

    Außerdem müssen Sie in der Aktion "JavaScript-Code ausführen" den Parameter "Actions" hinzufügen und diesem Parameter dann diese Aktionsnamen hinzufügen. Weitere Informationen finden Sie unter Hinzufügen von Abhängigkeiten als Parameter zu einer Aktion „JavaScript-Code ausführen“ weiter unten in diesem Artikel.

  7. Um die ausgewählte Eigenschaft Text der E-Mail-Nachricht von der Eigenschaft body des Triggers zu unterscheiden, benennen Sie die zweite Eigenschaft body in Body um. Fügen Sie am Ende ein schließendes Semikolon (;) ein, um die Codeanweisung zu beenden.

    Screenshot zeigt den Verbrauchsworkflow der Logik-App, die Aktion „JavaScript-Code ausführen“ und die umbenannte Eigenschaft „Text“ mit schließendem Strichpunkt.

    Die Aktion JavaScript-Code ausführen erfordert syntaktisch keine return-Anweisung. Allerdings können Sie durch Einfügen der return-Anweisung später in Ihrem Workflow einfacher auf die Aktionsergebnisse verweisen, indem Sie in nachfolgenden Aktionen das Token Ergebnis verwenden.

    In diesem Beispiel gibt der Codeschnipsel das Ergebnis durch einen Aufruf der match()-Funktion zurück, die anhand des angegebenen regulären Ausdrucks alle Übereinstimmungen im E-Mail-Text ermittelt. Anschließend können Sie eine HTML-Tabellenaktion erstellen hinzufügen, die das Ergebnistoken verwendet, um auf die Ergebnisse aus der Aktion "JavaScript-Code ausführen " zu verweisen und ein einzelnes Ergebnis zu erstellen.

    Screenshot des fertigen Verbrauchslogik-App-Workflows.

  8. Wenn Sie fertig sind, speichern Sie Ihren Workflow.

Verweisen auf Trigger- und Aktionsausgaben mithilfe des workflowContext-Objekts

Sie können aus Ihrem Codeschnipsel im Designer mithilfe der dynamischen Inhaltsliste ein Token auswählen, das auf die Ausgabe des Triggers oder einer vorangegangenen Aktion verweist. Wenn Sie das Token auswählen, löst die Aktion JavaScript-Code ausführen dieses Token in ein schreibgeschütztes JSON-Objekt workflowContext auf. Dieses Objekt ermöglicht Ihrem Code den Zugriff auf die Ausgaben des Triggers, aller vorangegangenen Aktionen und des Workflows. Das Objekt verwendet die folgende Struktur und enthält die Eigenschaften actions, trigger und workflow, bei denen es sich ebenfalls um Objekte handelt:

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

In der folgenden Tabelle finden Sie weitere Informationen zu diesen Eigenschaften:

Eigenschaft type BESCHREIBUNG
actions Objektsammlung Die Ergebnisobjekte vorangegangener Aktionen, die vor der Ausführung Ihres Codeschnipsels ausgeführt wurden. Jedes Objekt umfasst ein Schlüssel-Wert-Paar, wobei der Schlüssel den Namen der Aktion angibt und der Wert dem Ergebnis des Aufrufs der actions()-Funktion mit dem Ausdruck @actions('<action-name>') entspricht.

Als Name der Aktion wird derselbe Aktionsname verwendet, der auch in der zugrunde liegenden Workflowdefinition erscheint. Dabei werden Leerzeichen ("") im Aktionsnamen durch Unterstriche (_) ersetzt. Diese Objektsammlung bietet Zugriff auf die Eigenschaftswerte der Aktion aus der aktuellen Ausführung der Workflowinstanz.
trigger Objekt Das Ergebnisobjekt des Triggers, wobei das Ergebnis dem Aufruf der trigger()-Funktion entspricht. Dieses Objekt bietet Zugriff auf Eigenschaftswerte des Triggers aus der aktuellen Ausführung der Workflowinstanz.
workflow Objekt Das Workflowobjekt, das dem Aufruf der workflow()-Funktion entspricht. Dieses Objekt bietet Zugriff auf Eigenschaftswerte (z. B. Workflowname, Ausführungs-ID usw.) aus der aktuellen Ausführung der Workflowinstanz.

Im Beispiel dieses Artikels kann das workflowContext-JSON-Objekt die folgenden Beispieleigenschaften und Werte aus dem Outlook-Trigger aufweisen:

{
   "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"
         }
      }
   }
}

Hinzufügen von Abhängigkeiten als Parameter zu einer Aktion „JavaScript Code ausführen“

In einigen Szenarien müssen Sie möglicherweise explizit festlegen, dass die Aktion JavaScript-Code ausführen Ausgaben aus dem Trigger oder den Aktionen enthält, auf die Ihr Code als Abhängigkeiten verweist. Dieser zusätzliche Schritt ist beispielsweise erforderlich, wenn Ihr Code auf Ausgaben verweist, die zur Laufzeit des Workflows nicht verfügbar sind. Zum Zeitpunkt der Workflowerstellung analysiert die Azure Logic Apps-Engine den Codeschnipsel, um festzustellen, ob der Code auf Trigger oder Aktionsausgaben verweist. Wenn solche Verweise vorhanden sind, bezieht die Engine diese Ausgaben automatisch mit ein. Wenn zur Laufzeit des Workflows die referenzierte Trigger- oder Aktionsausgabe nicht im workflowContext-Objekt gefunden wird, generiert die Engine einen Fehler. Um diesen Fehler zu beheben, müssen Sie diesen Trigger oder diese Aktion als explizite Abhängigkeit für die Aktion JavaScript-Code ausführen hinzufügen. Dieser Schritt ist auch erforderlich, wenn das Objekt workflowContext auf einen Trigger- oder Aktionsnamen verweist, der den Punktoperator verwendet (.).

Um einen Trigger oder eine Aktion als Abhängigkeit hinzuzufügen, fügen Sie die Parameter Trigger oder Actions entsprechend der Aktion JavaScript-Code ausführen hinzu. Anschließend fügen Sie die Trigger- oder Aktionsnamen so hinzu, wie sie in der zugrunde liegenden JSON-Definition Ihres Workflows angegeben sind.

Hinweis

Sie können keine Variablenvorgänge, Schleifen wie For each oder Until und Iterationsindizes als explizite Abhängigkeiten hinzufügen.

Wenn Sie Ihren Code wiederverwenden möchten, sollten Sie immer das Bearbeitungsfeld für Codeschnipsel verwenden, um auf Trigger- und Aktionsausgaben zu verweisen. Auf diese Weise bezieht Ihr Code die aufgelösten Tokenverweise mit ein, anstatt nur die Trigger- oder Aktionsausgaben als explizite Abhängigkeiten hinzuzufügen.

Nehmen wir zum Beispiel an, dass dem Codeschnipsel im Beispielworkflow die Aktion Genehmigungs-E-Mail senden des Office 365 Outlook-Connectors vorausgeht. Der folgende Beispielcodeschnipsel enthält einen Verweis auf die Ausgabe SelectedOption dieser Aktion.

Für dieses Beispiel müssen Sie nur den Parameter Aktionen hinzufügen und dann den JSON-Namen der Aktion (Send_approval_email) zum Parameter hinzufügen. Auf diese Weise geben Sie an, dass die Aktion JavaScript-Code ausführen explizit die Ausgabe aus der Aktion E-Mail-Genehmigung senden enthält.

Ermitteln des JSON-Namens des Triggers oder der Aktion

Bevor Sie beginnen, benötigen Sie den JSON-Namen für den Trigger oder die Aktion in der zugrunde liegenden Workflowdefinition.

  • Namen in ihrer Workflowdefinition verwenden einen Unterstrich (_), nicht ein Leerzeichen.

  • Wenn ein Aktionsname den Punktoperator (.) verwendet, schließen Sie diesen Operator ein, z. B.:

    My.Action.Name

  1. Wählen Sie im Workflowmenü unter "Extras" "Code" aus, um die JSON-Definition des Workflows anzuzeigen. Suchen Sie im Objekt actions den Namen der Aktion.

    Send_approval_email ist beispielsweise der JSON-Name für die Aktion Genehmigungs-E-Mail senden.

    Screenshot des Aktionsnamens in JSON.

  2. Um zur Designeransicht zurückzukehren, wählen Sie im Workflowmenü unter "Extras" die Option "Designer" aus.

  3. Fügen Sie nun den JSON-Namen zur Aktion JavaScript-Code ausführen hinzu.

Hinzufügen des Trigger- oder Aktionsnamens zur Aktion „JavaScript-Code ausführen“

  1. Öffnen Sie in der Aktion "JavaScript-Code ausführen " die Liste der erweiterten Parameter .

  2. Wählen Sie aus der Parameterliste die Parameter aus, die für Ihr Szenario benötigt werden.

    Parameter BESCHREIBUNG
    Aktionen Schließen Sie die Ausgaben der vorangegangenen Aktionen als Abhängigkeiten ein. Wenn Sie diesen Parameter auswählen, werden Sie aufgefordert, die hinzuzufügenden Aktionen anzugeben.
    Auslösen Schließen Sie die Ausgaben des Triggers als Abhängigkeiten ein. Wenn Sie diesen Parameter auswählen, werden Sie gefragt, ob Triggerergebnisse eingeschlossen werden sollen. Wählen Sie also in der Liste Trigger die Option Ja.
  3. Für dieses Beispiel wählen Sie den Parameter Aktionen aus.

    Screenshot der Aktion

  4. Geben Sie im Feld Aktionselement – 1 den JSON-Namen der Aktion ein.

    Screenshot des Felds

  5. Wählen Sie Neues Element hinzufügen aus, um einen weiteren Aktionsnamen hinzuzufügen.

  6. Wenn Sie fertig sind, speichern Sie Ihren Workflow.

Aktionsverweis

Weitere Informationen zu Struktur und Syntax der Aktion JavaScript-Code ausführen in der zugrunde liegenden Workflowdefinition in der Definitionssprache für Workflows finden Sie im Referenzabschnitt dieser Aktion.