Codefragmenten uitvoeren in werkstromen met inlinecodebewerkingen in Azure Logic Apps
Van toepassing op: Azure Logic Apps (verbruik + standaard)
Als u een codefragment wilt maken en uitvoeren in de werkstroom van uw logische app zonder veel instellingen, kunt u de ingebouwde connector voor inlinecode gebruiken. Deze connector heeft een actie die het resultaat van het codefragment retourneert, zodat u die uitvoer kunt gebruiken in de volgende acties van uw werkstroom.
Op dit moment heeft de connector slechts één actie, wat het beste werkt voor een codefragment met de volgende kenmerken, maar er zijn meer acties in ontwikkeling. De ingebouwde connector voor inlinecode heeft ook verschillende limieten, afhankelijk van of de werkstroom van de logische app Verbruik of Standaard is.
Actie | Taal | Taalversie | Uitvoeringsduur | Gegevensgrootte | Overige notities |
---|---|---|---|---|---|
JavaScript-code uitvoeren | JavaScript | Standaard: Node.js 16.x.x Verbruik: Node.js 8.11.1 Raadpleeg Standaard ingebouwde objecten voor meer informatie. |
Eindigt over 5 seconden of minder. | Verwerkt gegevens tot 50 MB. | - Hiervoor hoeft u niet te werken met de variabelenacties, die niet worden ondersteund door de actie. - Biedt geen ondersteuning voor de functie voor het require() uitvoeren van JavaScript. |
Als u code wilt uitvoeren die niet bij deze kenmerken past, kunt u in plaats daarvan een functie maken en aanroepen via Azure Functions.
In dit artikel ziet u hoe de actie werkt in een voorbeeldwerkstroom die begint met een Office 365 Outlook-trigger. De werkstroom wordt uitgevoerd wanneer er een nieuwe e-mail binnenkomt in het bijbehorende Outlook-e-mailaccount. Het voorbeeldcodefragment extraheert alle e-mailadressen uit de hoofdtekst van de e-mail en retourneert deze adressen als uitvoer die u in een volgende actie kunt gebruiken.
In het volgende diagram ziet u de hoogtepunten van een voorbeeldwerkstroom:
Vereisten
Een Azure-account en -abonnement. Als u nog geen abonnement hebt, meld u dan aan voor een gratis Azure-account.
De werkstroom van de logische app waaraan u het codefragment wilt toevoegen. De werkstroom moet al beginnen met een trigger.
In het voorbeeld van dit artikel wordt de Office 365 Outlook-trigger gebruikt met de naam Wanneer er een nieuwe e-mail binnenkomt.
Als u geen werkstroom hebt, raadpleegt u de volgende documentatie:
Verbruik: Voorbeeldwerkstroom voor logische app Verbruik maken
Standaard: Voorbeeldwerkstromen voor logische apps maken
Bekijk de volgende vereisten op basis van het feit of uw logische app Verbruik of Standaard is:
Verbruik: vereist Node.js versie 8.11.10 en een koppeling naar een integratieaccount, leeg of anderszins, van uw logische app-resource.
Belangrijk
Zorg ervoor dat u een integratieaccount gebruikt dat geschikt is voor uw use-case of scenario.
Gratis integratieaccounts zijn bijvoorbeeld alleen bedoeld voor experimentele scenario's en workloads, niet voor productiescenario's, zijn beperkt in gebruik en doorvoer en worden niet ondersteund door een Sla (Service Level Agreement).
Andere integratieaccountlagen kosten, maar bieden SLA-ondersteuning, bieden meer doorvoer en hebben hogere limieten. Meer informatie over integratieaccountlagen, limieten en prijzen.
Standaard: vereist Node.js versies 16.x.x, maar geen integratieaccount.
De actie JavaScript-code uitvoeren toevoegen
Open in de Azure Portal de werkstroom van de logische app Verbruik in de ontwerpfunctie.
Volg in de ontwerpfunctie deze algemene stappen om de actie Inline code met de naam JavaScript-code uitvoeren toe te voegen aan uw werkstroom.
In dit voorbeeld wordt de actie toegevoegd onder de Office 365 Outlook-trigger. De actie bevat standaard een voorbeeldcode, waaronder een
return
-instructie.Verwijder de voorbeeldcode in het vak Code en voer uw code in. Schrijf de code die u in een methode zou plaatsen, maar zonder de methodehandtekening.
Tip
Wanneer de cursor zich in het vak Code bevindt, wordt de lijst met dynamische inhoud weergegeven. Hoewel u deze lijst later gaat gebruiken, kunt u de lijst voorlopig negeren en open laten. Selecteer Verbergen niet.
Als u een herkend trefwoord begint te typen, wordt de lijst voor automatisch aanvullen weergegeven, zodat u kunt kiezen uit beschikbare trefwoorden, bijvoorbeeld:
In het volgende voorbeeldcodefragment wordt eerst een variabele gemaakt met de naam myResult waarin een reguliere expressie wordt opgeslagen, waarmee een patroon wordt opgegeven dat moet overeenkomen in de invoertekst. De code maakt vervolgens een variabele met de naam e-mail waarin de hoofdtekst van het e-mailbericht uit de triggeruitvoer wordt opgeslagen.
Terwijl de cursor zich nog steeds in het vak Code bevindt, gaat u in de lijst met geopende dynamische inhoud naar de sectie Wanneer er een nieuwe e-mail binnenkomt en selecteert u de eigenschap Hoofdtekst , die verwijst naar de hoofdtekst van het e-mailbericht.
De lijst met dynamische inhoud bevat de uitvoer van de trigger en eventuele voorgaande acties wanneer deze uitvoer overeenkomt met de invoerindeling voor het bewerkingsvak dat zich momenteel in de focus bevindt. Deze lijst maakt deze uitvoer eenvoudiger te gebruiken en na te verwijzen vanuit uw werkstroom. In dit voorbeeld ziet u in de lijst de uitvoer van de Outlook-trigger, inclusief de eigenschap Hoofdtekst van het e-mailbericht.
Nadat u de eigenschap Body hebt geselecteerd, wordt met de actie JavaScript-code uitvoeren het token omgezet in een alleen-lezen
workflowContext
JSON-object, dat uw fragment als invoer kan gebruiken. HetworkflowContext
object bevat eigenschappen die uw code toegang geven tot de uitvoer van de trigger en voorafgaande acties in uw werkstroom, zoals de eigenschap vanbody
de trigger, die verschilt van de eigenschap Hoofdtekst van het e-mailbericht. Zie Verwijzing naar trigger- en actie-uitvoer met behulp van hetworkflowContext
workflowContext-object verderop in dit artikel voor meer informatie over het object.Belangrijk
Als uw codefragment verwijst naar actienamen die de operator punt (.) bevatten, moeten deze verwijzingen deze actienamen tussen vierkante haken ([]) en aanhalingstekens ("") plaatsen, bijvoorbeeld:
// Correct
workflowContext.actions["my.action.name"].body
// Incorrect
workflowContext.actions.my.action.name.body
In de actie JavaScript-code uitvoeren moet u ook de parameter Acties toevoegen en vervolgens deze actienamen toevoegen aan die parameter. Zie Afhankelijkheden toevoegen als parameters aan een actie JavaScript-code uitvoeren verderop in dit artikel voor meer informatie.
Als u de eigenschap Hoofdtekst van het e-mailbericht die u hebt geselecteerd, wilt onderscheiden van de eigenschap van
body
de trigger, wijzigt u de naam van de tweedebody
eigenschapBody
in in plaats daarvan. Voeg de afsluitende puntkomma (;) toe aan het einde om de code-instructie te voltooien.Voor de actie JavaScript-code uitvoeren is syntactisch geen instructie vereist
return
. Door dereturn
instructie op te nemen, kunt u echter gemakkelijker later in uw werkstroom verwijzen naar de actieresultaten door het resultaattoken in latere acties te gebruiken.In dit voorbeeld retourneert het codefragment het resultaat door de
match()
functie aan te roepen, waarmee eventuele overeenkomsten in de hoofdtekst van het e-mailbericht worden gevonden met de opgegeven reguliere expressie. De actie HTML-tabel maken gebruikt vervolgens het resultaattoken om te verwijzen naar de resultaten van de actie JavaScript-code uitvoeren en maakt één resultaat.Sla uw werkstroom op wanneer u klaar bent.
Verwijzingstrigger en actie-uitvoer met behulp van het workflowContext-object
Vanuit uw codefragment in de ontwerpfunctie kunt u de lijst met dynamische inhoud gebruiken om een token te selecteren dat verwijst naar de uitvoer van de trigger of een voorgaande actie. Wanneer u het token selecteert, wordt dat token met de actie JavaScript-code uitvoeren omgezet in een alleen-lezen workflowContext
JSON-object. Dit object geeft uw code toegang tot de uitvoer van de trigger, eventuele voorgaande acties en de werkstroom. Het object maakt gebruik van de volgende structuur en bevat de actions
eigenschappen , trigger
en workflow
, die ook objecten zijn:
{
"workflowContext": {
"actions": {
"<action-name-1>": @actions('<action-name-1>'),
"<action-name-2>": @actions('<action-name-2>')
},
"trigger": {
@trigger()
},
"workflow": {
@workflow()
}
}
}
De volgende tabel bevat meer informatie over deze eigenschappen:
Eigenschap | Type | Description |
---|---|---|
actions |
Objectverzameling | De resultaatobjecten van voorgaande acties die worden uitgevoerd voordat het codefragment wordt uitgevoerd. Elk object heeft een sleutel-waardepaar waarbij de sleutel de actienaam is en de waarde gelijk is aan het resultaat van het aanroepen van de functie actions() met de @actions('<action-name>') expressie. De naam van de actie gebruikt dezelfde actienaam die wordt weergegeven in de onderliggende werkstroomdefinitie, waarbij spaties (" ") in de actienaam worden vervangen door onderstrepingstekens (_). Deze objectverzameling biedt toegang tot de eigenschapswaarden van de actie vanuit de huidige uitvoering van het werkstroomexemplaar. |
trigger |
Object | Het resultaatobject van de trigger waarbij het resultaat gelijk is aan het aanroepen van de functie trigger(). Dit object biedt toegang tot de eigenschapswaarden van de trigger vanuit de uitvoering van het huidige werkstroomexemplaar. |
workflow |
Object | Het werkstroomobject dat gelijk is aan het aanroepen van de functie workflow(). Dit object biedt toegang tot de eigenschapswaarden, zoals de naam van de werkstroom, de uitvoerings-id, enzovoort, van de huidige uitvoering van het werkstroomexemplaar. |
In het voorbeeld van dit artikel heeft het workflowContext
JSON-object mogelijk de volgende voorbeeldeigenschappen en -waarden van de Outlook-trigger:
{
"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"
}
}
}
}
Afhankelijkheden als parameters toevoegen aan een actie JavaScript-code uitvoeren
In sommige scenario's moet u mogelijk expliciet vereisen dat de actie JavaScript-code uitvoeren uitvoer van de trigger bevat of acties waarnaar uw code verwijst als afhankelijkheden. U moet deze extra stap bijvoorbeeld uitvoeren wanneer uw code verwijst naar uitvoer die niet beschikbaar is tijdens de runtime van de werkstroom. Tijdens het maken van de werkstroom analyseert de Azure Logic Apps-engine het codefragment om te bepalen of de code verwijst naar trigger- of actie-uitvoer. Als deze verwijzingen bestaan, neemt de engine deze uitvoer automatisch op. Als tijdens de uitvoering van de werkstroom de uitvoer van de trigger of actie waarnaar wordt verwezen niet wordt gevonden in het workflowContext
object, genereert de engine een fout. Als u deze fout wilt oplossen, moet u die trigger of actie toevoegen als een expliciete afhankelijkheid voor de actie JavaScript-code uitvoeren . Een ander scenario waarin u deze stap moet uitvoeren, is wanneer het workflowContext
object verwijst naar een trigger of actienaam die gebruikmaakt van de puntoperator (.).
Als u een trigger of actie als afhankelijkheid wilt toevoegen, voegt u de parameters Trigger of Acties toe die van toepassing zijn op de actie JavaScript-code uitvoeren . Vervolgens voegt u de trigger- of actienamen toe zoals deze worden weergegeven in de onderliggende JSON-definitie van uw werkstroom.
Notitie
U kunt geen variabelenbewerkingen , lussen zoals For each of Until en iteratie-indexen toevoegen als expliciete afhankelijkheden.
Als u van plan bent om uw code opnieuw te gebruiken, moet u altijd het invoervak voor codefragmenten gebruiken om te verwijzen naar trigger- en actie-uitvoer. Op die manier bevat uw code de opgeloste tokenverwijzingen, in plaats van alleen de trigger- of actie-uitvoer als expliciete afhankelijkheden toe te voegen.
Stel dat de actie Goedkeurings-e-mail verzenden van de Office 365 Outlook-connector voorafgaat aan het codefragment in de voorbeeldwerkstroom. Het volgende voorbeeldcodefragment bevat een verwijzing naar de SelectedOption-uitvoer van deze actie.
In dit voorbeeld hoeft u alleen de parameter Actions toe te voegen en vervolgens de JSON-naam van de actie, Send_approval_email
, toe te voegen aan de parameter . Op die manier geeft u op dat de actie JavaScript-code uitvoeren expliciet de uitvoer van de actie Goedkeurings-e-mail verzenden bevat.
De JSON-naam van de trigger of actie zoeken
Voordat u begint, hebt u de JSON-naam nodig voor de trigger of actie in de onderliggende werkstroomdefinitie.
Namen in uw werkstroomdefinitie gebruiken een onderstrepingsteken (_), geen spatie.
Als voor een actienaam de puntoperator (.) wordt gebruikt, neemt u deze operator op, bijvoorbeeld:
My.Action.Name
Selecteer codeweergave op de werkbalk van de werkstroomontwerper. Zoek in het
actions
object de naam van de actie.Is bijvoorbeeld
Send_approval_email
de JSON-naam voor de actie Goedkeurings-e-mail verzenden .Als u wilt terugkeren naar de ontwerpweergave, selecteert u Designer op de werkbalk van de codeweergave.
Voeg nu de JSON-naam toe aan de actie JavaScript-code uitvoeren .
Voeg de naam van de trigger of actie toe aan de actie JavaScript-code uitvoeren
Open in de actie JavaScript-code uitvoeren de lijst Nieuwe parameter toevoegen .
Selecteer in de lijst met parameters de volgende parameters die nodig zijn voor uw scenario.
Parameter Beschrijving Acties Uitvoer van voorgaande acties opnemen als afhankelijkheden. Wanneer u deze parameter selecteert, wordt u gevraagd om de acties die u wilt toevoegen. Trigger Uitvoer van de trigger opnemen als afhankelijkheden. Wanneer u deze parameter selecteert, wordt u gevraagd of u triggerresultaten wilt opnemen. Selecteer dus Ja in de lijst Trigger. Selecteer voor dit voorbeeld de parameter Actions .
Voer in het vak Actie-item - 1 de JSON-naam van de actie in.
Als u een andere actienaam wilt toevoegen, selecteert u Nieuw item toevoegen.
Sla uw werkstroom op wanneer u klaar bent.
Naslaginformatie over acties
Zie de naslagsectie van deze actie voor meer informatie over de structuur en syntaxis van de actie JavaScript-code uitvoeren in uw onderliggende werkstroomdefinitie met behulp van de taal voor werkstroomdefinities.