Lägga till och köra JavaScript-kod infogat med arbetsflöden för Azure Logic Apps
Gäller för: Azure Logic Apps (Förbrukning + Standard)
Om du vill utföra anpassade integreringsuppgifter i ditt arbetsflöde i Azure Logic Apps kan du lägga till och köra enkla JavaScript-kodfragment direkt från arbetsflödet i Azure Portal. För den här uppgiften använder du åtgärden Infogad kod med namnet Kör JavaScript Code. Den här åtgärden returnerar resultatet från kodfragmentet så att du kan använda utdata i arbetsflödets efterföljande åtgärder. Den här åtgärden har också olika gränser, beroende på om du har ett förbruknings- eller standardarbetsflöde och fungerar bäst för kodfragment med följande attribut:
Åtgärd | Språk | Språkversion | Körningens varaktighet | Datastorlek | Andra noteringar |
---|---|---|---|---|---|
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 variablerna, 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 med hjälp av Azure Functions.
Den här guiden 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
Ett Azure-konto och prenumeration. Om du inte har någon prenumeration kan du registrera ett kostnadsfritt Azure-konto.
Arbetsflödet för logikappen där du vill lägga till kodfragmentet. Arbetsflödet måste redan börja med en utlösare.
I den här artikelns exempel används Office 365 Outlook-utlösaren som heter När ett nytt e-postmeddelande kommer.
Om du inte har något arbetsflöde kan du läsa följande dokumentation:
Baserat på om du har ett arbetsflöde för förbrukning eller standardlogikapp granskar du följande krav:
Arbetsflöde för förbrukning
Länka till ett integrationskonto, tomt eller på annat sätt, från logikappresursen.
Viktigt!
Kontrollera att du använder ett integrationskonto som är lämpligt för ditt användningsfall eller scenario.
Till exempel är integreringskonton på den kostnadsfria nivån endast avsedda för undersökande scenarier och arbetsbelastningar, inte produktionsscenarier, är begränsade i användning och dataflöde och stöds inte av ett serviceavtal (SLA).
Andra integreringskontonivåer medför kostnader, men inkluderar SLA-support, erbjuder mer dataflöde och har högre gränser. Läs mer om integreringskontonivåer, gränser och priser.
Standardarbetsflöde
Inget integrationskonto krävs.
Lägg till åtgärden Execute JavaScript Code (Kör JavaScript Code)
I Azure Portal öppnar du arbetsflödet för förbrukningslogikappen i designern.
-
Det här exemplet lägger till åtgärden under Office 365 Outlook-utlösaren. Som standard innehåller åtgärden viss exempelkod, inklusive en
return
-instruktion. I rutan Kod tar du bort exempelkoden och anger din kod. Skriv den kod som du skulle placera i en metod, men utan metodsignaturen.
Dricks
När markören finns i rutan Kod visas listan med dynamiskt innehåll. Även om du använder 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 med automatisk komplettering så att du kan välja bland tillgängliga nyckelord, till exempel:
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.
Med markören kvar i rutan Kod letar du upp avsnittet När ett nytt e-postmeddelande kommer från listan med öppet dynamiskt innehåll och väljer egenskapen Brödtext som refererar till e-postmeddelandets brödtext.
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 egenskap Brödtext .
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. ObjektetworkflowContext
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ösarensbody
egenskap, som skiljer sig från e-postmeddelandets egenskap Brödtext . Mer information om objektet finns iworkflowContext
Referensutlö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.
Om du vill särskilja e-postmeddelandets body-egenskap som du valde från utlösarens
body
egenskap byter du namn på den andrabody
egenskapen tillBody
i stället. Lägg till det avslutande semikolonet (;) i slutet för att slutföra kodsatsen.Åtgärden Kör JavaScript Code kräver inte syntaktiskt en
return
instruktion. Men genom att inkludera -instruktionenreturn
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 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.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 Kör JavaScript Code den token till ett skrivskyddat workflowContext
JSON-objekt. 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 actions
egenskaperna , trigger
och 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()
}
}
}
I följande tabell finns mer information om dessa egenskaper:
Property | Type | 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 att anropa 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 att anropa 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örning av JavaScript Code-åtgärd
I vissa scenarier kan du behöva kräva att åtgärden Kör JavaScript Code uttryckligen innehåller utdata från utlösaren eller åtgärderna 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 någon utlösare eller åtgärd. Om dessa referenser finns innehåller motorn dessa utdata automatiskt. Om den refererade utlösaren eller åtgärdsutdatan inte hittas i objektet vid körningen workflowContext
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 Code. Sedan lägger du till utlösar- eller åtgärdsnamnen som de visas i arbetsflödets underliggande JSON-definition.
Kommentar
Du kan inte lägga till variabler , loopar som För varje eller Till 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 e-poståtgärd Skicka godkä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 Åtgärder 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
Välj Kodvy i verktygsfältet för arbetsflödesdesignern.
actions
Leta reda på åtgärdens namn i objektet.Är till exempel
Send_approval_email
JSON-namnet för åtgärden Skicka e-postgodkännande .Om du vill återgå till designervyn går du till verktygsfältet för kodvyn och väljer Designer.
Lägg nu till JSON-namnet i åtgärden Execute JavaScript Code (Kör JavaScript Code ).
Lägg till utlösaren eller åtgärdsnamnet i åtgärden Execute JavaScript Code (Kör JavaScript Code)
I åtgärden Execute JavaScript Code (Kör JavaScript Code ) öppnar du listan Lägg till ny parameter .
I listan med parametrar väljer du följande parametrar som ditt scenario kräver.
Parameter Description Å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. I det här exemplet väljer du parametern Åtgärder .
I rutan Åtgärdsobjekt - 1 anger du åtgärdens JSON-namn.
Om du vill lägga till ett annat åtgärdsnamn väljer du Lägg till nytt objekt.
Spara arbetsflödet när du är klar.
Åtgärdsreferens
Mer information om åtgärden Execute JavaScript Code's structure and syntax in your underlying workflow definition using the Workflow Definition Language (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.