Spouštění fragmentů kódu v pracovních postupech pomocí operací vložený kód v Azure Logic Apps

Platí pro: Azure Logic Apps (Consumption + Standard)

Pokud chcete vytvořit a spustit fragment kódu v pracovním postupu aplikace logiky bez velkého nastavování, můžete použít integrovaný konektor pro vložený kód . Tento konektor má akci, která vrací výsledek z fragmentu kódu, abyste mohli tento výstup použít v následných akcích pracovního postupu.

V současné době má konektor jenom jednu akci, která nejlépe funguje pro fragment kódu s následujícími atributy, ale ve vývoji jsou další akce. Integrovaný konektor pro vložený kód má také různá omezení v závislosti na tom, jestli je pracovní postup aplikace logiky Consumption nebo Standard.

Akce Jazyk Jazyková verze Doba trvání spuštění Velikost dat Další poznámky
Spuštění kódu JavaScriptu JavaScript Standardní:
Node.js 16.x.x

Spotřeba:
Node.js 8.11.1

Další informace najdete v tématu Standardní předdefinované objekty.
Dokončí se za 5 sekund nebo méně. Zpracovává data až 50 MB. – Nevyžaduje práci s akcemi Variables, které akce nepodporuje.

– Nepodporuje require() funkci pro spuštění JavaScriptu.

Pokud chcete spustit kód, který těmto atributům nevyhovuje, můžete místo toho vytvořit a volat funkci prostřednictvím Azure Functions.

Tento článek ukazuje, jak akce funguje v ukázkovém pracovním postupu, který začíná triggerem Office 365 Outlooku. Pracovní postup se spustí, když do přidruženého e-mailového účtu Outlooku přijde nový e-mail. Ukázkový fragment kódu extrahuje všechny e-mailové adresy, které existují v textu e-mailu, a vrátí tyto adresy jako výstup, který můžete použít v následné akci.

Následující diagram znázorňuje zvýraznění z ukázkového pracovního postupu:

Požadavky

Přidání akce Spustit kód JavaScriptu

  1. V Azure Portal otevřete pracovní postup aplikace logiky Consumption v návrháři.

  2. V návrháři pomocí těchto obecných kroků přidejte do pracovního postupu akci Vložený kód s názvem Execute JavaScript Code (Spustit kód JavaScriptu).

    Tento příklad přidá akci pod trigger Office 365 Outlooku. Ve výchozím nastavení akce obsahuje ukázkový kód, včetně return příkazu.

    Snímek obrazovky znázorňující akci Spustit kód JavaScriptu s výchozím ukázkovým kódem

  3. V poli Kód odstraňte ukázkový kód a zadejte svůj kód. Napište kód, který byste umístili do metody, ale bez podpisu metody.

    Tip

    Když je kurzor v poli Kód , zobrazí se seznam dynamického obsahu. I když tento seznam použijete později, můžete ho prozatím ignorovat a nechat ho otevřený. Nevybírejte Skrýt.

    Pokud začnete psát rozpoznané klíčové slovo, zobrazí se seznam automatického dokončování, abyste si mohli vybrat z dostupných klíčových slov, například:

    Snímek obrazovky znázorňující pracovní postup Consumption, akci Spustit kód JavaScriptu a seznam automatického dokončování klíčových slov

    Následující příklad fragmentu kódu nejprve vytvoří proměnnou myResult , která ukládá regulární výraz, který určuje vzor, který se má shodovat ve vstupním textu. Kód pak vytvoří proměnnou s názvem e-mail , která ukládá obsah textu e-mailové zprávy z výstupů triggeru.

    Snímek obrazovky znázorňující pracovní postup Consumption, akci Spustit kód JavaScriptu a ukázkový kód, který vytváří proměnné

  4. Když kurzor zůstane v poli Kód , v otevřeném seznamu dynamického obsahu najděte část Při přijetí nového e-mailu a vyberte vlastnost Text , která odkazuje na text e-mailové zprávy.

    Snímek obrazovky znázorňující pracovní postup Consumption, akci Spustit kód JavaScriptu, seznam dynamického obsahu a vybranou vlastnost Text e-mailové zprávy

    Seznam dynamického obsahu zobrazuje výstupy z triggeru a všechny předchozí akce, pokud tyto výstupy odpovídají vstupnímu formátu pole pro úpravy, na kterém je právě fokus. Tento seznam usnadňuje používání těchto výstupů a odkazování z pracovního postupu. V tomto příkladu se v seznamu zobrazují výstupy z triggeru Outlooku, včetně vlastnosti Text e-mailové zprávy.

    Po výběru vlastnosti Text akce Spustit kód JavaScriptu přeloží token na objekt JSON jen workflowContext pro čtení, který může fragment kódu použít jako vstup. Objekt workflowContext obsahuje vlastnosti, které vašemu kódu poskytují přístup k výstupům z triggeru a předchozích akcí v pracovním postupu, jako je vlastnost triggeru body , která se liší od vlastnosti Text e-mailové zprávy. Další informace o objektu workflowContext najdete v části Odkaz na výstupy triggeru a akce pomocí objektu workflowContext dále v tomto článku.

    Důležité

    Pokud fragment kódu odkazuje na názvy akcí, které obsahují operátor tečky (.), musí tyto odkazy tyto názvy akcí uzavřít hranatými závorkami ([]) a uvozovkami (""), například:

    // Correct
    workflowContext.actions["my.action.name"].body

    // Incorrect
    workflowContext.actions.my.action.name.body

    V akci Spustit kód JavaScriptu musíte přidat parametr Actions a pak do tohoto parametru přidat tyto názvy akcí. Další informace najdete v části Přidání závislostí jako parametrů do akce Spustit javascriptový kód dále v tomto článku.

  5. Pokud chcete odlišit vlastnost Text e-mailové zprávy, kterou jste vybrali z vlastnosti triggeru body , přejmenujte druhou body vlastnost na Body . Na konec přidejte závěrečnou středník (;) a dokončete tak příkaz kódu.

    Snímek obrazovky znázorňující pracovní postup aplikace logiky Consumption, akci Spustit kód JavaScriptu a přejmenovanou vlastnost

    Akce Spustit kód JavaScriptu syntakticky nevyžaduje return příkaz. Zahrnutím return příkazu však můžete snadněji odkazovat na výsledky akcí později v pracovním postupu pomocí tokenu Result v pozdějších akcích.

    V tomto příkladu fragment kódu vrátí výsledek voláním match() funkce, která najde všechny shody v textu e-mailové zprávy se zadaným regulárním výrazem. Akce Vytvořit tabulku HTML pak pomocí tokenu Výsledek odkazuje na výsledky z akce Spustit javascriptový kód a vytvoří jeden výsledek.

    Snímek obrazovky znázorňující dokončený pracovní postup aplikace logiky Consumption

  6. Až budete hotovi, pracovní postup uložte.

Odkaz na aktivační události a výstupy akcí pomocí objektu workflowContext

Z fragmentu kódu v návrháři můžete pomocí seznamu dynamického obsahu vybrat token, který odkazuje na výstup z triggeru nebo jakékoli předchozí akce. Když vyberete token, akce Spustit kód JavaScriptu přeloží tento token na objekt JSON jen workflowContext pro čtení. Tento objekt poskytuje kódu přístup k výstupům z triggeru, všem předchozím akcím a pracovnímu postupu. Objekt používá následující strukturu a zahrnuje actionsvlastnosti , triggera workflow , které jsou také objekty:

{
   "workflowContext": {
      "actions": {
         "<action-name-1>": @actions('<action-name-1>'),
         "<action-name-2>": @actions('<action-name-2>')
      },
      "trigger": {
         @trigger()
      },
      "workflow": {
         @workflow()
      }
   }
}

Následující tabulka obsahuje další informace o těchto vlastnostech:

Vlastnost Typ Popis
actions Kolekce objektů Výsledné objekty z předchozích akcí, které se spustí před spuštěním fragmentu kódu. Každý objekt má pár klíč-hodnota , kde klíč je název akce a hodnota je ekvivalentní výsledku volání funkce actions() s výrazem @actions('<action-name>') .

Název akce používá stejný název akce, který se zobrazí v základní definici pracovního postupu, čímž nahradí mezery (" ") v názvu akce podtržítkem (_). Tato kolekce objektů poskytuje přístup k hodnotám vlastností akce z aktuálního spuštění instance pracovního postupu.
trigger Objekt Objekt výsledku z triggeru, kde je výsledek ekvivalentem volání funkce trigger(). Tento objekt poskytuje přístup k hodnotám vlastností triggeru z aktuálního spuštění instance pracovního postupu.
workflow Objekt Objekt pracovního postupu, který je ekvivalentem volání funkce workflow(). Tento objekt poskytuje přístup k hodnotám vlastností, jako je název pracovního postupu, ID spuštění atd. z aktuálního spuštění instance pracovního postupu.

V příkladu workflowContext tohoto článku může mít objekt JSON následující ukázkové vlastnosti a hodnoty z triggeru Outlooku:

{
   "workflowContext": {
      "trigger": {
         "name": "When_a_new_email_arrives",
         "inputs": {
            "host": {
               "connection": {
                  "name": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Web/connections/office365"
               }
            },
            "method": "get",
            "path": "/Mail/OnNewEmail",
            "queries": {
               "includeAttachments": "False"
            }
         },
         "outputs": {
            "headers": {
               "Pragma": "no-cache",
               "Content-Type": "application/json; charset=utf-8",
               "Expires": "-1",
               "Content-Length": "962095"
            },
            "body": {
               "Id": "AAMkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgBGAAAAAABmZwxUQtCGTqSPpjjMQeD",
               "DateTimeReceived": "2019-03-28T19:42:16+00:00",
               "HasAttachment": false,
               "Subject": "Hello World",
               "BodyPreview": "Hello World",
               "Importance": 1,
               "ConversationId": "AAQkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgAQ",
               "IsRead": false,
               "IsHtml": true,
               "Body": "Hello World",
               "From": "<sender>@<domain>.com",
               "To": "<recipient-2>@<domain>.com;<recipient-2>@<domain>.com",
               "Cc": null,
               "Bcc": null,
               "Attachments": []
            }
         },
         "startTime": "2019-05-03T14:30:45.971564Z",
         "endTime": "2019-05-03T14:30:50.1746874Z",
         "scheduledTime": "2019-05-03T14:30:45.8778117Z",
         "trackingId": "1cd5ffbd-f989-4df5-a96a-6e9ce31d03c5",
         "clientTrackingId": "08586447130394969981639729333CU06",
         "originHistoryName": "08586447130394969981639729333CU06",
         "code": "OK",
         "status": "Succeeded"
      },
      "workflow": {
         "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>",
         "name": "<logic-app-workflow-name>",
         "type": "Microsoft.Logic/workflows",
         "location": "<Azure-region>",
         "run": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>/runs/08586453954668694173655267965CU00",
            "name": "08586453954668694173655267965CU00",
            "type": "Microsoft.Logic/workflows/runs"
         }
      }
   }
}

Přidání závislostí jako parametrů do akce Spustit kód JavaScriptu

V některých scénářích možná budete muset explicitně vyžadovat, aby akce Spustit kód JavaScriptu zahrnovala výstupy z triggeru nebo akce, na které váš kód odkazuje jako na závislosti. Tento krok navíc musíte provést například v případě, že váš kód odkazuje na výstupy, které nejsou k dispozici v době běhu pracovního postupu. Během doby vytváření pracovního postupu modul Azure Logic Apps analyzuje fragment kódu, aby zjistil, jestli kód odkazuje na výstupy triggeru nebo akce. Pokud tyto odkazy existují, modul tyto výstupy automaticky zahrne. Pokud se při spuštění pracovního postupu v objektu workflowContext nenajde odkazovaný trigger nebo výstup akce, modul vygeneruje chybu. Pokud chcete tuto chybu vyřešit, musíte tuto aktivační událost nebo akci přidat jako explicitní závislost pro akci Spustit kód JavaScriptu . Dalším scénářem, který vyžaduje provedení tohoto kroku, je situace, kdy workflowContext objekt odkazuje na aktivační událost nebo název akce, která používá operátor tečky (.).

Pokud chcete přidat trigger nebo akci jako závislost, přidejte parametry Trigger nebo Actions , které platí pro akci Spustit kód JavaScriptu . Pak přidáte názvy triggerů nebo akcí tak, jak se zobrazí v podkladové definici JSON vašeho pracovního postupu.

Poznámka

Jako explicitní závislosti nemůžete přidávat operace proměnných , smyčky, jako jsou for each nebo Until, a iterační indexy.

Pokud máte v úmyslu kód znovu použít, nezapomeňte vždy použít pole pro úpravy fragmentu kódu, které odkazuje na výstupy triggeru a akce. Kód tak bude obsahovat přeložené odkazy na tokeny, a ne jenom přidávat výstupy triggeru nebo akce jako explicitní závislosti.

Předpokládejme například, že před fragmentem kódu v ukázkovém pracovním postupu předchází e-mailová akce Odeslat schválení konektoru Office 365 Outlook Connectoru. Následující příklad fragmentu kódu obsahuje odkaz na výstup SelectedOption z této akce.

V tomto příkladu musíte přidat pouze parametr Actions a pak do parametru přidat název Send_approval_emailJSON akce. Tímto způsobem určíte, že akce Spustit kód JavaScriptu explicitně zahrnuje výstup z akce Odeslat e-mail schválení .

Vyhledání názvu JSON triggeru nebo akce

Než začnete, potřebujete název JSON pro trigger nebo akci v základní definici pracovního postupu.

  • Názvy v definici pracovního postupu používají podtržítko (_), nikoli mezeru.

  • Pokud název akce používá operátor tečky (.), zahrňte tento operátor, například:

    My.Action.Name

  1. Na panelu nástrojů návrháře pracovního postupu vyberte Zobrazení kódu. V objektu actions vyhledejte název akce.

    Je například Send_approval_email název JSON pro akci Odeslat e-mail s schválením .

    Snímek obrazovky s názvem akce ve formátu JSON

  2. Pokud se chcete vrátit do zobrazení návrháře, vyberte na panelu nástrojů zobrazení kódu Designer.

  3. Teď přidejte název JSON do akce Spustit kód JavaScriptu .

Přidání názvu triggeru nebo akce do akce Spustit kód JavaScriptu

  1. V akci Spustit kód JavaScriptu otevřete seznam Přidat nový parametr .

  2. V seznamu parametrů vyberte následující parametry, které váš scénář vyžaduje.

    Parametr Popis
    Akce Zahrňte výstupy z předchozích akcí jako závislosti. Když vyberete tento parametr, zobrazí se výzva k zadání akcí, které chcete přidat.
    Trigger Zahrňte výstupy z triggeru jako závislosti. Když vyberete tento parametr, zobrazí se výzva, jestli chcete zahrnout výsledky triggeru. Takže v seznamu Aktivační událost vyberte Ano.
  3. V tomto příkladu vyberte parametr Actions .

    Snímek obrazovky znázorňující akci Spustit kód JavaScriptu s vybraným parametrem Actions

  4. Do pole Položka akcí – 1 zadejte název JSON akce.

    Snímek obrazovky znázorňující pole Actions Item -1 (Položka akcí -1) a název JSON akce

  5. Pokud chcete přidat další název akce, vyberte Přidat novou položku.

  6. Až budete hotovi, pracovní postup uložte.

Referenční informace k akcím

Další informace o struktuře a syntaxi akce Spustit kód JavaScriptu v definici podkladového pracovního postupu pomocí jazyka definice pracovního postupu najdete v referenční části této akce.

Další kroky