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:

  • 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

  1. Open in de Azure Portal de werkstroom van de logische app Verbruik in de ontwerpfunctie.

  2. 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.

    Schermopname van de actie JavaScript-code uitvoeren met standaardvoorbeeldcode.

  3. 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:

    Schermopname van de werkstroom Verbruik, de actie JavaScript-code uitvoeren en de lijst met automatisch aanvullen van trefwoorden.

    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.

    Schermopname van de werkstroom Verbruik, de actie JavaScript-code uitvoeren en voorbeeldcode waarmee variabelen worden gemaakt.

  4. 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.

    Schermopname met de werkstroom Verbruik, de actie JavaScript-code uitvoeren, de lijst met dynamische inhoud en de eigenschap 'Hoofdtekst' van het e-mailbericht geselecteerd.

    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. Het workflowContext object bevat eigenschappen die uw code toegang geven tot de uitvoer van de trigger en voorafgaande acties in uw werkstroom, zoals de eigenschap van body 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.

  5. 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 tweede body eigenschap Body in in plaats daarvan. Voeg de afsluitende puntkomma (;) toe aan het einde om de code-instructie te voltooien.

    Schermopname van de werkstroom van de logische app Verbruik, de actie JavaScript-code uitvoeren en de naam van de eigenschap 'Hoofdtekst' met puntkomma's sluiten.

    Voor de actie JavaScript-code uitvoeren is syntactisch geen instructie vereist return . Door de return 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.

    Schermopname van de voltooide werkstroom van de logische app Verbruik.

  6. 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 actionseigenschappen , triggeren 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

  1. 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 .

    Schermopname van de actienaam in JSON.

  2. Als u wilt terugkeren naar de ontwerpweergave, selecteert u Designer op de werkbalk van de codeweergave.

  3. 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

  1. Open in de actie JavaScript-code uitvoeren de lijst Nieuwe parameter toevoegen .

  2. 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.
  3. Selecteer voor dit voorbeeld de parameter Actions .

    Schermopname van de actie JavaScript-code uitvoeren met de parameter Actions geselecteerd.

  4. Voer in het vak Actie-item - 1 de JSON-naam van de actie in.

    Schermopname van het vak Actie-item -1 en de JSON-naam van de actie.

  5. Als u een andere actienaam wilt toevoegen, selecteert u Nieuw item toevoegen.

  6. 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.

Volgende stappen