Ausführen von Codeschnipseln in Workflows mithilfe von Inlinecodevorgängen in Azure Logic Apps

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

Um ohne viel Aufwand einen Codeschnipsel in Ihrem Logik-App-Workflow zu erstellen und auszuführen, können Sie den integrierten Inlinecode-Connector verwenden. Dieser Connector verfügt über eine Aktion, die das Ergebnis des Codeschnipsels zurückgibt, sodass Sie diese Ausgabe in den nachfolgenden Aktionen Ihres Workflows verwenden können.

Derzeit verfügt der Connector nur über eine einzige Aktion, die am besten für einen Codeschnipsel mit den folgenden Attributen geeignet ist, aber weitere Aktionen sind in Entwicklung. Für den Inlinecode-Connector gelten darüber hinaus unterschiedliche Limits, je nachdem, ob es sich um einen Logik-App-Workflow des Typs „Verbrauch“ oder „Standard“ handelt.

Aktion Sprache Sprachversion Ausführungsdauer Datengröße Sonstige Hinweise
Ausführen von JavaScript-Code JavaScript Standard:
Node.js 12.x.x oder 14.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 stattdessen eine Funktion über Azure Functions erstellen und aufrufen.

In diesem Artikel 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, lesen Sie die folgende Dokumentation:

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

    • Verbrauch: Erfordert Node.js-Version 8.11.10 und einen 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.

    • Standard: Erfordert Node.js-Versionen 12.x.x oder 14.x.x, aber kein Integrationskonto.

Hinzufügen der Inlinecodeaktion

  1. Öffnen Sie im Azure-Portal den Logik-App-Workflow im Designer.

  2. Fügen Sie im Designer die Aktion „Inlinecode“ zu Ihrem Workflow hinzu. Sie können die Inlinecodeaktion entweder als neuen Schritt am Ende des Workflows oder zwischen Schritten im Workflow hinzufügen. In diesem Beispiel wird die Aktion unter dem Office 365 Outlook-Trigger hinzugefügt.

    • Wenn Sie die Aktion am Ende des Workflows hinzufügen möchten, wählen Sie Neuer Schritt aus.

    • Wenn die Aktion zwischen Schritten hinzugefügt werden soll, bewegen Sie den Mauszeiger über den Pfeil, der die betreffenden Schritte verbindet. Wählen Sie das daraufhin angezeigte Pluszeichen (+) und dann Aktion hinzufügen aus.

  3. Geben Sie im Suchfeld Vorgang auswählen den Wert Inlinecode ein. Wählen Sie in der Aktionenliste die Aktion namens JavaScript-Code ausführen aus.

    Screenshot: Verbrauch-Workflow-Designer mit ausgewählter Aktion „JavaScript-Code ausführen“.

    Die Aktion wird im Designer angezeigt und enthält standardmäßig Beispielcode einschließlich einer return-Anweisung.

    Screenshot: die Inlinecode-Aktion mit Standardbeispielcode.

  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: der Verbrauch-Workflow, die Inlinecode-Aktion 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: der Verbrauch-Workflow, die Inlinecode-Aktion und Beispielcode, der Variablen erstellt.

  5. 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: der Verbrauch-Workflow, die Inlinecode-Aktion, dynamische Inhaltsliste und ausgewählte Eigenschaft „Körper“ der E-Mail-Nachricht.

    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 Inlinecodeaktion 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 den Parameter Aktionen in die Inlinecodeaktion einfügen und diese Aktionsnamen dann diesem Parameter hinzufügen. Weitere Informationen finden Sie unter Hinzufügen von Abhängigkeiten als Parameter zu einer Inlinecodeaktion weiter unten in diesem Artikel.

  6. 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: der Verbrauch-Logik-App-Workflow, die Inlinecode-Aktion und die umbenannte Eigenschaft „Körper“ mit schließendem Semikolon.

    Die Inlinecodeaktion 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. Die Aktion HTML-Tabelle erstellen verwendet dann das Token Ergebnis, um auf die Ergebnisse der Inlinecodeaktion zu verweisen und erstellt ein einzelnes Ergebnis.

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

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

In einigen Szenarien müssen Sie möglicherweise explizit anfordern, dass die Inlinecodeaktion die Ausgaben des Triggers oder der 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 Inlinecodeaktion 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 Inlinecodeaktion die entsprechenden Parameter Trigger oder 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 Inlinecodeaktion 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 Inlinecodeaktion nun den JSON-Namen hinzu.

Hinzufügen des Trigger- oder Aktionsnamens zur Inlinecodeaktion

  1. Öffnen Sie in der Inlinecodeaktion 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: die Inlinecode-Aktion und der ausgewählten Parameter „Aktionen“.

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

    Screenshot: das Feld „Actions Item -1“ und der JSON-Namen 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

Weitere Informationen zu Connectors für Azure Logic Apps