Köra kodfragment i arbetsflöden med infogade kodåtgärder i Azure Logic Apps

Gäller för: Azure Logic Apps (Förbrukning + Standard)

Om du vill skapa och köra ett kodfragment i logikappens arbetsflöde utan mycket konfiguration kan du använda den inbyggda anslutningsappen Infogad kod . Den här anslutningsappen har en åtgärd som returnerar resultatet från kodfragmentet så att du kan använda utdata i arbetsflödets efterföljande åtgärder.

För närvarande har anslutningsappen bara en enda åtgärd som fungerar bäst för ett kodfragment med följande attribut, men fler åtgärder är under utveckling. Den inbyggda anslutningsappen för infogad kod har också olika gränser, baserat på om logikappens arbetsflöde är Förbrukning eller Standard.

Åtgärd Språk Språkversion Körningens varaktighet Datastorlek Andra anteckningar
Köra JavaScript-kod JavaScript Standard:
Node.js 16.x.x

Förbrukning:
Node.js 8.11.1

Mer information finns i Standard inbyggda objekt.
Avslutas om 5 sekunder eller färre. Hanterar data upp till 50 MB. – Kräver inte att du arbetar med variables-åtgärderna, som inte stöds av åtgärden.

– Stöder require() inte funktionen för att köra JavaScript.

Om du vill köra kod som inte passar dessa attribut kan du skapa och anropa en funktion via Azure Functions i stället.

Den här artikeln visar hur åtgärden fungerar i ett exempelarbetsflöde som börjar med en Office 365 Outlook-utlösare. Arbetsflödet körs när ett nytt e-postmeddelande kommer till det associerade Outlook-e-postkontot. Exempelkodfragmentet extraherar alla e-postadresser som finns i e-postmeddelandets brödtext och returnerar de adresser som utdata som du kan använda i en efterföljande åtgärd.

Följande diagram visar höjdpunkterna från exempelarbetsflödet:

Förutsättningar

Lägg till åtgärden Execute JavaScript Code (Kör JavaScript Code)

  1. Öppna arbetsflödet för logikappen Förbrukning i designern i Azure Portal.

  2. I designern följer du de här allmänna stegen för att lägga till åtgärden Infogad kod med namnet Execute JavaScript Code (Kör JavaScript-kod ) i arbetsflödet.

    Det här exemplet lägger till åtgärden under Office 365 Outlook-utlösaren. Som standard innehåller åtgärden en del exempelkod, inklusive en return -instruktion.

    Skärmbild som visar åtgärden Kör JavaScript Code med standardexempelkod.

  3. Ta bort exempelkoden i rutan Kod och ange din kod. Skriv koden som du skulle placera i en metod, men utan metodsignaturen.

    Tips

    När markören finns i rutan Kod visas listan med dynamiskt innehåll. Även om du kommer att använda den här listan senare kan du ignorera och lämna listan öppen för tillfället. Välj inte Dölj.

    Om du börjar skriva ett identifierat nyckelord visas listan komplettera automatiskt så att du kan välja bland tillgängliga nyckelord, till exempel:

    Skärmbild som visar förbrukningsarbetsflödet, åtgärden Kör JavaScript Code och listan över automatisk komplettering av nyckelord.

    I följande exempelkodfragment skapas först en variabel med namnet myResult som lagrar ett reguljärt uttryck, som anger ett mönster som ska matchas i indatatext. Koden skapar sedan en variabel med namnet e-post som lagrar e-postmeddelandets brödtextinnehåll från utlösarens utdata.

    Skärmbild som visar förbrukningsarbetsflödet, åtgärden Kör JavaScript Code och exempelkod som skapar variabler.

  4. Med markören kvar i rutan Kod letar du reda på avsnittet När ett nytt e-postmeddelande kommer och väljer egenskapen Brödtext , som refererar till e-postmeddelandets brödtext.

    Skärmbild som visar förbrukningsarbetsflödet, åtgärden Kör JavaScript Code, listan med dynamiskt innehåll och e-postmeddelandets egenskap

    Listan med dynamiskt innehåll visar utdata från utlösaren och eventuella föregående åtgärder när dessa utdata matchar indataformatet för redigeringsrutan som för närvarande är i fokus. Den här listan gör dessa utdata enklare att använda och referera till från arbetsflödet. I det här exemplet visar listan utdata från Outlook-utlösaren, inklusive e-postmeddelandets body-egenskap .

    När du har valt egenskapen Brödtext löser åtgärden Kör JavaScript Code token till ett skrivskyddat workflowContext JSON-objekt, som kodfragmentet kan använda som indata. Objektet workflowContext innehåller egenskaper som ger din kod åtkomst till utdata från utlösaren och föregående åtgärder i arbetsflödet, till exempel utlösarens body egenskap, som skiljer sig från e-postmeddelandets body-egenskap . Mer information om objektet finns i workflowContextReferensutlösare och åtgärdsutdata med hjälp av workflowContext-objektet senare i den här artikeln.

    Viktigt

    Om kodfragmentet refererar till åtgärdsnamn som innehåller punktoperatorn (.) måste dessa referenser omsluta dessa åtgärdsnamn med hakparenteser ([]) och citattecken (""), till exempel:

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

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

    I åtgärden Execute JavaScript Code (Kör JavaScript Code) måste du också lägga till parametern Actions (Åtgärder) och sedan lägga till dessa åtgärdsnamn i parametern. Mer information finns i Lägga till beroenden som parametrar i en Execute JavaScript Code-åtgärd senare i den här artikeln.

  5. Om du vill skilja e-postmeddelandets body-egenskap som du valde från utlösarens body egenskap byter du namn på den andra body egenskapen till Body i stället. Lägg till det avslutande semikolonet (;) i slutet för att slutföra kodsatsen.

    Skärmbild som visar arbetsflödet för förbrukningslogikappen, åtgärden Execute JavaScript Code (Kör JavaScript Code) och egenskapen

    Åtgärden Execute JavaScript Code kräver inte syntaktiskt en return instruktion. Men genom att inkludera -instruktionen return kan du enklare referera till åtgärdsresultaten senare i arbetsflödet med hjälp av resultattoken i senare åtgärder.

    I det här exemplet returnerar kodfragmentet resultatet genom att anropa match() funktionen, som hittar eventuella matchningar i e-postmeddelandets brödtext till det angivna reguljära uttrycket. Åtgärden Skapa HTML-tabell använder sedan resultattoken för att referera till resultaten från åtgärden Execute JavaScript Code (Kör JavaScript Code ) och skapar ett enda resultat.

    Skärmbild som visar det färdiga arbetsflödet för förbrukningslogikappen.

  6. Spara arbetsflödet när du är klar.

Referensutlösare och åtgärdsutdata med hjälp av workflowContext-objektet

Inifrån kodfragmentet i designern kan du använda listan med dynamiskt innehåll för att välja en token som refererar till utdata från utlösaren eller någon föregående åtgärd. När du väljer token löser åtgärden Execute JavaScript Code den token till ett skrivskyddat JSON-objekt workflowContext . Det här objektet ger din kod åtkomst till utdata från utlösaren, eventuella föregående åtgärder och arbetsflödet. Objektet använder följande struktur och innehåller actionsegenskaperna , triggeroch workflow , som också är objekt:

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

Följande tabell innehåller mer information om dessa egenskaper:

Egenskap Typ Beskrivning
actions Objektsamling Resultatobjekten från föregående åtgärder som körs innan kodfragmentet körs. Varje objekt har ett nyckel/värde-par där nyckeln är åtgärdsnamnet och värdet motsvarar resultatet från anropet av funktionen actions() med @actions('<action-name>') uttrycket.

Åtgärdens namn använder samma åtgärdsnamn som visas i den underliggande arbetsflödesdefinitionen, som ersätter blanksteg (" ") i åtgärdsnamnet med understreck (_). Den här objektsamlingen ger åtkomst till åtgärdens egenskapsvärden från den aktuella arbetsflödesinstanskörningen.
trigger Objekt Resultatobjektet från utlösaren där resultatet motsvarar att anropa funktionen trigger(). Det här objektet ger åtkomst till utlösarens egenskapsvärden från den aktuella arbetsflödesinstanskörningen.
workflow Objekt Arbetsflödesobjektet som motsvarar anropet av funktionen workflow(). Det här objektet ger åtkomst till egenskapsvärdena, till exempel arbetsflödesnamnet, körnings-ID och så vidare, från den aktuella arbetsflödesinstanskörningen.

I den här artikelns exempel workflowContext kan JSON-objektet ha följande exempelegenskaper och värden från Outlook-utlösaren:

{
   "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"
         }
      }
   }
}

Lägga till beroenden som parametrar i en Köra JavaScript-kodåtgärd

I vissa fall kan du behöva kräva att åtgärden Kör JavaScript Code uttryckligen innehåller utdata från utlösaren eller åtgärder som koden refererar till som beroenden. Du måste till exempel ta det här extra steget när koden refererar till utdata som inte är tillgängliga vid arbetsflödets körningstid. När arbetsflödet skapas analyserar Azure Logic Apps-motorn kodfragmentet för att avgöra om koden refererar till utlösare eller åtgärdsutdata. Om dessa referenser finns inkluderar motorn dessa utdata automatiskt. Om den refererade utlösaren eller åtgärdsutdata inte hittas i workflowContext objektet vid körningen av arbetsflödet genererar motorn ett fel. För att lösa det här felet måste du lägga till utlösaren eller åtgärden som ett explicit beroende för åtgärden Kör JavaScript Code . Ett annat scenario som kräver att du tar det här steget är när workflowContext objektet refererar till en utlösare eller ett åtgärdsnamn som använder punktoperatorn (.).

Om du vill lägga till en utlösare eller åtgärd som ett beroende lägger du till parametrarna Utlösare eller Åtgärder enligt vad som är tillämpligt för åtgärden Kör JavaScript-kod . Sedan lägger du till utlösar- eller åtgärdsnamnen så som de visas i arbetsflödets underliggande JSON-definition.

Anteckning

Du kan inte lägga till variabler , loopar som For each eller Until och iterationsindex som explicita beroenden.

Om du planerar att återanvända koden ska du alltid använda redigeringsrutan för kodfragmentet för att referera till utlösar- och åtgärdsutdata. På så sätt innehåller koden de lösta tokenreferenserna i stället för att bara lägga till utlösaren eller åtgärdens utdata som explicita beroenden.

Anta till exempel att Office 365 Outlook-anslutningsappens åtgärd Skicka e-postgodkännande föregår kodfragmentet i exempelarbetsflödet. Följande exempelkodfragment innehåller en referens till SelectedOption-utdata från den här åtgärden.

I det här exemplet måste du bara lägga till parametern Actions och sedan lägga till åtgärdens JSON-namn, Send_approval_email, i parametern . På så sätt anger du att åtgärden Execute JavaScript Code explicit innehåller utdata från åtgärden Skicka e-postgodkännande .

Hitta utlösarens eller åtgärdens JSON-namn

Innan du börjar behöver du JSON-namnet för utlösaren eller åtgärden i den underliggande arbetsflödesdefinitionen.

  • Namn i arbetsflödesdefinitionen använder ett understreck (_), inte ett blanksteg.

  • Om ett åtgärdsnamn använder punktoperatorn (.), inkluderar du operatorn, till exempel:

    My.Action.Name

  1. I verktygsfältet för arbetsflödesdesignern väljer du Kodvy. Leta reda på actions åtgärdens namn i -objektet.

    Är till exempel Send_approval_email JSON-namnet för åtgärden Skicka e-postgodkännande .

    Skärmbild som visar åtgärdsnamnet i JSON.

  2. Om du vill återgå till designervyn väljer du Designer i kodvyns verktygsfält.

  3. Lägg nu till JSON-namnet i åtgärden Execute JavaScript Code (Kör JavaScript-kod ).

Lägg till utlösaren eller åtgärdsnamnet i åtgärden Execute JavaScript Code (Kör JavaScript-kod)

  1. I åtgärden Execute JavaScript Code (Kör JavaScript-kod ) öppnar du listan Lägg till ny parameter .

  2. I listan med parametrar väljer du följande parametrar som ditt scenario kräver.

    Parameter Beskrivning
    Åtgärder Inkludera utdata från föregående åtgärder som beroenden. När du väljer den här parametern uppmanas du att ange de åtgärder som du vill lägga till.
    Utlösare Inkludera utdata från utlösaren som beroenden. När du väljer den här parametern uppmanas du att ta med utlösarresultat. I listan Utlösare väljer du alltså Ja.
  3. I det här exemplet väljer du parametern Åtgärder .

    Skärmbild som visar åtgärden Execute JavaScript Code (Kör JavaScript-kod) med parametern Actions (Åtgärder) vald.

  4. I rutan Åtgärdsobjekt - 1 anger du åtgärdens JSON-namn.

    Skärmbild som visar rutan Åtgärdsobjekt -1 och åtgärdens JSON-namn.

  5. Om du vill lägga till ett annat åtgärdsnamn väljer du Lägg till nytt objekt.

  6. Spara arbetsflödet när du är klar.

Åtgärdsreferens

Mer information om åtgärden Kör JavaScript Code-åtgärdens struktur och syntax i den underliggande arbetsflödesdefinitionen med hjälp av arbetsflödesdefinitionsspråket finns i referensavsnittet för den här åtgärden.

Nästa steg