Erstellen, Bearbeiten oder Erweitern von JSON-Code für Logik-App-Workflowdefinitionen in Azure Logic AppsCreate, edit, or extend JSON for logic app workflow definitions in Azure Logic Apps

Wenn Sie Enterprise Integration-Lösungen mit automatisierten Workflows in Azure Logic Apps erstellen, verwenden die zugrunde liegenden Logik-App-Definitionen einfachen und deklarativen JSON-Code (JavaScript Object Notation) sowie das Schema der Definitionssprache für Workflows zur Beschreibung und Überprüfung der Definitionen.When you create enterprise integration solutions with automated workflows in Azure Logic Apps, the underlying logic app definitions use simple and declarative JavaScript Object Notation (JSON) along with the Workflow Definition Language (WDL) schema for their description and validation. Diese Formate erleichtern Benutzern ohne umfassende Codekenntnisse das Lesen und Verständnis von Logik-App-Definitionen.These formats make logic app definitions easier to read and understand without knowing much about code. Wenn Sie die Erstellung und Bereitstellung von Logik-Apps automatisieren möchten, können Sie Logik-App-Definitionen als Azure-Ressourcen in Azure Resource Manager-Vorlagen einbinden.When you want to automate creating and deploying logic apps, you can include logic app definitions as Azure resources inside Azure Resource Manager templates. 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.To create, manage, and deploy logic apps, you can then use Azure PowerShell, Azure CLI, or the Azure Logic Apps REST APIs.

Um mit Logik-App-Definitionen in JSON zu arbeiten, öffnen Sie im Azure-Portal oder in Visual Studio den Codeansichts-Editor, oder kopieren Sie die Definition in einen Editor Ihrer Wahl.To work with logic app definitions in JSON, open the Code View editor when working in the Azure portal or in Visual Studio, or copy the definition into any editor that you want. Falls Sie noch nicht mit Logik-Apps gearbeitet haben, sollten Sie zunächst die Schnellstartanleitung zum Erstellen Ihrer ersten Logik-App lesen.If you're new to logic apps, review how to create your first logic app.

Hinweis

Einige Funktionen von Azure Logic Apps (beispielsweise das Definieren von Parametern und mehreren Triggern in Logik-App-Definitionen) sind nicht im Designer für Logik-Apps, sondern nur in JSON verfügbar.Some Azure Logic Apps capabilities, such as defining parameters and multiple triggers in logic app definitions, are available only in JSON, not the Logic Apps Designer. Für diese Aufgaben müssen Sie daher in der Codeansicht oder einem anderen Editor arbeiten.So for these tasks, you must work in Code View or another editor.

Bearbeiten von JSON-Code – Azure-PortalEdit JSON - Azure portal

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.

  2. Klicken Sie im Menü auf der linken Seite auf Alle Dienste.From the left menu, choose All services. Suchen Sie mithilfe des Suchfelds nach „Logik-Apps“, und wählen Sie Ihre Logik-App dann in den Suchergebnissen aus.In the search box, find "logic apps", and then from the results, select your logic app.

  3. Klicken Sie im Menü Ihrer Logik-App unter Entwicklungstools auf Logik-App-Codeansicht.On your logic app's menu, under Development Tools, select Logic App Code View.

    Der Codeansichts-Editor wird geöffnet und zeigt die Definition der Logik-App im JSON-Format an.The Code View editor opens and shows your logic app definition in JSON format.

Bearbeiten von JSON-Code – Visual StudioEdit JSON - Visual Studio

Bevor Sie die Definition Ihrer Logik-App in Visual Studio bearbeiten können, müssen Sie sicherstellen, dass die erforderlichen Tools installiert sind.Before you can work on your logic app definition in Visual Studio, make sure that you've installed the required tools. Informationen zum Erstellen einer Logik-App mit Visual Studio finden Sie unter Schnellstart: Automatisieren von Aufgaben und Prozessen mit Azure Logic Apps – Visual Studio.To create a logic app with Visual Studio, review Quickstart: Automate tasks and processes with Azure Logic Apps - Visual Studio.

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.In Visual Studio, you can open logic apps that were created and deployed either directly from the Azure portal or as Azure Resource Manager projects from Visual Studio.

  1. Öffnen Sie die Visual Studio-Projektmappe oder das Azure-Ressourcengruppenprojekt mit der Logik-App.Open the Visual Studio solution, or Azure Resource Group project, that contains your logic app.

  2. Suchen Sie nach der Definition Ihrer Logik-App, und öffnen Sie sie. Die Definition wird standardmäßig in einer Resource Manager-Vorlage mit dem Namen LogicApp.json angezeigt.Find and open your logic app's definition, which by default, appears in an Resource Manager template, named LogicApp.json. Sie können diese Vorlage für die Bereitstellung in verschiedenen Umgebungen anpassen.You can use and customize this template for deployment to different environments.

  3. Öffnen Sie das Kontextmenü für Ihre Logik-App-Definition und Vorlage.Open the shortcut menu for your logic app definition and template. Wählen Sie Öffnen mit Logik-App-Designer aus.Select Open With Logic App Designer.

    Öffnen der Logik-App in einer Visual Studio-Projektmappe

    Tipp

    Sollte dieser Befehl in Visual Studio 2019 nicht zur Verfügung stehen, überprüfen Sie, ob Sie über die neuesten Updates für Visual Studio verfügen.If you don't have this command in Visual Studio 2019, check that you have the latest updates for Visual Studio.

  4. Klicken Sie unten im Designer auf Codeansicht.At the bottom of the designer, choose Code View.

    Der Codeansichts-Editor wird geöffnet und zeigt die Definition der Logik-App im JSON-Format an.The Code View editor opens and shows your logic app definition in JSON format.

  5. Um zur Designeransicht zurückzukehren, klicken Sie unten im Codeansichts-Editor auf Entwurf.To return to designer view, at the bottom of the Code View editor, choose Design.

ParameterParameters

Der Bereitstellungslebenszyklus umfasst in der Regel verschiedene Umgebungen zur Entwicklung, zum Testen, Staging und für die Produktion.The deployment lifecycle usually has different environments for development, test, staging, and production. 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.When you have values that you want to reuse throughout your logic app without hardcoding or that vary based on your deployment needs, you can create an Azure Resource Manager template for your workflow definition so that you can also automate logic app deployment.

Führen Sie diese allgemeinen Schritte aus, um stattdessen diese Werte zu parametrisieren bzw. Parameter für diese zu definieren und zu verwenden.Follow these general steps to parameterize, or define and use parameters for, those values instead. Anschließend können Sie die Werte in einer separaten Parameterdatei bereitstellen, die diese Werte an Ihre Vorlage übergibt.You can then provide the values in a separate parameter file that passes those values to your template. Auf diese Weise können Sie diese Werte einfacher ändern, ohne Ihre Logik-App aktualisieren und erneut bereitstellen zu müssen.That way, you can change those values more easily without having to update and redeploy your logic app. Ausführlichere Informationen finden Sie unter Overview: Automatisieren der Bereitstellung für Logik-Apps mit Azure Resource Manager-Vorlagen.For full details, see Overview: Automate deployment for logic apps with Azure Resource Manager templates.

  1. Definieren Sie in Ihrer Vorlage Vorlagenparameter und Workflowdefinitionsparameter, um die Werte zu akzeptieren, die zur Bereitstellung bzw. zur Laufzeit verwendet werden sollen.In your template, define template parameters and workflow definition parameters for accepting the values to use at deployment and runtime, respectively.

    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.Template parameters are defined in a parameters section that's outside your workflow definition, while workflow definition parameters are defined in a parameters section that's inside your workflow definition.

  2. Ersetzen Sie die hartcodierten Werte durch Ausdrücke, die auf diese Parameter verweisen.Replace the hardcoded values with expressions that reference these parameters. Vorlagenausdrücke verwenden Syntax, die von Workflowdefinitionsausdrücken abweicht.Template expressions use syntax that differs from workflow definition expressions.

    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.Avoid complicating your code by not using template expressions, which are evaluated at deployment, inside workflow definition expressions, which are evaluated at runtime. Verwenden Sie nur Vorlagenausdrücke außerhalb der Workflowdefinition.Use only template expressions outside your workflow definition. Verwenden Sie nur Workflowdefinitionsausdrücke in der Workflowdefinition.Use only workflow definition expressions inside your workflow definition.

    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.When you specify the values for your workflow definition parameters, you can reference template parameters by using the parameters section that's outside your workflow definition but still inside the resource definition for your logic app. Auf diese Weise können Sie Vorlagenparameterwerte an die Workflowdefinitionsparameter übergeben.That way, you can pass template parameter values into your workflow definition parameters.

  3. Speichern Sie die Werte für die Parameter in einer separaten Parameterdatei, und schließen Sie diese Datei in die Bereitstellung ein.Store the values for your parameters in a separate parameter file and include that file with your deployment.

Verarbeiten von Zeichenfolgen mit FunktionenProcess strings with functions

Logic Apps verfügt über verschiedene Funktionen zum Arbeiten mit Zeichenfolgen.Logic Apps has various functions for working with strings. Nehmen Sie z.B. an, dass Sie einen Firmennamen aus einem Auftrag einem anderen System übergeben möchten.For example, suppose you want to pass a company name from an order to another system. Allerdings sind Sie sich nicht über die ordnungsgemäße Behandlung für die Zeichencodierung sicher.However, you're not sure about proper handling for character encoding. 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.You could perform base64 encoding on this string, but to avoid escapes in the URL, you can replace several characters instead. Außerdem müssen Sie nur eine Teilzeichenfolge des Firmennamens verwenden, da die ersten fünf Zeichen nicht verwendet werden.Also, you only need a substring for the company name because the first five characters are not used.

{
  "$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:These steps describe how this example processes this string, working from the inside to the outside:

"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
  1. Rufen Sie die length() des Firmennamens ab, um die Gesamtzahl der Zeichen zu erhalten.Get the length() for the company name, so you get the total number of characters.

  2. Um eine kürzere Zeichenfolge zu erhalten, subtrahieren Sie 5.To get a shorter string, subtract 5.

  3. Nun erhalten Sie substring().Now get a substring(). Beginnen Sie bei Index 5, und fahren Sie mit dem Rest der Zeichenfolge fort.Start at index 5, and go to the remainder of the string.

  4. Wandeln Sie diese Teilzeichenfolge in eine base64()-Zeichenfolge um.Convert this substring to a base64() string.

  5. Ersetzen Sie mit replace() alle +-Zeichen durch --Zeichen.Now replace() all the + characters with - characters.

  6. Ersetzen Sie schließlich mit replace() alle /-Zeichen durch _-Zeichen.Finally, replace() all the / characters with _ characters.

Zuordnen von Listenelementen zu Eigenschaftswerten und Verwenden von Zuordnungen als ParameterMap list items to property values, then use maps as parameters

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.To get different results based a property's value, you can create a map that matches each property value to a result, then use that map as a parameter.

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.For example, this workflow defines some categories as parameters and a map that matches those categories with a specific URL. Der Workflow ruft zunächst eine Liste von Artikeln auf.First, the workflow gets a list of articles. Anschließend verwendet der Workflow die Zuordnung, um für jeden Artikel die URL zu finden, die mit der Kategorie übereinstimmt.Then, the workflow uses the map to find the URL matching the category for each article.

  • Mit der Funktion intersection() wird überprüft, ob die Kategorie einer bekannten definierten Kategorie entspricht.The intersection() function checks whether the category matches a known defined category.

  • Nach Eingang einer übereinstimmenden Kategorie ruft das Beispiel das Element mithilfe eckiger Klammern aus der Zuordnung ab: parameters[...]After getting a matching category, the example pulls the item from the map using square brackets: 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-FunktionenGet data with Date functions

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.To get data from a data source that doesn't natively support triggers, you can use Date functions for working with times and dates instead. Dieser Ausdruck ermittelt z.B., wie lange die Schritte dieses Workflows von innen nach außen dauern:For example, this expression finds how long this workflow's steps are taking, working from the inside to the outside:

"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
  1. Extrahieren Sie von der order-Aktion aus die startTime.From the order action, extract the startTime.

  2. Rufen Sie die aktuelle Uhrzeit mit utcNow() ab.Get the current time with utcNow().

  3. Subtrahieren Sie eine Sekunde:Subtract one second:

    addseconds(..., -1)

    Sie können auch andere Zeiteinheiten verwenden, z.B. minutes oder hours.You can use other units of time, like minutes or hours.

  4. Jetzt können Sie diese beiden Werte vergleichen.Now, you can compare these two values.

    Wenn der erste Wert kleiner als der zweite Wert ist, bedeutet dies, dass mehr als eine Sekunde verstrichen ist, seit der Auftrag erteilt wurde.If the first value is less than the second value, then more than one second has passed since the order was first placed.

Zum Formatieren von Datumsangaben können Sie Zeichenfolgenformatierer verwenden.To format dates, you can use string formatters. Zum Abrufen von RFC1123 verwenden Sie beispielsweise utcnow('r').For example, to get the RFC1123, use utcnow('r'). Erfahren Sie mehr über die Formatierung von Datumsangaben.Learn more about date formatting.

{
  "$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}&currentTime=@{utcNow('r')}"
          }
        }
      },
      "runAfter": {
        "order": [
          "Succeeded"
        ]
      }
    }
  },
  "outputs": {}
}

Nächste SchritteNext steps