Schemareferenzleitfaden für die Workflowdefinitionssprache in Azure Logic Apps

Beim Erstellen einer Logik-App in Azure Logic Apps verfügt Ihre Logik-App über eine zugrunde liegende Workflowdefinition, die die eigentliche Logik beschreibt, die in Ihrer Logik-App ausgeführt wird. Diese Workflowdefinition verwendet JSON und folgt einer Struktur, die vom WDL-Schema (Workflow Definition Language, Workflowdefinitionssprache) validiert wird. Diese Referenz enthält eine Übersicht über diese Struktur und wie das Schema Attribute in Ihrer Workflowdefinition definiert.

Struktur der Workflowdefinition

Eine Workflowdefinition enthält immer einen Trigger zum Instanziieren Ihrer Logik-App sowie mindestens eine weitere Aktion, die nach der Auslösung des Triggers ausgeführt wird.

So sieht die allgemeine Struktur einer Workflowdefinition aus:

"definition": {
  "$schema": "<workflow-definition-language-schema-version>",
  "actions": { "<workflow-action-definitions>" },
  "contentVersion": "<workflow-definition-version-number>",
  "outputs": { "<workflow-output-definitions>" },
  "parameters": { "<workflow-parameter-definitions>" },
  "staticResults": { "<static-results-definitions>" },
  "triggers": { "<workflow-trigger-definitions>" }
}
attribute Erforderlich Beschreibung
definition Ja Das Startelement für Ihre Workflowdefinition
$schema Nur bei externem Verweis auf eine Workflowdefinition Der Speicherort für die JSON-Schemadatei, die die Workflowdefinitionssprache-Version beschreibt, die Sie hier finden:

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json
actions No Die Definitionen für mindestens eine Aktion, die zur Workflowlaufzeit ausgeführt werden soll. Weitere Informationen finden Sie unter Trigger und Aktionen.



Maximale Anzahl von Aktionen: 250
contentVersion Nein Die Versionsnummer für Ihre Workflowdefinition, die standardmäßig „1.0.0.0“ lautet. Geben Sie einen zu verwendenden Wert an, um bei der Bereitstellung eines Workflows die richtige Definition besser ermitteln und bestätigen zu können.
outputs Nein Die Definitionen für die Ausgaben, die von einer Workflowausführung zurückgegeben werden. Weitere Informationen finden Sie unter Ausgaben.



Maximale Anzahl von Ausgaben: 10
parameters Nein Die Definitionen für einen oder mehrere Parameter, die die Werte übergeben, die zur Runtime ihrer Logik-App verwendet werden sollen. Weitere Informationen finden Sie unter Parameter.



Maximale Anzahl von Parametern: 50
staticResults Nein Die Definitionen für mindestens ein statisches Ergebnis, das von Aktionen als Modellausgabe zurückgegeben wird, wenn statische Ergebnisse für diese Aktionen aktiviert wurden. In jeder Aktionsdefinition verweist das runtimeConfiguration.staticResult.name-Attribut auf die entsprechende Definition innerhalb von staticResults. Weitere Informationen finden Sie unter Statische Ergebnisse.
triggers Nein Die Definitionen für mindestens einen Trigger, der Ihren Workflow instanziiert. Sie können mehrere Trigger definieren, aber nur mit der Workflowdefinitionssprache, nicht visuell über den Workflow-Designer. Weitere Informationen finden Sie unter Trigger und Aktionen.



Maximale Anzahl von Triggern: 10

Trigger und Aktionen

In einer Workflowdefinition werden in den Abschnitten triggers und actions sämtliche Aufrufe definiert, die während der Ausführung Ihres Workflows auftreten. Informationen zur Syntax sowie weitere Informationen zu diesen Abschnitten finden Sie unter Workflowtrigger und -aktionen.

Parameter

Der Bereitstellungslebenszyklus umfasst in der Regel verschiedene Umgebungen zur Entwicklung, zum Testen, Staging und für die Produktion. Wenn Sie Logik-Apps in verschiedenen Umgebungen bereitstellen, möchten Sie wahrscheinlich basierend auf Ihren Bereitstellungsanforderungen verschiedene Werte verwenden, z.B. Verbindungszeichenfolgen. Möglicherweise gibt es auch Werte, die Sie in ihrer Logik-APP wiederverwenden möchten, ohne sie hartcodieren oder häufig ändern zu müssen. Im parameters-Abschnitt Ihrer Workflowdefinition können Sie Parameter für die Werte, die von ihrer Logik-App zur Runtime verwendet werden, definieren oder bearbeiten. Sie müssen diese Parameter zuerst definieren, bevor Sie an anderer Stelle in der Workflowdefinition auf diese Parameter verweisen können.

So sieht die allgemeine Struktur einer Parameterdefinition aus:

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
attribute Erforderlich Type BESCHREIBUNG
<parameter-name> Ja String Der Name des Parameters, den Sie definieren möchten
<parameter-type> Ja int, float, string, bool, array, object, securestring, secureobject



Hinweis: Verwenden Sie für sämtliche Kennwörter, Schlüssel und Geheimnisse die Typen securestring oder secureobject, da diese Typen beim GET-Vorgang nicht zurückgegeben werden. Weitere Informationen zum Sichern von Parametern finden Sie unter Zugriff auf Parametereingaben.
Der Typ des Parameters
<default-parameter-value> Ja Identisch mit type Der Standardparameterwert, wenn bei der Instanziierung des Workflows kein Wert angegeben wird. Das defaultValue-Attribut ist erforderlich, damit der Logik-App-Designer den Parameter korrekt anzeigen kann, Sie können jedoch einen leeren Wert angeben.
<array-with-permitted-parameter-values> Nein Array Ein Array mit Werten, die vom Parameter akzeptiert werden können
<parameter-description> Nein JSON-Objekt Alle anderen Parameterdetails, z.B. eine Beschreibung des Parameters

Erstellen Sie als nächstes eine Azure Resource Manager-Vorlage für die Workflowdefinition, definieren Sie Vorlagenparameter, die die bei der Bereitstellung gewünschten Werte akzeptieren, ersetzen Sie hartcodierte Werte nach Bedarf durch Verweise auf Vorlagen- oder Workflowdefinitionsparameter, und speichern Sie die Werte, die bei der Bereitstellung verwendet werden sollen, in einer separaten Parameterdatei. Auf diese Weise können Sie diese Werte einfacher über die Parameterdatei ändern, ohne Ihre Logik-App aktualisieren und erneut bereitstellen zu müssen. Für Informationen, die vertraulich sind oder geschützt werden müssen, etwa Benutzernamen, Kennwörter und Geheimnisse, können Sie diese Werte in Azure Key Vault speichern und aus Ihrem Schlüsseltresor in die Parameterdatei abrufen. Weitere Informationen und Beispiele zum Definieren von Parametern auf Vorlagen- und Workflowdefinitionsebene finden Sie unter Übersicht: Automatisieren der Bereitstellung für Logik-Apps mit Azure Resource Manager-Vorlagen.

Statische Ergebnisse

Definieren Sie im staticResults-Attribut die Attribute outputs und status des Modells der Aktion. Die Aktion gibt diese Attribute zurück, wenn die Einstellung für statische Ergebnisse für die Aktion aktiviert ist. In der Definition der Aktion verweist das runtimeConfiguration.staticResult.name-Attribut auf den Namen der Definition des statischen Ergebnisses innerhalb von staticResults. Erfahren Sie, wie Sie Logik-App-Workflows mit simulierten Daten testen können , indem Sie statische Ergebnisse einrichten.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "<static-result-definition-name>": {
         "outputs": {
            <output-attributes-and-values-returned>,
            "headers": { <header-values> },
            "statusCode": "<status-code-returned>"
         },
         "status": "<action-status>"
      }
   },
   "triggers": { "<...>" }
}
Attribut Erforderlich Type BESCHREIBUNG
<static-result-definition-name> Ja String Der Name der Definition eines statischen Ergebnisses, auf die eine Aktionsdefinition über ein runtimeConfiguration.staticResult-Objekt verweisen kann. Weitere Informationen finden Sie unter den Einstellungen für die Laufzeitkonfiguration.

Sie können jedoch auch einen beliebigen anderen eindeutigen Namen verwenden. Standardmäßig wird an diesen eindeutigen Namen eine Zahl angehängt, die nach Bedarf inkrementiert wird.
<output-attributes-and-values-returned> Ja Varies Die Anforderungen an diese Attribute variieren auf Grundlage verschiedener Bedingungen. Wenn z. B. für das Attribut statusSucceeded gilt, schließt das outputs-Attribut Attribute und Werte ein, die von der Aktion als Modellausgaben zurückgegeben werden. Wenn für das Attribut statusFailed gilt, schließt das outputs-Attribut das errors-Attribut ein. Dabei handelt es sich um ein Array mit mindestens einem message-Objekt, in dem Fehlerinformationen enthalten sind.
<header-values> Nein JSON Alle Headerwerte, die von der Aktion zurückgegeben werden.
<status-code-returned> Ja String Der von der Aktion zurückgegebene Statuscode.
<action-status> Ja String Der Status der Aktion, z. B. Succeeded oder Failed.

In dieser HTTP-Aktionsdefinition verweist beispielsweise das runtimeConfiguration.staticResult.name-Attribut auf HTTP0 innerhalb des staticResults-Attributs, wo die Modellausgaben für die Aktion definiert werden. Das runtimeConfiguration.staticResult.staticResultOptions-Attribut gibt an, dass die Einstellung für statische Ergebnisse für die HTTP-Aktion Enabled ist.

"actions": {
   "HTTP": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.microsoft.com"
      },
      "runAfter": {},
      "runtimeConfiguration": {
         "staticResult": {
            "name": "HTTP0",
            "staticResultOptions": "Enabled"
         }
      },
      "type": "Http"
   }
},

Die HTTP-Aktion gibt die Ausgaben in der HTTP0-Definition innerhalb von staticResults zurück. In diesem Beispiel ist die Modellausgabe für den Statuscode OK. Für Headerwerte ist die Modellausgabe "Content-Type": "application/JSON". Für den Status der Aktion ist die Modellausgabe Succeeded.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "HTTP0": {
         "outputs": {
            "headers": {
               "Content-Type": "application/JSON"
            },
            "statusCode": "OK"
         },
         "status": "Succeeded"
      }
   },
   "triggers": { "<...>" }
},

Ausdrücke

Mit JSON können Sie über Literalwerte verfügen, die zur Entwurfszeit vorhanden sind. Beispiel:

"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7

Sie können auch über Werte verfügen, die erst zur Laufzeit vorhanden sind. Zur Darstellung dieser Werte können Sie Ausdrücke verwenden, die zur Laufzeit ausgewertet werden. Ein Ausdruck ist eine Sequenz, die mindestens eine Funktion, einen Operator, eine Variable, einen expliziten Wert oder eine Konstante enthalten kann. In Ihrer Workflowdefinition können Sie einen Ausdruck an einer beliebigen Stelle in einem JSON-Zeichenfolgenwert verwenden, indem Sie dem Ausdruck das at-Zeichen voranstellen (@). Beim Auswerten eines Ausdrucks, der einen JSON-Wert darstellt, wird der Ausdruckskörper durch Entfernen des @-Zeichens extrahiert. Dies führt immer zu einem anderen JSON-Wert.

Für die zuvor definierte Eigenschaft customerName können Sie den Eigenschaftswert in einem Ausdruck beispielsweise über die Funktion parameters() abrufen und diesen Wert der Eigenschaft accountName zuweisen:

"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"

Durch die Zeichenfolgeninterpolation können Sie auch mehrere Ausdrücke in Zeichenfolgen verwenden, die vom @-Zeichen und geschweiften Klammern ({}) umschlossen sind. Die Syntax sieht wie folgt aus:

@{ "<expression1>", "<expression2>" }

Das Ergebnis ist immer eine Zeichenfolge, wodurch diese Funktion der Funktion concat() ähnelt. Beispiel:

"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"

Wenn Sie über eine Zeichenfolgenliteral verfügen, das mit dem @-Zeichen beginnt, stellen Sie dem @-Zeichen ein weiteres @-Zeichen als Escapezeichen voran: @@.

Diese Beispiele veranschaulichen die Auswertung von Ausdrücken:

JSON-Wert Ergebnis
"Sophia Owen" Folgende Zeichen werden zurückgegeben: „Sophia Owen“
"array[1]" Folgende Zeichen werden zurückgegeben: „array[1]“
"@@" Folgende Zeichen werden als Zeichenfolge mit einem Zeichen zurückgegeben: „@“
" @" Folgende Zeichen werden als Zeichenfolge mit zwei Zeichen zurückgegeben: „@“

Angenommen, für "myBirthMonth" ist der Monat "January" und für "myAge" die Zahl 42 definiert:

"myBirthMonth": "January",
"myAge": 42

Diese Beispiele veranschaulichen, wie die folgenden Ausdrücke ausgewertet werden:

JSON-Ausdruck Ergebnis
"@parameters('myBirthMonth')" Folgende Zeichenfolge wird zurückgegeben: „January“
"@{parameters('myBirthMonth')}" Folgende Zeichenfolge wird zurückgegeben: „January“
"@parameters('myAge')" Folgende Zahl wird zurückgeben: 42
"@{parameters('myAge')}" Folgende Zahl wird als Zeichenfolge zurückgegeben: „42“
"My age is @{parameters('myAge')}" Folgende Zeichenfolge wird zurückgegeben: „My age is 42“
"@concat('My age is ', string(parameters('myAge')))" Folgende Zeichenfolge wird zurückgegeben: „My age is 42“
"My age is @@{parameters('myAge')}" Folgende Zeichenfolge, die den Ausdruck enthält, wird zurückgegeben: „My age is @{parameters('myAge')}“

Wenn Sie im Workflow-Designer visuell arbeiten, können Sie Ausdrücke mithilfe des Ausdrucks-Editors erstellen, z. B.:

Screenshot: Workflow-Designer und Ausdrucks-Editor.

Wenn Sie fertig sind, wird der Ausdruck für die entsprechende Eigenschaft in Ihrer Workflowdefinition angezeigt, wie im folgenden Beispiel für die Eigenschaft searchQuery:

"Search_tweets": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['x']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},

Ausgaben

Definieren Sie im Abschnitt outputs die Daten, die Ihr Workflow nach Abschluss der Ausführung zurückgeben kann. Wenn Sie beispielsweise einen bestimmten Status oder Wert aus den einzelnen Ausführungen nachverfolgen möchten, müssen Sie angeben, dass diese Daten bei der Workflowausgabe zurückgegeben werden.

Hinweis

Wenn Sie auf eingehende Anforderungen von der REST-API eines Diensts antworten, verwenden outputsSie nicht . Verwenden Sie stattdessen den Aktionstyp Response. Weitere Informationen finden Sie unter Workflowtrigger und -aktionen.

So sieht die allgemeine Struktur einer Ausgabedefinition aus:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
attribute Erforderlich Type BESCHREIBUNG
<key-name> Ja String Der Schlüsselname des Rückgabewerts der Ausgabe
<key-type> Ja int, float, string, securestring, bool, array, JSON-Objekt Der Typ des Rückgabewerts der Ausgabe
<key-value> Ja Identisch mit <key-type> Der Rückgabewert der Ausgabe

Zum Abrufen der Ausgabe aus einer Workflowausführung müssen Sie im Azure-Portal den Ausführungsverlauf Ihrer Logik-App sowie Details überprüfen oder die REST-API des Workflows verwenden. Sie können die Ausgabe auch an externe Systeme übergeben, z.B. Power BI, um Dashboards erstellen zu können.

Operatoren

In Ausdrücken und Funktionen führen Operatoren bestimmte Tasks aus. Sie verweisen z.B. auf eine Eigenschaft oder einen Wert in einem Array.

Operator Aufgabe
' Wenn Sie ein Zeichenfolgenliteral als Eingabe oder in Ausdrücken und Funktionen verwenden möchten, umschließen Sie die Zeichenfolge nur mit einfachen Anführungszeichen. Beispiel: '<myString>'. Verwenden Sie keine doppelten Anführungszeichen (""). Dies könnte zu einem Konflikt mit der JSON-Formatierung eines ganzen Ausdrucks führen. Beispiel:

Ja: length('Hello')
No: length("Hello")

Wenn Sie Arrays oder Zahlen übergeben, sind keine umschließenden Satzzeichen erforderlich. Beispiel:

Ja: length([1, 2, 3])
Nein: length("[1, 2, 3]")
[] Um auf einen Wert an einer bestimmten Position (Index) in einem Array oder innerhalb eines JSON-Objekts zu verweisen, verwenden Sie eckige Klammern, z. B.:

- So rufen Sie das zweite Element in einem Array ab:

myArray[1]

– So greifen Sie auf die Eigenschaften in einem JSON-Objekt zu:

Beispiel 1:
setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)

Beispiel 2:
lastIndexOf(triggerBody()?['subject'],'some string')
. Verwenden Sie den Punktoperator, um auf eine Eigenschaft in einem Objekt zu verweisen. So rufen Sie beispielsweise die name Eigenschaft für ein customer JSON-Objekt ab:

"parameters('customer').name"
? Verwenden Sie den Operator null ignorieren (?), um auf Nulleigenschaften in einem Objekt ohne Laufzeitfehler zu verweisen. Um z. B. NULL-Ausgaben von einem Trigger zu behandeln, können Sie den folgenden Ausdruck verwenden:

coalesce(trigger().outputs?.body?['<someProperty>'], '<property-default-value>')

Functions

Einige Ausdrücke erhalten ihre Werte von Laufzeitaktionen, die zu Beginn der Ausführung Ihrer Workflowdefinition möglicherweise noch nicht vorhanden sind. Sie können mithilfe von Funktionen, die von der Definitionssprache für Workflows bereitgestellt werden, auf diese Werte in Ausdrücken verweisen oder mit diesen Werten arbeiten.

Nächste Schritte