Sdílet prostřednictvím


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)

Při vytváření podnikových řešení integrace s automatizovanými pracovními postupy v Azure Logic Apps používají základní definice pracovních postupů jednoduchý a deklarativní zápis objektů JavaScriptu (JSON) spolu se schématem WDL (Workflow Definition Language) pro jejich popis a ověření. Tyto formáty usnadňují čtení a pochopení definic pracovních postupů bez znalosti kódu. Pokud chcete automatizovat vytváření a nasazování prostředků aplikace logiky, můžete do šablon Azure Resource Manageru zahrnout definice pracovních postupů jako prostředkyAzure. 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 na webu 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í ukázkového pracovního postupu aplikace logiky Consumption.

Poznámka:

Některé funkce Azure Logic Apps, například 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. Proto pro tyto úlohy musíte pracovat v zobrazení kódu nebo jiném editoru.

Upravit JSON – Azure Portal

  1. Přihlaste se k portálu Azure.

  2. V nabídce vlevo zvolte Všechny služby. Ve vyhledávacím poli vyhledejte "aplikace logiky" a pak ve výsledcích vyberte svou 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.

Upravit JSON – Visual Studio

Než budete moct pracovat s definicí 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 vytvořené a nasazené přímo z webu Azure Portal nebo jako projekty Azure Resource Manageru 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í zobrazí v šabloně Resource Manageru 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, zvolte v dolní části editoru zobrazení kódu 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, aniž byste museli pevně zakódovat nebo se liší podle potřeb nasazení, můžete pro definici pracovního postupu vytvořit šablonu Azure Resource Manageru, abyste mohli také automatizovat nasazení aplikace logiky.

Tyto obecné kroky použijte k parametrizaci nebo definování a použití parametrů pro tyto hodnoty. Hodnoty pak můžete zadat v samostatném souboru parametrů, který tyto hodnoty předá šabloně. Díky tomu můžete tyto hodnoty snadněji změnit, aniž byste museli aplikaci logiky aktualizovat a znovu nasadit. Úplné podrobnosti najdete v tématu Přehled: Automatizace nasazení pro aplikace logiky pomocí šablon Azure Resource Manageru.

  1. V šabloně definujte parametry šablony a parametry definice pracovního postupu pro přijetí 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. Nahraďte pevně zakódované hodnoty výrazy, které odkazují na tyto parametry. 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ů definic pracovních postupů, které se vyhodnocují za běhu. Používejte pouze výrazy šablon 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 tento soubor zahrňte do nasazení.

Zpracování řetězců pomocí funkcí

Azure Logic Apps má 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ě zpracovávat kódování znaků. U tohoto řetězce 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ů. Také potřebujete podřetědět 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": {}
}

Tento postup popisuje, jak tento příklad zpracovává tento řetězec, a to z vnitřní strany na vnější:

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

  2. Chcete-li získat kratší řetězec, odečtěte 5.

  3. Teď získáte substring(). Začněte indexem 5a přejděte do zbytku řetězce.

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

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

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

Mapování položek seznamu na hodnoty vlastností a následné použití map jako parametrů

Pokud chcete získat různé výsledky založené na hodnotě vlastnosti, můžete vytvořit mapu, která odpovídá každé hodnotě vlastnosti výsledku, a pak tuto mapu 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 vyhledá 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 načítá příklad 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 kalendářními daty. Tento výraz například zjistí, jak dlouho se kroky tohoto pracovního postupu provádějí, a to od vnitřních po vnější:

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

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

  3. Odečíst jednu sekundu:

    addseconds(..., -1)

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

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

    Pokud je první hodnota menší než druhá hodnota, uplynulo od prvního umístění objednávky více než jedna sekunda.

K formátování kalendářních dat můžete použít formátovací moduly řetězců. Pokud chcete například 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