Erstellen, Bearbeiten oder Erweitern von JSON-Code für Logik-App-Workflowdefinitionen in Azure Logic Apps
Gilt für: Azure Logic Apps (Verbrauch)
Wenn Sie Unternehmensintegrationslösungen mit automatisierten Workflows in Azure Logic Apps erstellen, verwenden die zugrunde liegenden Workflowdefinitionen einfachen und deklarativen JSON-Code (JavaScript Object Notation) sowie das Schema der Definitionssprache für Workflows zur Beschreibung und Überprüfung der Definitionen. Diese Formate erleichtern Benutzern ohne umfassende Codekenntnisse das Lesen und Verstehen von Workflowdefinitionen. Wenn Sie die Erstellung und Bereitstellung von Logik-App-Ressourcen automatisieren möchten, können Sie Workflowdefinitionen als Azure-Ressourcen in Azure Resource Manager-Vorlagen einbinden. Zum Erstellen, Verwalten und Bereitstellen von Logik-Apps können Sie dann Azure PowerShell, die Azure CLI oder die Azure Logic Apps-REST-APIs verwenden.
Um mit Workflowdefinitionen in JSON zu arbeiten, öffnen Sie den Codeansichts-Editor, wenn Sie im Azure-Portal oder Visual Studio Code arbeiten. Sie können die Definition auch kopieren und in jeden gewünschten Editor einfügen.
Hinweis
Einige Funktionen von Azure Logic Apps (beispielsweise das Definieren von Parametern und mehreren Triggern in Workflowdefinitionen) sind nicht im Workflow-Designer, sondern nur in JSON verfügbar. Für diese Aufgaben müssen Sie daher in der Codeansicht oder einem anderen Editor arbeiten.
Bearbeiten von JSON-Code – Azure-Portal
Geben Sie in das Suchfeld des Azure-Portals Logik-Apps ein und wählen Sie es aus. Wählen Sie auf der Seite Logik-Apps die gewünschte Logik-App-Verbrauchsressource aus.
Wählen Sie im Menü der Logik-App unter Entwicklungstools die Option Logik-App-Codeansicht aus.
Der Codeansichts-Editor wird geöffnet und zeigt die Definition des Logik-App-Workflows im JSON-Format an.
Bearbeiten von JSON – Visual Studio Code
Siehe Bearbeiten bereitgestellter Logik-App in Visual Studio Code
Bearbeiten von JSON-Code – Visual Studio
Wichtig
Die Erweiterung Azure Logic Apps-Tools für Visual Studio ist veraltet und erhält keine Updates mehr. Informationen zum Erstellen und Verwalten von Logik-App-Workflows mithilfe einer lokalen Entwicklungsumgebung finden Sie in der folgenden Dokumentation:
Bevor Sie die Definition des Verbrauchsworkflows in Visual Studio bearbeiten können, müssen Sie sicherstellen, dass die erforderlichen Tools installiert sind. In Visual Studio können Sie Logik-Apps öffnen, die direkt über das Azure-Portal oder als Azure Resource Manager-Projekte über Visual Studio erstellt und bereitgestellt wurden.
Öffnen Sie die Visual Studio-Projektmappe oder das Azure-Ressourcengruppenprojekt mit der Logik-App.
Suchen Sie nach der Workflowdefinition, und öffnen Sie sie. Die Definition wird standardmäßig in einer Resource Manager-Vorlage mit dem Namen LogicApp.json angezeigt.
Sie können diese Vorlage für die Bereitstellung in verschiedenen Umgebungen anpassen.
Öffnen Sie das Kontextmenü für Ihre Workflowdefinition und Vorlage. Wählen Sie Öffnen mit Logik-App-Designer aus.
Tipp
Sollte dieser Befehl in Visual Studio 2019 nicht zur Verfügung stehen, stellen Sie sicher, dass Sie über die aktuellen Updates für Visual Studio verfügen.
Klicken Sie unten im Workflow-Designer auf Codeansicht.
Der Codeansichts-Editor wird geöffnet und zeigt die Workflowdefinition im JSON-Format an.
Um zur Designeransicht zurückzukehren, wählen Sie unten im Codeansichts-Editor Entwurf aus.
Parameter
Der Bereitstellungslebenszyklus umfasst in der Regel verschiedene Umgebungen zur Entwicklung, zum Testen, Staging und für die Produktion. Wenn Sie Werte haben, die Sie in ihrer Logik-App wieder verwenden möchten, ohne hartcodieren oder – je nach Ihren Bereitstellungsanforderungen – variieren zu müssen, können Sie eine Azure Resource Manager-Vorlage für die Workflowdefinition erstellen, um auch die Bereitstellung von Logik-Apps zu automatisieren.
Führen Sie diese allgemeinen Schritte aus, um stattdessen diese Werte zu parametrisieren bzw. Parameter für diese zu definieren und zu verwenden. Anschließend können Sie die Werte in einer separaten Parameterdatei bereitstellen, die diese Werte an Ihre Vorlage übergibt. Auf diese Weise können Sie diese Werte einfacher ändern, ohne Ihre Logik-App aktualisieren und erneut bereitstellen zu müssen. Weitere Informationen finden Sie unter Übersicht: Automatisieren der Bereitstellung für Azure Logik-Apps mit Azure Resource Manager-Vorlagen.
Definieren Sie in Ihrer Vorlage Vorlagenparameter und Workflowdefinitionsparameter, um die Werte zu akzeptieren, die zur Bereitstellung bzw. zur Laufzeit verwendet werden sollen.
Vorlagenparameter werden in einem Parameterabschnitt definiert, der sich außerhalb der Workflowdefinition befindet, wohingegen Workflowdefinitionsparameter in einem Parameterabschnitt definiert werden, der sich in der Workflow definition befindet.
Ersetzen Sie die hartcodierten Werte durch Ausdrücke, die auf diese Parameter verweisen. Vorlagenausdrücke verwenden Syntax, die von Workflowdefinitionsausdrücken abweicht.
Verkomplizieren Sie Ihren Code nicht, indem Sie in Workflowdefinitionsausdrücken, die bei der Bereitstellung ausgewertet werden, keine Vorlagenausdrücke verwenden, die bei zur Laufzeit ausgewertet werden. Verwenden Sie nur Vorlagenausdrücke außerhalb der Workflowdefinition. Verwenden Sie nur Workflowdefinitionsausdrücke in der Workflowdefinition.
Wenn Sie die Werte für die Workflowdefinitionsparameter angeben, können Sie auf Vorlagenparameter verweisen, indem Sie den Parameterabschnitt verwenden, der sich außerhalb der Workflowdefinition befindet, sich aber noch in der Ressourcendefinition Ihrer Logik-App befindet. Auf diese Weise können Sie Vorlagenparameterwerte an die Workflowdefinitionsparameter übergeben.
Speichern Sie die Werte für die Parameter in einer separaten Parameterdatei, und schließen Sie diese Datei in die Bereitstellung ein.
Verarbeiten von Zeichenfolgen mit Funktionen
Azure Logic Apps verfügt über verschiedene Funktionen zum Arbeiten mit Zeichenfolgen. Nehmen Sie z.B. an, dass Sie einen Firmennamen aus einem Auftrag einem anderen System übergeben möchten. Allerdings sind Sie sich nicht über die ordnungsgemäße Behandlung für die Zeichencodierung sicher. Sie könnten eine base64-Codierung für diese Zeichenfolge ausführen, aber um Escapezeichen in der URL zu vermeiden, können Sie stattdessen mehrere Zeichen ersetzen. Außerdem müssen Sie nur eine Teilzeichenfolge des Firmennamens verwenden, da die ersten fünf Zeichen nicht verwendet werden.
{
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
"contentVersion": "1.0.0.0",
"parameters": {
"order": {
"defaultValue": {
"quantity": 10,
"id": "myorder1",
"companyName": "NAME=Contoso"
},
"type": "Object"
}
},
"triggers": {
"request": {
"type": "Request",
"kind": "Http"
}
},
"actions": {
"order": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
}
}
},
"outputs": {}
}
In diesem Beispiel werden die Schritte beschrieben, in denen diese Zeichenfolge von innen nach außen verarbeitet wird:
"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
Rufen Sie
length()
für den Firmennamen ab, um die Gesamtzahl der Zeichen zu erhalten.Um eine kürzere Zeichenfolge zu erhalten, subtrahieren Sie 5.
Nun erhalten Sie
substring()
. Beginnen Sie bei Index5
, und fahren Sie mit dem Rest der Zeichenfolge fort.Wandeln Sie diese Teilzeichenfolge in eine
base64()
-Zeichenfolge um.Ersetzen Sie mit
replace()
alle+
-Zeichen durch-
-Zeichen.Ersetzen Sie schließlich mit
replace()
alle/
-Zeichen durch_
-Zeichen.
Zuordnen von Listenelementen zu Eigenschaftswerten und Verwenden von Zuordnungen als Parameter
Um basierend auf einem Eigenschaftswert unterschiedliche Ergebnisse zu erzielen, können Sie eine Zuordnung erstellen, die für jeden Eigenschaftswert nach der Übereinstimmung mit einem Ergebnis sucht, und dann diese Zuordnung als Parameter verwenden.
Dieser Workflow definiert z.B. einige Kategorien als Parameter und eine Zuordnung, die für jede dieser Kategorien nach der Übereinstimmung mit einer bestimmten URL sucht. Der Workflow ruft zunächst eine Liste von Artikeln auf. Anschließend verwendet der Workflow die Zuordnung, um für jeden Artikel die URL zu finden, die mit der Kategorie übereinstimmt.
Mit der Funktion
intersection()
wird überprüft, ob die Kategorie einer bekannten definierten Kategorie entspricht.Nachdem das Beispiel eine übereinstimmenden Kategorie erhält, ruft das Beispiel das Element mithilfe eckiger Klammern aus der Zuordnung ab:
parameters[...]
{
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
"contentVersion": "1.0.0.0",
"parameters": {
"specialCategories": {
"defaultValue": [
"science",
"google",
"microsoft",
"robots",
"NSA"
],
"type": "Array"
},
"destinationMap": {
"defaultValue": {
"science": "https://www.nasa.gov",
"microsoft": "https://www.microsoft.com/en-us/default.aspx",
"google": "https://www.google.com",
"robots": "https://en.wikipedia.org/wiki/Robot",
"NSA": "https://www.nsa.gov/"
},
"type": "Object"
}
},
"triggers": {
"Request": {
"type": "Request",
"kind": "http"
}
},
"actions": {
"getArticles": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=https://feeds.wired.com/wired/index"
}
},
"forEachArticle": {
"type": "foreach",
"foreach": "@body('getArticles').responseData.feed.entries",
"actions": {
"ifGreater": {
"type": "if",
"expression": "@greater(length(intersection(item().categories, parameters('specialCategories'))), 0)",
"actions": {
"getSpecialPage": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "@parameters('destinationMap')[first(intersection(item().categories, parameters('specialCategories')))]"
}
}
}
}
},
"runAfter": {
"getArticles": [
"Succeeded"
]
}
}
}
}
Abrufen von Daten mit Date-Funktionen
Zum Abrufen von Daten aus einer Datenquelle, die nicht nativ Trigger unterstützt, können Sie stattdessen Date-Funktionen zum Arbeiten mit Uhrzeiten und Datumsangaben verwenden. Dieser Ausdruck ermittelt z.B., wie lange die Schritte dieses Workflows von innen nach außen dauern:
"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
Extrahieren Sie von der
order
-Aktion aus diestartTime
.Rufen Sie die aktuelle Zeit mit der Funktion
utcNow()
ab.Subtrahieren Sie eine Sekunde:
addSeconds(..., -1)
Sie können auch andere Zeiteinheiten verwenden, z. B.
minutes
oderhours
.Jetzt können Sie diese beiden Werte vergleichen.
Wenn der erste Wert kleiner als der zweite Wert ist, bedeutet dies, dass mehr als eine Sekunde verstrichen ist, seit der Auftrag erteilt wurde.
Zum Formatieren von Datumsangaben können Sie Zeichenfolgenformatierer verwenden. Zum Abrufen von RFC1123 verwenden Sie beispielsweise utcnow('r')
. Erfahren Sie mehr über die Formatierung von Datumsangaben.
{
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
"contentVersion": "1.0.0.0",
"parameters": {
"order": {
"defaultValue": {
"quantity": 10,
"id": "myorder-id"
},
"type": "Object"
}
},
"triggers": {
"Request": {
"type": "request",
"kind": "http"
}
},
"actions": {
"order": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://www.example.com/?id=@{parameters('order').id}"
}
},
"ifTimingWarning": {
"type": "If",
"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
"actions": {
"timingWarning": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://www.example.com/?recordLongOrderTime=@{parameters('order').id}¤tTime=@{utcNow('r')}"
}
}
},
"runAfter": {
"order": [
"Succeeded"
]
}
}
},
"outputs": {}
}
Zugehöriger Inhalt
- Ausführen von Schritten basierend auf einer Bedingung (Bedingungsanweisungen)
- Ausführen von Schritten basierend auf verschiedenen Werten (switch-Anweisungen)
- Ausführen und Wiederholen von Schritten (Schleifen)
- Ausführen oder Zusammenführen paralleler Schritte (Verzweigungen)
- Ausführen von Schritten basierend auf gruppierten Aktionsstatus (Bereiche)
- Schema der Definitionssprache für Workflows für Azure Logic Apps
- Workflowaktionen und -trigger für Azure Logic Apps