Popis pracovního postupu Azure Logic Apps pomocí jazyka definice pracovního postupu

Dokončeno

Pomocí dokumentu JSON definujete strukturu a pracovní postup pracovního postupu aplikace logiky Azure. Tento dokument obsahuje popis JSON prvků, které tvoří pracovní postup aplikace logiky a schéma jazyka definice pracovního postupu. Nejjednodušší způsob, jak schéma vysvětlit, je prozkoumat existující pracovní postup vytvořený pomocí návrháře pracovního postupu na webu Azure Portal a pak zobrazit popis JSON aplikace logiky.

V ukázkovém scénáři chcete svým konzultantům poskytnout běžné pracovní postupy, které se můžou přizpůsobit konkrétním potřebám univerzit, se kterými pracují. Chcete přizpůsobení a nasazení každého pracovního postupu co nejvíce zjednodušit, a proto se rozhodnete zaměřit se na kód v pracovním postupu, konkrétně na soubor JSON definice pracovního postupu.

Návrhář pracovních postupů

Návrhář pracovního postupu umožňuje vytvořit a ladit pracovní postup pro pracovní postup aplikace logiky graficky. Návrhář také umožňuje vývojářům podívat se pod pokličku pracovního postupu, aby viděli, jak je implementovaný. Následující obrázek ukazuje příklad jednoduchého pracovního postupu, který se aktivuje odesláním požadavku HTTP GET na zadanou adresu URL. Výsledek se vrátí v odpovědi HTTP. V tomto příkladu pracovní postup odesílá zpět jednoduchou zprávu Hello Logic Apps Template! .

Diagram znázorňující přehled návrháře pracovního postupu

Teď se podíváme na jazyk definice pracovního postupu, který používá šablona JSON.

Zobrazení kódu

V okně Zobrazení kódu se zobrazí dokument JSON popisující pracovní postup. V ukázkové aplikaci vypadá JSON takto:

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Response": {
                "inputs": {
                    "body": "Hello Azure Logic Apps Template!",
                    "statusCode": 200
                },
                "kind": "Http",
                "runAfter": {},
                "type": "Response"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "manual": {
                "inputs": {
                    "method": "GET",
                    "schema": {}
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    }
}

Všimněte si oddílů v definition oboru, které se týkají akcí a triggerů zobrazených v návrháři. Kód JSON v tomto dokumentu můžete upravit tak, aby odrážel všechny změny požadované ve funkcích pracovního postupu aplikace logiky. Můžete také přidat další akce a určit, jak se logika v pracovním postupu spouští z jedné akce na další.

Oddíl triggerů

Část triggers obsahuje popis typu triggeru a způsob jeho vyvolání. Trigger v tomto příkladu je jednoduchý trigger HTTP, který se spouští jako odpověď na požadavek HTTP GET.

"triggers": {
    "manual": {
        "inputs": {
            "method": "GET",
            "schema": {}
        },
        "kind": "Http",
        "type": "Request"
    }
}

Trigger musí obsahovat následující prvky:

  • Jedinečný název v pracovním postupu. V předchozím příkladu je manualvýchozí název triggeru , ale výchozí název můžete nahradit smysluplnějším identifikátorem.

  • Typ triggeru. Typ určuje událost, která způsobí spuštění triggeru. Request Trigger se spustí v reakci na požadavek HTTP. Mezi další typy triggerů, které jsou k dispozici, patří:

    • Recurrence pro vytvoření triggeru, který se spouští podle plánu opakování.

    • HttpWebhook pro naslouchání událostem v koncovém bodu.

    • ApiConnection pro reakci na události aktivované jinými službami Azure, jako je například zpráva přicházející do fronty zpráv, e-mailová zpráva atd. Typ triggeru ApiConnection se zobecní a zadáte další podrobnosti o typu služby a všechny požadované informace o připojení.

  • Oddíl inputs . Tato část určuje data, která definují chování triggeru. U triggeru požadavku označuje typ požadavku HTTP, method který způsobí spuštění triggeru. ApiConnection Část obsahuje informace o tom, inputs jak se připojit k prostředku, který událost aktivuje (například fronta zpráv připojovací řetězec). Pokud je Request aktivační událost aktivační událostí, část definice vstupu schema určuje schéma, které by datová část textu požadavku měla odpovídat. Požadavky HTTP GET nemají text požadavku, takže schema je prázdný v předchozím příkladu.

Následující příklad ukazuje definici jiného Request triggeru, který spouští pracovní postup a přijímá požadavky HTTP POST. Požadavek POST obvykle poskytuje text požadavku obsahující data, která se mají publikovat. Text požadavku v tomto příkladu obsahuje jméno zákazníka a adresu, kterou tvoří ulice a město.

"mypostrequest": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      "method": "POST",
      "schema": {
         "type": "object",
         "properties": {
            "customerName": {
               "type": "String"
            },
            "customerAddress": { 
               "type": "Object",
               "properties": {
                  "streetAddress": {
                     "type": "string"
                  },
                  "city": {
                     "type": "string"
                  }
               }
            }
         }
      }
   }
}

Trigger může určovat také podmínky. Daný trigger se aktivuje jenom při splnění těchto podmínek. Podmínky můžete definovat v nepovinném oddílu podmínek. Například můžete chtít spustit mypostrequest trigger (zobrazený v předchozím příkladu), pouze pokud text požadavku určuje město New York:

"mypostrequest": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      ...
   }
   "conditions": [
      {
        "expression": "@equals(triggerOutputs()['body']['customerAddress']['city'], 'New York')"
      }
   ]
}

Oddíl akcí

Oddíl aplikace actions logiky definuje logiku a strukturu pracovního postupu. Oddíl obsahuje řadu akcí. Akce je základní stavební blok pro vytváření pracovních postupů. Akce provádějí vstupy a vytvářejí výstupy, které se předávají další akci v pracovním postupu. Následující tabulka uvádí různé dostupné typy akcí:

Akce Popis
ApiConnection Odešle požadavek HTTP konkrétní službě. Tento typ akce umožňuje integrovat pracovní postup aplikace logiky s funkcemi Azure, jako jsou Azure Service Bus, Azure Event Grid a další. Tato akce vyžaduje vstupy, které zahrnují připojovací řetězec pro přístup ke službě a případné další informace a parametry vyžadované k vyvolání služby.
Compose Zkombinuje více vstupů a výrazů do jediného výstupu.
Function Umožňuje volání funkce Azure.
HTTP Odešle požadavek HTTP do koncového bodu HTTP místo služby Azure.
Join Vezme pole datových položek jako vstup a vygeneruje řetězec obsahující tyto položky oddělené zadaným oddělovačem.
Parse Parsuje dokument JSON do sady tokenů pomocí zadaného schématu.
Query Filtruje položky ve vstupním poli pomocí zadané podmínky.
Response Vytvoří odpověď na požadavek HTTP.
Table Vygeneruje z pole objektů JSON tabulku HTML.
Terminate Okamžitě zruší pracovní postup.
Wait Pozastaví pracovní postup pro zadaný interval nebo dokud nedojde k vypršení časového limitu.
Workflow Spustí jiný pracovní postup aplikace logiky.
Condition Sada typů akcí (Foreach, If, Switcha Until) umožňující implementovat programový tok řízení v pracovním postupu. Můžete iterovat pomocí položek v kolekci, rozhodovat se na základě hodnot vstupních parametrů a provádět smyčku tak dlouho, dokud se nesplní nějaká podmínka.
InitializeVariable,
IncrementVariable,
DecrementVariable,
a SetVariable
Definuje, inicializuje, přiřazuje a upravuje proměnné, které lze předávat mezi položkami akcí v pracovním postupu.

Podobně jako trigger musí mít i každá akce v pracovním postupu jedinečný název. V následujícím příkladu je Responsevýchozí název akce , ale můžete použít platný a smysluplnější identifikátor. Akce musí mít inputs oddíl, který určuje data, na kterých akce funguje. V akci Odpověď můžete zadat data výrazu, který se má vrátit ve zprávě odpovědi, spolu se stavovým kódem HTTP.

V naší základní definici pracovního postupu akce vygeneruje odpověď HTTP, kde text je krátká zpráva.

"actions": {
    "Response": {
        "inputs": {
            "body": "Hello Azure Logic Apps Template!",
            "statusCode": 200
        },
        "kind": "Http",
        "runAfter": {},
        "type": "Response"
    }
}

Část runAfter označuje, kde se akce spouští v pořadí pracovního postupu. V předchozím příkladu je jenom jedna akce, která se tedy spustí vždy při aktivaci triggeru. Pokud měl pracovní postup více akcí, můžete zadat název akce a stav této akce v této části. Akce se spustí, pokud runAfter se akce dokončí se zadaným stavem. Následující kód znázorňuje příklad. Akce mySecondAction se spustí po myFirstAction, ale pouze v případě, že myFirstAction skončí se stavem Succeeded:

"actions": {
    "mySecondAction": {
        "inputs": {
            ...
        },
        "runAfter": {
            "myFirstAction": [
                "Succeeded"
            ]
        },
        "type": ...
    },
    "myFirstAction": {
        "inputs": {
            ...
        },
        "runAfter": {},
        "type": ...
    }
}

Oddíl výstupů

Pomocí oddílu outputs definujte data, která pracovní postup může vrátit po dokončení spuštění. Můžete sledovat určitý stav nebo data pro každé spuštění pracovního postupu. Výstup z každého spuštění pracovního postupu můžete prozkoumat pomocí historie spuštění Azure Logic Apps, která je k dispozici na webu Azure Portal nebo v rozhraní REST API pracovního postupu.

Formát oddílu outputs vypadá takto:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}

Výrazy pracovního postupu

Místo libovolné pevné hodnoty, proměnné nebo konstanty můžete použít výraz pracovního postupu. Výraz můžete také umístit kdekoli v řetězcové hodnotě JSON tak, že předponu výrazu předponou znaku at (@). Můžete například k načtení hodnoty pojmenovaného parametru ve výrazu použít funkci @parameters (parametry jsou popsané v další části).

"customerFullName": "Bill Frost",
"accountName": "@parameters('customerName')"

Azure Logic Apps poskytuje integrované funkce, které můžete použít k vytváření složitých výrazů:

  • Řetězcové funkce: Pro zřetězení nebo rozdělení řetězců, převod znaků mezi velkými a dolními písmeny a hledání podřetězců.
  • Funkce kolekce: Pro detekci, zda kolekce obsahuje položky, které odpovídají určitému vzoru, načítání položek z kolekce a kombinování kolekcí.
  • Logické porovnávací funkce: Pro zjištění, zda jsou operandy stejné, odlišné, číselně větší nebo numericky menší než navzájem.
  • Převodní funkce: Změna typu nebo formátu dat
  • Matematické funkce: například add, sub, diva mul, plus několik dalších.
  • Funkce data a času: Pro parsování a zpracování dat a časů.
  • Funkce pracovního postupu: Pro načtení informací o datech předaných akci pracovního postupu. parameter Například funkce (dříve zobrazená) načte hodnotu pojmenovaného parametru a body funkce (zobrazená dříve) vrátí data vygenerovaná akcí.
  • Funkce pro manipulaci s JSON a XML: Pro analýzu a zpracování dokumentů JSON a XML.

Proměnné můžete definovat v inputs části InitializeVariable akce a tyto proměnné můžete manipulovat pomocí výrazů. Načtěte hodnotu proměnné pomocí variables funkce. Následující příklad používá InitializeVariable akci k vytvoření celočíselné proměnné s názvem myIntegerVariable a inicializace do 99. Tento příklad také ukazuje Condition akci s typem If . Podmínka používá výraz k otestování myIntegerVariable hodnoty proměnné a pokud odpovídá hodnotě 100, podmínka použije akci HTTP k provedení požadavku GET.

"actions": {
    "Condition": {
        "actions": {
            "HTTP": {
                "inputs": {
                    "method": "GET",
                    "uri": "http://dummyurl.com"
                },
                "runAfter": {},
                "type": "Http"
            }
        },
        "expression": {
            "equals": [
                "@variables('myIntegerVariable')",
                100
            ]
        }        ,
        "runAfter": {
            "Initialize": [
                "Succeeded"
            ]
        },
        "type": "If"
    },
    "Initialize": {
        "inputs": {
            "variables": [
                {
                    "name": "myIntegerVariable",
                    "type": "Integer",
                    "value": 99
                }
            ]
        },
        "runAfter": {},
        "type": "InitializeVariable"
    }
}

Část Parametry

Tato parameters část umožňuje parametrizovat pracovní postup. Hodnoty pro každý z těchto parametrů můžete určovat za běhu. Na parametry můžete odkazovat kdekoli v pracovním postupu, kde můžete použít konstantu nebo výraz.

Můžete přidat definici parametrů s výchozí hodnotou. Výchozí hodnota se použije, pokud nezadáte hodnotu parametru za běhu. Následující příklad ukazuje, jak definovat parametr s názvem cityParam. Parametr se použije uvnitř podmínky akce mypostrequest . Tato akce se provede jenom v případě, že dokument požadavku obsahuje město odpovídající hodnotě tohoto parametru. Výchozí hodnota parametru je New York:


    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            ...
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {
            "cityParam": {
                "defaultValue": "New York",
                "type": "String"
            }
        },
        "triggers": {
            "mypostrequest": {
                "conditions": [
                    {
                        "expression": "@equals(triggerOutputs()['body']['customerAddress']['city'], parameters('cityParam'))"
                    }
                ],
                "inputs": {
                    ...
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    }
}

Kontrola znalostí

1.

Chcete, aby pracovní postup Azure Logic Apps běžel každé tři minuty. Ve kterém z následujících oddílů definice pracovního postupu byste definovali toto opakující se chování?

2.

Ve kterém oddílu definice pracovního postupu můžete odeslat odpověď na požadavek HTTP, která vrátí text zprávy, kód stavu a hlavičky zprávy?

3.

Do kterého oddílu definice pracovního postupu zadáte hodnotu, která se má vrátit po dokončení pracovního postupu?