Sdílet prostřednictvím


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>" }
}
Vlastnost 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 Ne 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 Ne Čí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 Ne Definice výstupů, které se mají vrátit z běhu pracovního postupu. Další informace najdete v tématu Výstupy.



Maximální počet výstupů: 10
parameters Ne 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 Ne 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 akce atribut runtimeConfiguration.staticResult.name odkazuje na odpovídající definici uvnitř staticResults. Další informace najdete v tématu Statické výsledky.
triggers Ne Definice jednoho nebo více triggerů, které spustí váš pracovní postup. 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

Spouštěče a akce

V definici pracovního postupu určují části triggers a actions volání, 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é vaší Logic App, aniž byste je museli pevně zakódovat nebo které 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žadováno Typ Popis
< název parametru> Ano Řetězec Název parametru, který chcete definovat
< parametr-typ> 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ů naleznete v části Doporučení zabezpečení pro akční a vstupní parametry.
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.
< pole-s-povolenými-hodnotami-parametrů> Ne Pole Pole s hodnotami, které parametr může přijmout
< parameter-description> Ne 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žadováno Typ Popis
< static-result-definition-name> Ano řetězec 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. Výchozí nastavení automaticky přiřadí jedinečnému názvu číslo, které se v případě potřeby zvýší.
< výstupní-atributy-a-hodnoty-vrácené> Ano Je to různé. Požadavky na tyto atributy se liší v závislosti na různých podmínkách. Například, když je statusSucceeded, atribut outputs obsahuje atributy a hodnoty vrácené jako simulované výstupy akcí. Pokud je statusFailed, atribut outputs zahrnuje atribut errors, což je pole s jedním nebo více objekty chyb message, které obsahují informace o chybě.
< header-values> Ne JSON Všechny hodnoty záhlaví vrácené akcí
< vrácený stavový kód> Ano řetězec Stavový kód vrácený akcí
< stav akce> Ano řetězec Stav akce, například Succeeded nebo Failed

Například v této definici akce HTTP atribut runtimeConfiguration.staticResult.name odkazuje na HTTP0 uvnitř staticResults, kde jsou definovány výstupy napodobení pro akci. 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 OK napodobený výstup. Pro hodnoty záhlaví je výstup napodobeniny "Content-Type": "application/JSON". Pro stav akce je napodobený výstup Succeeded.

"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 doslovné hodnoty, 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í až do doby běhu. 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 @, použijte další znak @ před ním jako únikový 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')" Vrať 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:

Snímek obrazovky znázorňující návrháře pracovního postupu a editor výrazů

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')['x']['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žadováno Typ Popis
< název klíče> Ano String Název klíče pro výstupní vrácenou hodnotu
< typ klíče> 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 Úloha
' Chcete-li použít řetězcový literál jako vstup nebo ve výrazech a funkcích, zabalte řetězec pouze jednoduchými uvozovkami, například '<myString>'. Nepoužívejte dvojité uvozovky (""), které kolidují s formátováním JSON kolem celého výrazu. Příklad:

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

Když předáte pole nebo čísla, nemusíte používat závorky nebo jiné interpunkční znaky. Pří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"
? Chcete-li odkazovat na vlastnosti null v objektu bez chyby modulu runtime, použijte operátor null-ignore (?). Pokud například chcete zpracovat výstupy null z triggeru, můžete použít následující 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