Kódrészletek futtatása munkafolyamatokban beágyazott kódműveletekkel az Azure Logic Appsben

A következőkre vonatkozik: Azure Logic Apps (Használat + Standard)

Ha sok beállítás nélkül szeretne kódrészletet létrehozni és futtatni a logikai alkalmazás munkafolyamatában, használhatja a beágyazott kód beépített összekötőjét. Ez az összekötő egy olyan művelettel rendelkezik, amely a kódrészlet eredményét adja vissza, így ezt a kimenetet használhatja a munkafolyamat későbbi műveleteiben.

Az összekötő jelenleg csak egyetlen művelettel rendelkezik, amely a legjobban az alábbi attribútumokkal rendelkező kódrészletekhez működik, de több művelet is fejlesztés alatt áll. A beépített beágyazott kód összekötőnek is különböző korlátai vannak attól függően, hogy a logikai alkalmazás munkafolyamata Használat vagy Standard.

Művelet Nyelv Nyelvi verzió Futtatás időtartama Adatméret Egyéb megjegyzések
JavaScript-kód végrehajtása JavaScript Standard:
Node.js 16.x.x

Felhasználás:
Node.js 8.11.1

További információ: Standard beépített objektumok.
Legalább 5 másodperc alatt befejeződik. Legfeljebb 50 MB-os adatokat kezel. – Nem szükséges a változóműveletekkel dolgozni, amelyeket a művelet nem támogat.

– Nem támogatja a require() JavaScript futtatására szolgáló függvényt.

Ha olyan kódot szeretne futtatni, amely nem felel meg ezeknek az attribútumoknak, létrehozhat és meghívhat egy függvényt Azure Functions keresztül.

Ez a cikk bemutatja, hogyan működik a művelet egy példamunkafolyamatban, amely egy Office 365 Outlook-eseményindítóval kezdődik. A munkafolyamat akkor fut, amikor új e-mail érkezik a társított Outlook-e-mail-fiókba. A mintakódrészlet kinyeri az e-mail törzsét tartalmazó e-mail-címeket, és kimenetként adja vissza ezeket a címeket, amelyeket egy későbbi műveletben használhat.

Az alábbi diagram a példa-munkafolyamat főbb elemeit mutatja be:

Előfeltételek

Adja hozzá a JavaScript-kód végrehajtása műveletet

  1. A Azure Portal nyissa meg a Használat logikai alkalmazás munkafolyamatát a tervezőben.

  2. A tervezőben az alábbi általános lépéseket követve adja hozzá a JavaScript-kód végrehajtása nevű Beágyazott kód műveletet a munkafolyamathoz.

    Ez a példa a Office 365 Outlook-eseményindító alatti műveletet adja hozzá. Alapértelmezés szerint a művelet tartalmaz néhány mintakódot, köztük egy utasítást return .

    Képernyőkép a JavaScript-kód végrehajtása műveletről az alapértelmezett mintakóddal.

  3. A Kód mezőben törölje a mintakódot, és írja be a kódot. Írja be a metódusba beírt kódot, de a metódus aláírása nélkül.

    Tipp

    Ha a kurzor a Kód mezőben van, megjelenik a dinamikus tartalomlista. Bár ezt a listát később fogja használni, figyelmen kívül hagyhatja, és egyelőre nyitva hagyhatja a listát. Ne válassza az Elrejtés lehetőséget.

    Ha felismert kulcsszót kezd begépelni, megjelenik az automatikus kiegészítési lista, hogy kiválaszthassa az elérhető kulcsszavakat, például:

    Képernyőkép a Használat munkafolyamatról, a JavaScript-kód végrehajtása műveletről és a kulcsszó automatikus kiegészítési listájáról.

    A következő példakódrészlet először létrehoz egy myResult nevű változót, amely egy reguláris kifejezést tárol, amely a bemeneti szövegben egyező mintát ad meg. A kód ezután létrehoz egy e-mail nevű változót, amely az e-mail törzstartalmat tárolja az eseményindító kimeneteiből.

    Képernyőkép a Használat munkafolyamatról, a JavaScript-kód végrehajtása műveletről és a változókat létrehozó példakódról.

  4. Ha a kurzor még mindig a Kód mezőben van, a megnyitott dinamikus tartalomlistában keresse meg az Új e-mail érkezésekor szakaszt , és válassza ki a Törzs tulajdonságot, amely az e-mail törzsére hivatkozik.

    Képernyőkép a Használat munkafolyamatról, a JavaScript-kód végrehajtása műveletről, a dinamikus tartalomlistáról és az e-mail

    A dinamikus tartalomlista az eseményindító kimeneteit és az előző műveleteket jeleníti meg, ha ezek a kimenetek megfelelnek a jelenleg fókuszban lévő szerkesztőmező bemeneti formátumának. Ez a lista megkönnyíti a kimenetek használatát, és hivatkozik a munkafolyamatból. Ebben a példában a lista az Outlook-eseményindító kimeneteit jeleníti meg, beleértve az e-mail Törzs tulajdonságát is.

    A Body tulajdonság kiválasztása után a JavaScript-kód végrehajtása művelet feloldja a jogkivonatot egy írásvédett workflowContext JSON-objektumra, amelyet a kódrészlet bemenetként használhat. Az workflowContext objektum olyan tulajdonságokat tartalmaz, amelyek hozzáférést biztosítanak a kódnak az eseményindító kimeneteihez és a munkafolyamat korábbi műveleteihez, például az eseményindító tulajdonságához body , amely különbözik az e-mail Törzs tulajdonságától. Az objektummal kapcsolatos további információkért lásd a workflowContext cikk workflowContext objektumot használó triggereinek és műveletkimeneteinek referencia-eseményindítóját és műveletkimeneteit .

    Fontos

    Ha a kódrészlet olyan műveletnevekre hivatkozik, amelyek tartalmazzák a pont (.) operátort, ezeknek a referenciáknak szögletes zárójelekkel ([]) és idézőjelekkel ("" ) kell tartalmazniuk ezeket a műveletneveket, például:

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

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

    Emellett a JavaScript-kód végrehajtása műveletben hozzá kell adnia az Actions paramétert , majd hozzá kell adnia ezeket a műveletneveket a paraméterhez. További információ: Függőségek hozzáadása paraméterekként a JavaScript-kód végrehajtása művelethez a cikk későbbi részében.

  5. Ha meg szeretné különböztetni az e-mail Üzenet törzs tulajdonságát az eseményindító body tulajdonságától, nevezze át helyette a második body tulajdonságot Body . Adja hozzá a záró pontosvesszőt (;) a kódkivonat befejezéséhez.

    Képernyőkép a Használat logikai alkalmazás munkafolyamatról, a JavaScript-kód végrehajtása műveletről, valamint az átnevezett

    A JavaScript-kód végrehajtása művelethez nincs szükség return utasításra. Az utasítás beleszámításával return azonban könnyebben hivatkozhat a munkafolyamat későbbi eredményeire az Eredmény jogkivonattal a későbbi műveletekben.

    Ebben a példában a kódrészlet a függvény meghívásával adja vissza az match() eredményt, amely az e-mail-üzenet törzsében található egyezéseket a megadott reguláris kifejezéssel találja meg. A HTML-tábla létrehozása művelet ezután az Eredmény jogkivonat használatával hivatkozik a JavaScript-kód végrehajtása művelet eredményeire, és egyetlen eredményt hoz létre.

    Képernyőkép a kész Használat logikai alkalmazás munkafolyamatról.

  6. Ha végzett, mentse a munkafolyamatot.

Trigger- és műveletkimenetek hivatkozása a workflowContext objektummal

A tervező kódrészletén belül a dinamikus tartalomlistával kiválaszthat egy olyan jogkivonatot, amely az eseményindító vagy bármely korábbi művelet kimenetére hivatkozik. A jogkivonat kiválasztásakor a JavaScript-kód végrehajtása művelet egy írásvédett workflowContext JSON-objektumra oldja fel a jogkivonatot. Ez az objektum hozzáférést biztosít a kódnak az eseményindító kimeneteihez, az előző műveletekhez és a munkafolyamathoz. Az objektum a következő struktúrát használja, és tartalmazza a , triggera és workflow a actionstulajdonságokat, amelyek szintén objektumok:

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

Az alábbi táblázat további információkat tartalmaz ezekről a tulajdonságokról:

Tulajdonság Típus Leírás
actions Objektumgyűjtemény A kódrészlet futtatása előtt futtatott korábbi műveletek eredményobjektumai. Minden objektumnak van egy kulcs-érték párja, ahol a kulcs a művelet neve, és az érték egyenértékű a művelet() függvény kifejezéssel való meghívásának eredményével @actions('<action-name>') .

A művelet neve ugyanazt a műveletnevet használja, amely a mögöttes munkafolyamat-definícióban jelenik meg, amely a műveletnévben lévő szóközöket (" ") aláhúzásjelekre (_) cseréli. Ez az objektumgyűjtemény hozzáférést biztosít a művelet tulajdonságértékeihez az aktuális munkafolyamat-példány futtatásából.
trigger Objektum Az eseményindító eredményobjektuma, ahol az eredmény egyenértékű a trigger() függvény meghívásával. Ez az objektum hozzáférést biztosít az eseményindító aktuális munkafolyamat-példány által futtatott tulajdonságértékeihez.
workflow Objektum A munkafolyamat-objektum, amely egyenértékű a munkafolyamat() függvény meghívásával. Ez az objektum hozzáférést biztosít a tulajdonságértékekhez, például a munkafolyamat nevéhez, a futtatási azonosítóhoz stb. az aktuális munkafolyamat-példány futtatásából.

A cikk példájában a workflowContext JSON-objektum a következő mintatulajdonságokkal és értékekkel rendelkezhet az Outlook-eseményindítóból:

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

Függőségek hozzáadása paraméterekként egy JavaScript-kód végrehajtása művelethez

Bizonyos esetekben előfordulhat, hogy explicit módon meg kell követelnie, hogy a JavaScript-kód végrehajtása művelet tartalmazza az eseményindító kimeneteit vagy azokat a műveleteket, amelyekre a kód függőségként hivatkozik. Ezt a további lépést például akkor kell elvégeznie, ha a kód olyan kimenetekre hivatkozik, amelyek nem érhetők el a munkafolyamat futási ideje alatt. A munkafolyamat létrehozása során az Azure Logic Apps motorja elemzi a kódrészletet annak megállapításához, hogy a kód hivatkozik-e valamilyen eseményindítóra vagy műveletkimenetre. Ha ezek a hivatkozások léteznek, a motor automatikusan tartalmazza ezeket a kimeneteket. Ha a munkafolyamat futtatásakor a hivatkozott eseményindító vagy művelet kimenete nem található az workflowContext objektumban, a motor hibát generál. A hiba elhárításához hozzá kell adnia az eseményindítót vagy a műveletet explicit függőségként a JavaScript-kód végrehajtása művelethez. Egy másik forgatókönyv, amely megköveteli ezt a lépést, az az, ha az workflowContext objektum egy eseményindítóra vagy műveletnévre hivatkozik, amely a pont operátort (.) használja.

Ha függőségként szeretne eseményindítót vagy műveletet hozzáadni, adja hozzá az Eseményindító vagy műveletek paramétereket a JavaScript-kód végrehajtása művelethez. Ezután a munkafolyamat mögöttes JSON-definíciójában megjelenő eseményindító- vagy műveletneveket adja hozzá.

Megjegyzés

Nem vehet fel változóműveleteket , hurkokat, például Mindegyikhöz vagy Until-hoz, és nem adhat hozzá iterációs indexeket explicit függőségként.

Ha újra szeretné használni a kódot, mindig használja a kódrészlet szerkesztési mezőjét az eseményindítók és a műveletkimenetek hivatkozásához. Így a kód tartalmazza a feloldott jogkivonat-hivatkozásokat, nem csak explicit függőségként adja hozzá az eseményindítót vagy a műveletkimenetet.

Tegyük fel például, hogy a Office 365 Outlook-összekötő Jóváhagyási e-mail küldése művelete megelőzi a minta munkafolyamat kódrészletét. Az alábbi példakódrészlet a művelet SelectedOption kimenetére mutató hivatkozást tartalmaz.

Ebben a példában csak az Actions paramétert kell hozzáadnia, majd hozzá kell adnia a művelet JSON-nevét a Send_approval_emailparaméterhez. Így megadhatja, hogy a JavaScript-kód végrehajtása művelet explicit módon tartalmazza a Jóváhagyási e-mail küldése művelet kimenetét.

Az eseményindító vagy a művelet JSON-nevének megkeresése

A kezdés előtt szüksége lesz az eseményindító vagy művelet JSON-nevére a mögöttes munkafolyamat-definícióban.

  • A munkafolyamat-definícióban szereplő nevek aláhúzásjelet (_) használnak, nem szóközt.

  • Ha egy műveletnév a pont operátort (.) használja, adja meg az operátort, például:

    My.Action.Name

  1. A munkafolyamat-tervező eszköztárán válassza a Kódnézet lehetőséget. Az objektumban actions keresse meg a művelet nevét.

    A jóváhagyási e-mail küldése művelet JSON-neve példáulSend_approval_email.

    Képernyőkép a művelet nevéről a JSON-ban.

  2. A tervező nézetre való visszatéréshez a kódnézet eszköztárán válassza a Tervező lehetőséget.

  3. Most adja hozzá a JSON-nevet a JavaScript-kód végrehajtása művelethez.

Adja hozzá az eseményindítót vagy a művelet nevét a JavaScript-kód végrehajtása művelethez

  1. A JavaScript-kód végrehajtása műveletben nyissa meg az Új paraméter hozzáadása listát.

  2. A paraméterek listájában válassza ki az alábbi paramétereket, ahogy a forgatókönyv megköveteli.

    Paraméter Leírás
    Műveletek Az előző műveletek kimeneteinek belefoglalása függőségként. Amikor kiválasztja ezt a paramétert, a rendszer kérni fogja a hozzáadni kívánt műveleteket.
    Eseményindító Adja meg az eseményindító kimeneteit függőségként. Amikor ezt a paramétert választja, a rendszer megkérdezi, hogy szerepeljenek-e eseményindítók eredményei. Ezért az Eseményindító listában válassza az Igen lehetőséget.
  3. Ebben a példában válassza a Műveletek paramétert.

    Képernyőkép a JavaScript-kód végrehajtása műveletről, amelyen a Műveletek paraméter van kiválasztva.

  4. A Műveletek elem – 1 mezőben adja meg a művelet JSON-nevét.

    Képernyőkép az Actions Item -1 mezőről és a művelet JSON-nevéről.

  5. Egy másik műveletnév hozzáadásához válassza az Új elem hozzáadása lehetőséget.

  6. Ha elkészült, mentse a munkafolyamatot.

Művelethivatkozás

A JavaScript-kód végrehajtása művelet struktúrájáról és szintaxisáról a munkafolyamat-definíciós nyelv használatával, a művelet referenciaszakaszában talál további információt.

Következő lépések