Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie einen Logik-App-Workflow in Azure Logic Apps erstellen, verfügt der Workflow über eine zugrunde liegende JavaScript Object Notation (JSON)-Definition, die die tatsächliche Logik beschreibt, die den Workflow ausführt. Die Workflowdefinition folgt einer Struktur, die anhand des Workflowdefinitionssprachenschemas überprüft 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, der den Workflow instanziiert, sowie eine oder mehrere Aktionen, die nach dem Auslösen ausgeführt werden.
Dies ist die allgemeine Struktur für eine Workflowdefinition:
"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 | Required | Description |
|---|---|---|
definition |
Yes | Das Startelement für Ihre Workflowdefinition |
$schema |
Nur bei externem Verweis auf eine Workflowdefinition | Der Speicherort der JSON-Schemadatei, welche die Version der Workflowdefinitionssprache beschreibt. Der Speicherort lautet wie folgt: 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 |
No | 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 |
No | 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 |
No | 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 |
No | 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 |
No | Die Definitionen für mindestens einen Trigger, der Ihren Workflow instanziiert. Sie können mehrere Trigger definieren, jedoch nur mit der Definitionssprache für Workflows, nicht visuell mit dem 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.
Parameters
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. Oder Sie haben möglicherweise Werte, die Sie im gesamten Workflow ohne Hardcodierung wiederverwenden möchten oder die sich häufig ändern möchten. Im Abschnitt der Workflowdefinition parameters können Sie Parameter für die Werte definieren oder bearbeiten, die ihr Workflow zur Laufzeit verwendet. Sie müssen diese Parameter zuerst definieren, bevor Sie an anderer Stelle in der Workflowdefinition auf diese Parameter verweisen können.
Dies ist die allgemeine Struktur für eine Parameterdefinition:
"parameters": {
"<parameter-name>": {
"type": "<parameter-type>",
"defaultValue": <default-parameter-value>,
"allowedValues": [ <array-with-permitted-parameter-values> ],
"metadata": {
"description": "<parameter-description>"
}
}
},
| Attribute | Required | Type | Description |
|---|---|---|---|
| < Parametername> | Yes | String | Der Name des Parameters, den Sie definieren möchten |
| < Parametertyp> | Yes | int, float, string, bool, array, object, securestring, secureobject Hinweis: Verwenden Sie für alle Kennwörter, Schlüssel und geheimen Schlüssel die securestring typen, secureobject da der GET Vorgang diese Typen nicht zurückgibt. Weitere Informationen zum Sichern von Parametern finden Sie unter Zugriff auf Parametereingaben. |
Der Typ des Parameters |
| < default-parameter-value> | Yes | Identisch mit type |
Der Standardparameterwert, wenn bei der Instanziierung des Workflows kein Wert angegeben wird. Das defaultValue Attribut ist erforderlich, damit der Workflow-Designer den Parameter korrekt anzeigen kann, Sie können jedoch einen leeren Wert angeben. |
| < array-with-permitted-parameter-values> | No | Array | Ein Array mit Werten, die vom Parameter akzeptiert werden können |
| < Parameterbeschreibung> | No | 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 gesichert werden müssen, z. B. Benutzernamen, Kennwörter und geheime Schlüssel, können Sie diese Werte in Azure Key Vault speichern und ihre Parameterdatei diese Werte aus Ihrem Schlüsseltresor abrufen lassen. 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. Hier erhalten Sie Informationen zum Testen von Logik-App-Workflows mit Simulationsdaten durch die Einrichtung von statischen Ergebnissen.
"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": { "<...>" }
}
| Attribute | Required | Type | Description |
|---|---|---|---|
| < static-result-definition-name> | Yes | 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. |
| < ausgabeattribute-and-values-returned> | Yes | 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. |
| < Headerwerte> | No | JSON | Alle Headerwerte, die von der Aktion zurückgegeben werden. |
| < status-code-returned> | Yes | String | Der von der Aktion zurückgegebene Statuscode. |
| < Aktionsstatus> | Yes | 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": { "<...>" }
},
Expressions
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. Um diese Werte darzustellen, können Sie Ausdrücke verwenden, die zur Laufzeit ausgewertet werden. Ein Ausdruck ist eine Sequenz, die eine oder mehrere Funktionen, Operatoren, Variablen, explizite Werte oder Konstanten 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.
Beispielsweise können Sie für die zuvor definierte customerName Eigenschaft den Eigenschaftswert mithilfe der Parameter() -Funktion in einem Ausdruck abrufen und diesen Wert der accountName Eigenschaft zuweisen:
"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"
Mit der Zeichenfolgeninterpolation können Sie auch mehrere Ausdrücke innerhalb von Zeichenfolgen verwenden, die durch das @-Zeichen und geschweifte Klammern ({}) eingeschlossen werden. 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 | Result |
|---|---|
| "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 | Result |
|---|---|
| "@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“ |
| "Mein Alter ist @{parameters('myAge')}" | Folgende Zeichenfolge wird zurückgegeben: „My age is 42“ |
| "@concat('Mein Alter ist ', string(parameters('myAge')))) | Folgende Zeichenfolge wird zurückgegeben: „My age is 42“ |
| "Mein Alter ist @@{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 Ausdruck-Editors erstellen, z. B.:
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')}"
}
},
Outputs
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.
Note
Verwenden Sie nicht outputs, wenn Sie über die REST-API eines Diensts auf eingehende Anforderungen reagieren. Verwenden Sie stattdessen den Aktionstyp Response.
Weitere Informationen finden Sie unter Workflowtrigger und -aktionen.
Dies ist die allgemeine Struktur für eine Ausgabedefinition:
"outputs": {
"<key-name>": {
"type": "<key-type>",
"value": "<key-value>"
}
}
| Attribute | Required | Type | Description |
|---|---|---|---|
| < Schlüsselname> | Yes | String | Der Schlüsselname des Rückgabewerts der Ausgabe |
| < key-type> | Yes | int, float, string, securestring, bool, array, JSON-Objekt | Der Typ des Rückgabewerts der Ausgabe |
| < Schlüssel-Wert> | Yes | Identisch mit <schlüsseltyp> | 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.
Operators
In Ausdrücken und Funktionen führen Operatoren bestimmte Aufgaben aus, z. B. Verweisen auf eine Eigenschaft oder einen Wert in einem Array.
| Operator | Task |
|---|---|
' |
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 (""), die mit der JSON-Formatierung um einen gesamten Ausdruck in Konflikt steht. 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]) No: 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 können Sie z.B. die Eigenschaft name für das JSON-Objekt customer abrufen: "parameters('customer').name" |
? |
Um auf die Eigenschaft eines Objekts zu verweisen, ohne einen Laufzeitfehler oder einen Workflowfehler zu riskieren, verwenden Sie den Fragezeichenoperator (?), der auch als Null-Ignorierenoperator bezeichnet wird, vor der Eigenschaft. Mit diesem Operator können Sie sicher auf eine Eigenschaft oder ein Arrayelement zugreifen, wenn das übergeordnete Objekt oder die referenzierte Eigenschaft möglicherweise enthalten null oder fehlt. - Wenn das übergeordnete Objekt, das vor dem ? Operator angezeigt wird null , die referenzierte Eigenschaft fehlt, gibt der gesamte Ausdruck nullanstelle des Workflowausfalls zurück. - Wenn das Objekt oder die Eigenschaft vorhanden ist, gibt der Ausdruck den Wert der Eigenschaft zurück. Angenommen, Sie haben den folgenden Ausdruck: triggerBody()?['ContentData'] - Wenn triggerBody() ein Objekt aus der ContentData Eigenschaft zurückgegeben wird, erhalten Sie den Wert des Objekts. - Wenn triggerBody() die Eigenschaft fehlt null oder fehlt, gibt die ContentData Funktion null zurück, anstatt mit dem Fehler "Vorlagensprachausdrücke können nicht verarbeitet werden" fehlschlagen. Mit dem ? Operator können Sie außerdem Zugriffseigenschaften sicher verketten und in den folgenden Szenarien hilfreich sein: – Verwalten von Ausdrücken, die mit optionalen JSON-Feldern funktionieren. - Behandeln Von Verbinderausgängen, die bestimmte Eigenschaften möglicherweise weglassen. - Vermeiden Sie spröde Ausdrücke in bedingter Logik. Um beispielsweise den Eigenschaftenzugriff zu verketten und NULL-Ausgaben von einem Trigger zu behandeln, können Sie den folgenden Ausdruck verwenden: coalesce(trigger().outputs?.body?['<property-name>'], '<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. Um in Ausdrücken auf diese Werte zu verweisen oder zu arbeiten, können Sie Funktionen verwenden, die von der Workflowdefinitionssprache bereitgestellt werden.