Megosztás a következőn keresztül:


JavaScript-kód hozzáadása és futtatása beágyazottan az Azure Logic Apps munkafolyamataival

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

Ha egyéni integrációs feladatokat szeretne végrehajtani a munkafolyamattal az Azure Logic Appsben, közvetlenül hozzáadhat és futtathat egyszerű JavaScript-kódrészleteket a munkafolyamatból az Azure Portalon. Ehhez a feladathoz használja a JavaScript-kód végrehajtása nevű Beágyazott kód műveletet. Ez a művelet visszaadja a kódrészlet eredményét, így ezt a kimenetet használhatja a munkafolyamat későbbi műveleteiben. Ez a művelet különböző korlátozásokkal rendelkezik attól függően, hogy használatalapú vagy standard munkafolyamattal rendelkezik-e, és a kódrészletekhez a legjobban az alábbi attribútumokkal működik:

Művelet Nyelv Nyelvi verzió Futtatási időtartam 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ókért tekintse át a standard beépített objektumokat.
5 másodperc vagy kevesebb idő alatt fejeződik be. Legfeljebb 50 MB-os adatokat kezel. – Nem igényel olyan változóműveleteket, amelyeket a művelet nem támogat.

– A JavaScript futtatásához nem támogatja a require() 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 az Azure Functions használatával.

Ez az útmutató bemutatja, hogyan működik a művelet egy Példa munkafolyamatban, 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 azokat a címeket, amelyeket egy későbbi művelet során használhat.

Az alábbi diagram a példa-munkafolyamat kiemeléseit mutatja be:

Előfeltételek

A JavaScript-kód végrehajtása művelet hozzáadása

  1. Az Azure Portalon nyissa meg a Consumption 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 hozzáadja a műveletet az Office 365 Outlook-eseményindító alatt. 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 elkezd begépelni egy felismert kulcsszót, megjelenik az automatikus kiegészítési lista, hogy kiválaszthassa az elérhető kulcsszavakat, például:

    Képernyőkép a Használati 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 egy 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 Consumption munkafolyamatról, a JavaScript Code-művelet végrehajtásáról és a változókat létrehozó példakódról.

  4. Ha a kurzor továbbra is a Kód mezőben van, a megnyitott dinamikus tartalomlistában keresse meg a Mikor érkezik új e-mail szakaszt, és válassza ki a Törzs tulajdonságot, amely az e-mail törzsére hivatkozik.

    Képernyőkép a Használati munkafolyamatról, a JavaScript-kód végrehajtásáró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 fókuszban lévő szerkesztési mező bemeneti formátumának. Ez a lista megkönnyíti a kimenetek használatát és a munkafolyamatból való hivatkozását. 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ó és a munkafolyamat korábbi műveletei kimeneteihez, például az eseményindító tulajdonságáhozbody, amely eltér az e-mail Törzs tulajdonságától. Az objektummal kapcsolatos további információkért tekintse meg a workflowContext cikk későbbi részében a workflowContext objektumot használó referencia-eseményindítókat és műveletkimeneteket.

    Fontos

    Ha a kódrészlet olyan műveletnevekre hivatkozik, amelyek tartalmazzák a pont (.) operátort, ezeknek a hivatkozásoknak szögletes zárójelekkel ([]) és idézőjelekkel ("" ) kell tartalmazniuk ezeket a műveleti neveket, 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 egy 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 Törzs tulajdonságát az eseményindító body tulajdonságától, nevezze át helyette a második body tulajdonságotBody. Adja hozzá a záró pontosvesszőt (;) a végén a kódkivonat befejezéséhez.

    Képernyőkép a Használat logikai alkalmazás munkafolyamatról, a JavaScript Code-művelet végrehajtásáról és a

    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 egyszerűbben hivatkozhat a munkafolyamat későbbi eredményeire az Eredmény jogkivonat használatával 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 megkeresi az e-mail törzsében található egyezéseket a megadott reguláris kifejezéssel. 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.

Referencia-eseményindítók és műveletkimenetek 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 előző 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ó, az előző műveletek és a munkafolyamat kimeneteihez. Az objektum a következő struktúrát használja, és tartalmazza a actions, triggerés workflow tulajdonságokat is, 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 megegyezik 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ó tulajdonságértékeihez az aktuális munkafolyamat-példány futtatásából.
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 az alábbi 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 kell megkö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 eseményindítóra vagy műveletkimenetre. Ha ezek a hivatkozások léteznek, a motor automatikusan tartalmazza ezeket a kimeneteket. Munkafolyamat-futtatáskor, ha a hivatkozott eseményindító vagy művelet kimenete nem található az workflowContext objektumban, a motor hibát okoz. A hiba megoldásához explicit függőségként kell hozzáadnia ezt az eseményindítót vagy műveletet a JavaScript-kód végrehajtása művelethez. Egy másik forgatókönyv, amely megköveteli, hogy ezt a lépést megtegye, az az, amikor az workflowContext objektum hivatkozik egy eseményindítóra vagy műveletnévre, 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 is hozzáadhatja.

Feljegyzés

Nem adhat hozzá változóműveleteket , ciklusokat, például mindegyikhez vagy Until-hez, és nem adhat hozzá iterációs indexeket explicit függőségként.

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

Tegyük fel például, hogy az 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 Send_approval_emaila paramé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ód nézetet. Az objektumban actions keresse meg a művelet nevét.

    Például Send_approval_email a jóváhagyási e-mail küldése művelet JSON-neve.

    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.

Az eseményindító vagy a műveletnév hozzáadása 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 a következő paramétereket, ahogy a forgatókönyv megköveteli.

    Paraméter Leírás
    Műveletek Az előző műveletek kimeneteit adja hozzá 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 kiválasztja ezt a paramétert, a rendszer megkérdezi, hogy szerepeljenek-e triggereredmények. Az eseményindítók listájá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 a Kiválasztott Műveletek paraméterrel.

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

    Képernyőkép a Műveletek elem -1 mezőről és a művelet JSON-nevéről.

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

  6. Ha végzett, mentse a munkafolyamatot.

Művelethivatkozás

A JavaScript Code-művelet szerkezetéről és szintaxisáról a munkafolyamat-definíció alapjául szolgáló munkafolyamat-definícióban a munkafolyamat-definíció nyelvével kapcsolatos további információkért tekintse meg a művelet referenciaszakaszát.

Következő lépések