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
Ausführen von JavaScript-Code JavaScript Standard:
Node.js 16.x.x

Verbrauch:
Node.js 8.11.1

Weitere Informationen finden Sie unter Integrierte Standardobjekte.
Abschluss der Ausführung in höchstens 5 Sekunden. Verarbeitung von Daten mit einer Größe von bis zu 50 MB. – Erfordert keine Verwendung von Variablen-Aktionen, die noch nicht von der Aktion unterstützt werden.

– Keine Unterstützung der require()-Funktion zum Ausführen von JavaScript.

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 gestartet wird. 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 des 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.

  • Der Logik-App-Workflow, in den Sie Ihren Codeschnipsel einfügen möchten. Der Workflow muss bereits mit einem Trigger gestartet werden.

    Für das Beispiel in diesem Artikel wird der Office 365 Outlook-Trigger mit dem Namen Wenn eine neue E-Mail empfangen wird verwendet.

    Wenn Sie über keinen Workflow verfügen, finden Sie weitere Informationen in der folgenden Dokumentation:

  • 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

      • Link zu einem Integrationskonto (leer oder nicht) von 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 Ihren Verbrauchs-Logik-App-Workflow im Designer.

  2. Führen Sie im Designer die folgenden allgemeinen Schritte aus, um Ihrem Workflow die Inlinecode-Aktion namens JavaScript-Code ausführen hinzuzufügen.

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

    Screenshot: Aktion „JavaScript-Code ausführen“ mit Standardbeispielcode

  3. 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: Workflow vom Typ „Verbrauch“, Aktion „JavaScript-Code ausführen“ und die AutoVervollständigen-Liste für Schlüsselwörter

    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: Workflow vom Typ „Verbrauch“, Aktion „JavaScript-Code ausführen“ und Beispielcode zum Erstellen von Variablen

  4. Wenn sich Ihr Cursor noch im Feld Code befindet, suchen Sie in der geöffneten dynamischen Inhaltsliste nach dem Abschnitt Wenn eine neue E-Mail eintrifft. Wählen Sie anschließend die Eigenschaft Text aus, die auf den Textkörper der E-Mail-Nachricht verweist.

    Screenshot: Workflow vom Typ „Verbrauch“, Aktion „JavaScript-Code ausführen“, Liste dynamischer Inhalte und ausgewählte Eigenschaft „Text“ der E-Mail

    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 workflowContext-JSON-Objekt 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 der Aktion JavaScript-Code ausführen den Parameter Aktionen 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.

  5. 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: Logik-App-Workflow vom Typ „Verbrauch“, Aktion „JavaScript-Code ausführen“ und die umbenannte Eigenschaft „Text“ mit schließendem Semikolon

    Für die Aktion JavaScript-Code ausführen ist syntaktisch keine return-Anweisung erforderlich. 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. Die Aktion HTML-Tabelle erstellen verwendet dann das Token Ergebnis, um auf die Ergebnisse aus der Aktion JavaScript-Code ausführen zu verweisen, und erstellt ein einziges Ergebnis.

    Screenshot: der fertiggestellte Logik-App-Workflow „Verbrauch“.

  6. 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 workflowContext-JSON-Objekt 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 Typ 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 Object 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 Object 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 anfordern, dass die Aktion JavaScript-Code ausführen Ausgaben des Triggers oder 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 den betreffenden Trigger oder die 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 der Aktion JavaScript-Code ausführen den entsprechenden Parameter, Trigger bzw. Aktionen, 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 legen Sie fest, dass die Aktion JavaScript-Code ausführen ausdrücklich die Ausgabe der Aktion Genehmigungs-E-Mail 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.

  • Für Namen in Ihrer Workflowdefinition wird anstelle eines Leerzeichens ein Unterstrich (_) verwendet.

  • Wenn ein Aktionsname den Punktoperator (.) verwendet, fügen Sie diesen Operator ein. Beispiel:

    My.Action.Name

  1. Wählen Sie auf der Symbolleiste des Workflow-Designers Codeansicht aus. 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:Der Aktionsname in JSON.

  2. Wählen Sie auf der Symbolleiste „Codeansicht“ die Option Designer aus, um zur Designeransicht zurückzukehren.

  3. Fügen Sie der Aktion JavaScript-Code ausführen jetzt den JSON-Namen 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 Neuen Parameter hinzufügen.

  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.
    Trigger 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: Aktion „JavaScript-Code ausführen“ mit ausgewähltem Parameter „Aktionen“

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

    Screenshot: Feld „Actions Item -1“ und JSON-Name der Aktion

  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.

Nächste Schritte