Vytváření, úpravy nebo rozšiřování souborů JSON pro definice pracovních postupů aplikací logiky v Azure Logic Apps

Platí pro: Azure Logic Apps (Consumption)

Když vytváříte řešení podnikové integrace s automatizovanými pracovními postupy v Azure Logic Apps, základní definice pracovních postupů používají jednoduchý a deklarativní javascriptový zápis JSON (Object Notation) spolu se schématem WDL (Workflow Definition Language) pro jejich popis a ověření. Díky těmto formátům jsou definice pracovních postupů čitelnější a srozumitelnější, aniž byste museli znát mnoho informací o kódu. Pokud chcete automatizovat vytváření a nasazování prostředků aplikace logiky, můžete definice pracovních postupů zahrnout jako prostředky Azure v šablonách Azure Resource Manager. K vytváření, správě a nasazování aplikací logiky pak můžete použít Azure PowerShell, Azure CLI nebo rozhraní REST API služby Azure Logic Apps.

Pokud chcete pracovat s definicemi pracovních postupů ve formátu JSON, otevřete editor zobrazení kódu při práci v Azure Portal nebo v sadě Visual Studio nebo zkopírujte definici do libovolného požadovaného editoru. Pokud s Azure Logic Apps začínáte, přečtěte si téma Vytvoření příkladu pracovního postupu aplikace logiky Consumption.

Poznámka

Některé funkce Azure Logic Apps, jako je definování parametrů a více triggerů v definicích pracovního postupu, jsou dostupné jenom ve formátu JSON, nikoli v návrháři pracovního postupu. Pro tyto úlohy tedy musíte pracovat v zobrazení kódu nebo v jiném editoru.

Upravit JSON – Azure Portal

  1. Přihlaste se k webu Azure Portal.

  2. V nabídce vlevo zvolte Všechny služby. Ve vyhledávacím poli najděte "logic apps" a pak ve výsledcích vyberte aplikaci logiky.

  3. V nabídce aplikace logiky v části Vývojové nástroje vyberte Zobrazení kódu aplikace logiky.

    Otevře se editor zobrazení kódu a zobrazí definici pracovního postupu ve formátu JSON.

Úprava FORMÁTU JSON – Visual Studio

Než budete moct pracovat na definici pracovního postupu v sadě Visual Studio, ujistěte se, že jste nainstalovali požadované nástroje. Pokud chcete vytvořit aplikaci logiky pomocí sady Visual Studio, projděte si rychlý start: Automatizace úloh a procesů pomocí Azure Logic Apps – Visual Studio.

V sadě Visual Studio můžete otevírat aplikace logiky, které byly vytvořeny a nasazeny buď přímo z Azure Portal, nebo jako projekty Azure Resource Manager ze sady Visual Studio.

  1. Otevřete řešení sady Visual Studio nebo projekt Skupiny prostředků Azure , který obsahuje vaši aplikaci logiky.

  2. Vyhledejte a otevřete definici pracovního postupu, která se ve výchozím nastavení zobrazuje v šabloně Resource Manager s názvem LogicApp.json. Tuto šablonu můžete použít a přizpůsobit pro nasazení do různých prostředí.

  3. Otevřete místní nabídku pro definici a šablonu pracovního postupu. Vyberte Otevřít pomocí Návrháře aplikace logiky.

    Otevření aplikace logiky v řešení sady Visual Studio

    Tip

    Pokud tento příkaz v sadě Visual Studio 2019 nemáte, zkontrolujte, jestli máte nejnovější aktualizace pro Visual Studio.

  4. V dolní části návrháře pracovního postupu zvolte Zobrazení kódu.

    Otevře se editor zobrazení kódu a zobrazí definici pracovního postupu ve formátu JSON.

  5. Pokud se chcete vrátit do zobrazení návrháře, v dolní části editoru zobrazení kódu zvolte Návrh.

Parametry

Životní cyklus nasazení má obvykle různá prostředí pro vývoj, testování, přípravu a produkci. Pokud máte hodnoty, které chcete opakovaně používat v celé aplikaci logiky bez pevného kódování, nebo které se liší v závislosti na vašich potřebách nasazení, můžete vytvořit šablonu Azure Resource Manager pro definici pracovního postupu, abyste mohli také automatizovat nasazení aplikace logiky.

Pomocí těchto obecných kroků místo toho tyto hodnoty parametrizujete nebo definujte a používejte pro tyto hodnoty. Hodnoty pak můžete zadat v samostatném souboru parametrů, který tyto hodnoty předá do šablony. Díky tomu můžete tyto hodnoty snadněji změnit, aniž byste museli aktualizovat a znovu nasadit aplikaci logiky. Úplné podrobnosti najdete v tématu Přehled: Automatizace nasazení aplikací logiky pomocí šablon Azure Resource Manager.

  1. V šabloně definujte parametry šablony a parametry definice pracovního postupu pro příjem hodnot, které se mají použít při nasazení a za běhu.

    Parametry šablony jsou definovány v oddílu parametrů, který je mimo definici pracovního postupu, zatímco parametry definice pracovního postupu jsou definovány v oddílu parametrů, který je uvnitř definice pracovního postupu.

  2. Pevně zakódované hodnoty nahraďte výrazy, které na tyto parametry odkazují. Výrazy šablony používají syntaxi, která se liší od výrazů definice pracovního postupu.

    Vyhněte se komplikaci kódu tím, že nepoužíváte výrazy šablony, které se vyhodnocují při nasazení, uvnitř výrazů definice pracovního postupu, které se vyhodnocují za běhu. Používejte pouze výrazy šablony mimo definici pracovního postupu. V definici pracovního postupu používejte pouze výrazy definice pracovního postupu.

    Když zadáte hodnoty parametrů definice pracovního postupu, můžete odkazovat na parametry šablony pomocí oddílu parametrů, který je mimo definici pracovního postupu, ale stále uvnitř definice prostředku pro vaši aplikaci logiky. Tímto způsobem můžete předat hodnoty parametrů šablony do parametrů definice pracovního postupu.

  3. Uložte hodnoty parametrů do samostatného souboru parametrů a zahrňte tento soubor do nasazení.

Zpracování řetězců s funkcemi

Azure Logic Apps nabízí různé funkce pro práci s řetězci. Předpokládejme například, že chcete předat název společnosti z objednávky do jiného systému. Nejste si ale jistí, jak správně zacházet s kódováním znaků. Pro tento řetězec můžete provést kódování base64, ale abyste se vyhnuli řídicím znakům v adrese URL, můžete místo toho nahradit několik znaků. Navíc potřebujete jenom podřetěžce pro název společnosti, protože prvních pět znaků se nepoužívá.

{
  "$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": {}
}

Tyto kroky popisují, jak tento příklad zpracovává tento řetězec, který funguje zevnitř ven:

"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
  1. Získejte název length() společnosti, abyste získali celkový počet znaků.

  2. Pokud chcete získat kratší řetězec, odčítáte 5.

  3. Teď získejte substring(). Začněte indexem 5a přejděte na zbytek řetězce.

  4. Převeďte tento podřetězc na base64() řetězec.

  5. Teď replace() všechny znaky se +- znaky.

  6. Nakonec všechny replace() znaky se /_ znaky.

Mapovat položky seznamu na hodnoty vlastností a pak používat mapy jako parametry

Pokud chcete získat různé výsledky založené na hodnotě vlastnosti, můžete vytvořit mapu, která porovná každou hodnotu vlastnosti s výsledkem, a pak toto mapování použít jako parametr.

Tento pracovní postup například definuje některé kategorie jako parametry a mapu, která odpovídá těmto kategoriím s konkrétní adresou URL. Nejprve pracovní postup získá seznam článků. Pracovní postup pak pomocí mapy najde adresu URL odpovídající kategorii pro každý článek.

  • Funkce intersection() zkontroluje, jestli kategorie odpovídá známé definované kategorii.

  • Po získání odpovídající kategorie tento příklad vytáhne položku z mapy pomocí hranatých závorek: 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"
        ]
      }
    }
  }
}

Získání dat pomocí funkcí Date

Pokud chcete získat data ze zdroje dat, který nativně nepodporuje triggery, můžete místo toho použít funkce Date pro práci s časy a daty. Tento výraz například zjistí, jak dlouho trvají kroky tohoto pracovního postupu, které pracují zevnitř a ven:

"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
  1. order Z akce extrahujte startTime.

  2. Získejte aktuální čas pomocí utcNow().

  3. Odečtěte jednu sekundu:

    addseconds(..., -1)

    Můžete použít jiné časové jednotky, například minutes nebo hours.

  4. Teď můžete tyto dvě hodnoty porovnat.

    Pokud je první hodnota menší než druhá hodnota, pak od prvního zadání objednávky uplynula více než jedna sekunda.

K formátování kalendářních dat můžete použít formátovací moduly řetězců. Pokud například chcete získat RFC1123, použijte utcnow('r'). Přečtěte si další informace o formátování data.

{
  "$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": {}
}

Další kroky