Referenční příručka schématu pro jazyk definice pracovního postupu v Azure Logic Apps

Při vytváření aplikace logiky v Azure Logic Apps má aplikace logiky základní definici pracovního postupu, která popisuje skutečnou logiku spuštěnou v aplikaci logiky. Tato definice pracovního postupu používá JSON a řídí se strukturou, která je ověřena schématem jazyka definice pracovního postupu. Tento odkaz poskytuje přehled o této struktuře a o tom, jak schéma definuje atributy v definici pracovního postupu.

Struktura definice pracovního postupu

Definice pracovního postupu vždy obsahuje trigger pro vytvoření instance aplikace logiky a jednu nebo více akcí, které se spustí po aktivaci triggeru.

Tady je struktura vysoké úrovně pro definici pracovního postupu:

"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>" }
}
Atribut Požadováno Popis
definition Ano Počáteční prvek definice pracovního postupu
$schema Pouze při externím odkazování na definici pracovního postupu Umístění souboru schématu JSON, který popisuje verzi jazyka definice pracovního postupu, kterou najdete tady:

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json
actions No Definice jedné nebo více akcí, které se mají provést za běhu pracovního postupu. Další informace najdete v tématu Triggery a akce.



Maximální počet akcí: 250
contentVersion No Číslo verze pro definici pracovního postupu, které je ve výchozím nastavení 1.0.0.0. Pokud chcete pomoct identifikovat a potvrdit správnou definici při nasazování pracovního postupu, zadejte hodnotu, kterou chcete použít.
outputs No Definice pro výstupy, které se mají vrátit ze spuštění pracovního postupu. Další informace najdete v tématu Výstupy.



Maximální počet výstupů: 10
parameters No Definice jednoho nebo více parametrů, které předávají hodnoty, které se mají použít za běhu aplikace logiky. Další informace najdete v tématu Parametry.



Maximální počet parametrů: 50
staticResults No Definice jednoho nebo více statických výsledků vrácených akcemi jako napodobené výstupy, pokud jsou u těchto akcí povoleny statické výsledky. V každé definici runtimeConfiguration.staticResult.name akce odkazuje atribut na odpovídající definici uvnitř staticResults. Další informace najdete v tématu Statické výsledky.
triggers No Definice jedné nebo více aktivačních událostí, které vytvoří instanci pracovního postupu. Můžete definovat více než jeden trigger, ale pouze pomocí jazyka definice pracovního postupu, nikoli vizuálně prostřednictvím návrháře pracovního postupu. Další informace najdete v tématu Triggery a akce.



Maximální počet aktivačních událostí: 10

Triggery a akce

V definici pracovního postupu definují oddíly actions volání, triggers ke kterým dochází během provádění pracovního postupu. Syntaxi a další informace o těchto částech najdete v tématu Triggery a akce pracovního postupu.

Parametry

Životní cyklus nasazení má obvykle různá prostředí pro vývoj, testování, přípravu a produkci. Při nasazování aplikací logiky do různých prostředí budete pravděpodobně chtít používat různé hodnoty, jako jsou připojovací řetězec, na základě potřeb nasazení. Nebo můžete mít hodnoty, které chcete opakovaně používat v celé aplikaci logiky, aniž byste museli pevně zakódovat nebo se často mění. V části definice parameters pracovního postupu můžete definovat nebo upravit parametry pro hodnoty, které vaše aplikace logiky používá za běhu. Před odkazem na tyto parametry jinde v definici pracovního postupu je nutné tyto parametry nejprve definovat.

Tady je obecná struktura definice parametru:

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
Atribut Požaduje se Typ Popis
<název parametru> Ano String Název parametru, který chcete definovat
<parametr-type> Ano int, float, string, bool, array, object, securestring, secureobject



Poznámka: Pro všechna hesla, klíče a tajné kódy použijte tyto securestring typy nebo secureobject typy, protože GET operace tyto typy nevrací. Další informace o zabezpečeníparametrůch
Typ parametru
<default-parameter-value> Ano Stejné jako type Výchozí hodnota parametru, která se má použít, pokud není zadána žádná hodnota při vytvoření instance pracovního postupu. Atribut defaultValue je povinný, aby Návrhář aplikace logiky mohl správně zobrazit parametr, ale můžete zadat prázdnou hodnotu.
<array-with-permitted-parameter-values> No Pole Pole s hodnotami, které parametr může přijmout
<parameter-description> No Objekt JSON Všechny další podrobnosti o parametru, například popis parametru

Dále vytvořte šablonu Azure Resource Manageru pro definici pracovního postupu, definujte parametry šablony, které přijímají hodnoty, které chcete použít při nasazení, nahraďte pevně zakódované hodnoty odkazy na parametry šablony nebo definice pracovního postupu a uložte hodnoty, které se mají použít při nasazení, do samostatného souboru parametrů. Díky tomu můžete tyto hodnoty snadněji měnit prostřednictvím souboru parametrů, aniž byste museli aktualizovat a znovu nasadit aplikaci logiky. Pro informace, které jsou citlivé nebo musí být zabezpečené, jako jsou uživatelská jména, hesla a tajné kódy, můžete tyto hodnoty uložit ve službě Azure Key Vault a nechat soubor parametrů načíst tyto hodnoty z trezoru klíčů. Další informace a příklady definování parametrů na úrovni šablony a definice pracovního postupu najdete v tématu Přehled: Automatizace nasazení pro aplikace logiky pomocí šablon Azure Resource Manageru.

Statické výsledky

V atributu staticResults definujte napodobení outputs akce a status akci vrátí, když je zapnuté nastavení statického výsledku akce. V definici runtimeConfiguration.staticResult.name akce odkazuje atribut na název definice statického výsledku uvnitř staticResults. Zjistěte, jak můžete otestovat pracovní postupy aplikace logiky pomocí napodobených dat nastavením statických výsledků.

"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": { "<...>" }
}
Atribut Požaduje se Typ Popis
<static-result-definition-name> Ano String Název definice statického výsledku, na kterou může definice akce odkazovat prostřednictvím objektu runtimeConfiguration.staticResult . Další informace najdete v tématu Nastavení konfigurace modulu runtime.

Můžete použít libovolný jedinečný název. Ve výchozím nastavení se tento jedinečný název připojí číslem, které se podle potřeby zvýší.
<output-attributes-and-values-returned> Ano Je to různé. Požadavky na tyto atributy se liší v závislosti na různých podmínkách. Například pokud status je Succeededoutputs , atribut obsahuje atributy a hodnoty vrácené jako napodobení výstupy akce. Pokud je Failedoutputs , status atribut obsahuje errors atribut, což je pole s jedním nebo více objekty chybymessage, které obsahují informace o chybě.
<header-values> No Zadejte JSON Všechny hodnoty záhlaví vrácené akcí
<vrácený stavový kód> Ano String Stavový kód vrácený akcí
<stav akce> Ano String Stav akce, například Succeeded nebo Failed

Například v této definici akce HTTP odkazuje atribut uvnitř HTTP0 atributustaticResults, runtimeConfiguration.staticResult.name kde jsou definovány výstupy napodobení akce. Atribut runtimeConfiguration.staticResult.staticResultOptions určuje, že nastavení statického výsledku je Enabled v akci HTTP.

"actions": {
   "HTTP": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.microsoft.com"
      },
      "runAfter": {},
      "runtimeConfiguration": {
         "staticResult": {
            "name": "HTTP0",
            "staticResultOptions": "Enabled"
         }
      },
      "type": "Http"
   }
},

Akce HTTP vrátí výstupy v definici HTTP0 uvnitř staticResults. V tomto příkladu pro stavový kód je OKvýstup napodobení . Pro hodnoty záhlaví je "Content-Type": "application/JSON"výstup napodobení . Pro stav akce je Succeededvýstup napodobení .

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "HTTP0": {
         "outputs": {
            "headers": {
               "Content-Type": "application/JSON"
            },
            "statusCode": "OK"
         },
         "status": "Succeeded"
      }
   },
   "triggers": { "<...>" }
},

Výrazy

Ve formátu JSON můžete mít hodnoty literálů, které existují v době návrhu, například:

"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7

Můžete také mít hodnoty, které neexistují, dokud neběží. K vyjádření těchto hodnot můžete použít výrazy, které se vyhodnocují za běhu. Výraz je posloupnost, která může obsahovat jednu nebo více funkcí, operátorů, proměnných, explicitních hodnot nebo konstant. V definici pracovního postupu můžete výraz použít kdekoli v řetězcové hodnotě JSON tak, že výraz přidáte předponu znakem at-sign (@). Při vyhodnocování výrazu, který představuje hodnotu JSON, se tělo výrazu extrahuje odebráním znaku @ a vždy bude mít za následek jinou hodnotu JSON.

Například pro dříve definovanou customerName vlastnost můžete získat hodnotu vlastnosti pomocí funkce parameters() ve výrazu a přiřadit tuto hodnotu vlastnosti accountName :

"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"

Interpolace řetězců také umožňuje použít více výrazů uvnitř řetězců, které jsou zabaleny znakem @ a složenými závorkami ({}). Tady je syntaxe:

@{ "<expression1>", "<expression2>" }

Výsledkem je vždy řetězec, díky čemuž se tato funkce podobá concat() funkci, například:

"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"

Pokud máte literálový řetězec, který začíná znakem @, předpona znaku @ jiným znakem @ jako řídicí znak: @@

Tyto příklady ukazují, jak se výrazy vyhodnocují:

Hodnota JSON Výsledek
"Sophia Owen" Vrátí tyto znaky: Sophia Owen
"matice[1]" Vrátí tyto znaky: 'array[1]'
"@@" Vrátí tyto znaky jako řetězec s jedním znakem: @.
" @" Vrátí tyto znaky jako řetězec se dvěma znaky: @.

V těchto příkladech předpokládejme, že definujete "myBirthMonth" se rovná "Leden" a "myAge" se rovná číslu 42:

"myBirthMonth": "January",
"myAge": 42

Tyto příklady ukazují, jak se vyhodnocují následující výrazy:

Výraz JSON Výsledek
"@parameters('myBirthMonth')" Vrátit tento řetězec: "Leden"
"@{parameters('myBirthMonth')}" Vrátit tento řetězec: "Leden"
"@parameters('myAge')" Vrátí toto číslo: 42
"@{parameters('myAge')}" Vrátí toto číslo jako řetězec: "42".
"Můj věk je @{parameters('myAge')}" Vrátí tento řetězec: "Můj věk je 42"
"@concat('Můj věk je ', string('parameters('myAge'))) " Vrátí tento řetězec: "Můj věk je 42"
"Můj věk je @@{parameters('myAge')}" Vrátí tento řetězec, který obsahuje výraz: "Můj věk je @{parameters('myAge')}'

Když pracujete vizuálně v návrháři pracovního postupu, můžete pomocí editoru výrazů vytvořit výrazy, například:

Screenshot shows workflow designer and expression editor.

Po dokončení se výraz zobrazí pro odpovídající vlastnost v definici pracovního postupu, searchQuery například vlastnost zde:

"Search_tweets": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['twitter']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},

Výstupy

outputs V části definujte data, která váš pracovní postup může vrátit po dokončení spuštění. Pokud chcete například sledovat konkrétní stav nebo hodnotu z každého spuštění, určete, že výstup pracovního postupu vrátí tato data.

Poznámka:

Při odpovídání na příchozí požadavky z rozhraní REST API služby nepoužívejte outputs. Místo toho použijte Response typ akce. Další informace najdete v tématu Triggery a akce pracovního postupu.

Tady je obecná struktura pro definici výstupu:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
Atribut Požaduje se Typ Popis
<název klíče> Ano String Název klíče pro výstupní vrácenou hodnotu
<key-type> Ano int, float, string, securestring, bool, array, json – objekt Typ výstupní návratové hodnoty
<klíč-hodnota> Ano Stejné jako <typ klíče> Výstupní návratová hodnota

Pokud chcete získat výstup ze spuštění pracovního postupu, zkontrolujte historii spuštění aplikace logiky a podrobnosti na webu Azure Portal nebo použijte rozhraní REST API pracovního postupu. Výstup můžete předat také externím systémům, například Power BI, abyste mohli vytvářet řídicí panely.

Operátory

Ve výrazech a funkcích provádějí operátory určité úlohy, například odkazování na vlastnost nebo hodnotu v poli.

Operátor Task
' Chcete-li použít řetězcový literál jako vstup nebo ve výrazech a funkcích, zabalte řetězec pouze jednoduchými uvozovkami, '<myString>'například . Nepoužívejte dvojité uvozovky (""), které kolidují s formátováním JSON kolem celého výrazu. Například:

Ano: length('Hello')
Ne: length("Hello")

Když předáte pole nebo čísla, nemusíte zalamovat interpunkci. Například:

Ano: délka([1; 2; 3])
Ne: délka("[1; 2; 3]")
[] Pokud chcete odkazovat na hodnotu na konkrétní pozici (index) v poli nebo uvnitř objektu JSON, použijte hranaté závorky, například:

- Získání druhé položky v poli:

myArray[1]

– Přístup k vlastnostem uvnitř objektu JSON:

Příklad 1:
setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)

Příklad 2:
lastIndexOf(triggerBody()?['subject'],'some string')
. Chcete-li odkazovat na vlastnost v objektu, použijte tečkový operátor. Pokud chcete například získat name vlastnost objektu customer JSON:

"@parameters('customer').name"
? Pokud chcete odkazovat na vlastnosti null v objektu bez chyby za běhu, použijte operátor otazníku. Pokud například chcete zpracovat výstupy null z triggeru, můžete použít tento výraz:

@coalesce(trigger().outputs?.body?.<someProperty>, '<property-default-value>')

Funkce

Některé výrazy získají hodnoty z akcí modulu runtime, které ještě nemusí existovat při spuštění definice pracovního postupu. Pokud chcete odkazovat na tyto hodnoty ve výrazech nebo s těmito hodnotami pracovat, můžete použít funkce , které poskytuje jazyk definice pracovního postupu.

Další kroky