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í pracovního postupu aplikace logiky v Azure Logic Apps má pracovní postup základní definici JSON (JavaScript Object Notation), která popisuje skutečnou logiku, která spouští pracovní postup. Definice pracovního postupu se řídí strukturou, která je ověřena ve schématu 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, který vytvoří instanci pracovního postupu 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>" }
}
Attribute Required Description
definition Yes 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 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 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 akce atribut runtimeConfiguration.staticResult.name odkazuje na odpovídající definici uvnitř staticResults. Další informace najdete v tématu Statické výsledky.
triggers No 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.

Parameters

Ž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ém pracovním postupu, 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é pracovní postup 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>"
      }
   }
},
Attribute Required Typ Description
< název parametru> Yes String Název parametru, který chcete definovat
< parametr-type> Yes 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> Yes 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ář pracovního postupu mohl správně zobrazit parametr, ale můžete zadat prázdnou hodnotu.
< array-with-permitted-parameter-values> No Array 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. 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 načíst tyto hodnoty ze svého 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": { "<...>" }
}
Attribute Required Typ Description
< static-result-definition-name> Yes 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. Výchozí nastavení automaticky přiřadí jedinečnému názvu číslo, které se v případě potřeby zvýší.
< output-attributes-and-values-returned> Yes Varies 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> No JSON Všechny hodnoty záhlaví vrácené akcí
< vrácený stavový kód> Yes String Stavový kód vrácený akcí
< stav akce> Yes String 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": { "<...>" }
},

Expressions

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 vlastnostiaccountName:

"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 Result
"Sophia Owen" Vrátí tyto znaky: Sophia Owen
"array[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 Result
"@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')}"
  }
},

Outputs

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.

Note

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>"
  }
}
Attribute Required Typ Description
< název klíče> Yes String Název klíče pro výstupní vrácenou hodnotu
< key-type> Yes int, float, string, securestring, bool, array, json – objekt Typ výstupní návratové hodnoty
< klíč-hodnota> Yes 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.

Operators

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

Operator 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, například '<myString>'. Nepoužívejte dvojité uvozovky (""), které jsou v konfliktu 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 používat závorky nebo jiné interpunkční znaky. 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 vlastnost objektu bez rizika chyby za běhu nebo pracovního postupu, který selhává, použijte operátor otazníku (?), označovaný také jako operátor null ignore, před vlastností. Tento operátor umožňuje bezpečný přístup k vlastnosti nebo prvku pole, pokud nadřazený objekt nebo odkazovaná vlastnost může obsahovat null nebo chybí.

- Pokud nadřazený objekt, který se zobrazí před ? operátorem nebo null chybí odkazovaná vlastnost, vrátí nullcelý výraz místo pracovního postupu selhání.

– Pokud objekt nebo vlastnost existuje, vrátí výraz hodnotu vlastnosti.

Předpokládejme například, že máte následující výraz:

triggerBody()?['ContentData']

- Pokud triggerBody() vrátí objekt z ContentData vlastnosti, získáte hodnotu objektu.

– Pokud triggerBody() je null nebo chybí ContentData vlastnost, vrátí null funkce místo selhání s chybou "Nelze zpracovat výrazy jazyka šablony".

Operátor ? také umožňuje bezpečně zřetězovat vlastnosti přístupu a je užitečný v následujících scénářích:

– Umožňuje spravovat výrazy, které pracují s volitelnými poli JSON.
– Zpracování výstupů konektoru, které mohou vynechat určité vlastnosti.
- Vyhněte se brittle výrazy v podmíněné logice.

Pokud například chcete zřetězit přístup k vlastnostem a zpracovat výstupy null z triggeru, můžete použít následující výraz:

coalesce(trigger().outputs?.body?['<property-name>'], '<property-default-value>')

Functions

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.