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
Azure-fiók és -előfizetés. Ha még nincs előfizetése, regisztráljon egy ingyenes Azure-fiókra.
A logikai alkalmazás munkafolyamata, amelyhez hozzá szeretné adni a kódrészletet. A munkafolyamatnak már egy eseményindítóval kell kezdődnie.
Ez a cikk a Office 365 Outlook-eseményindítót használja, amely az Új e-mail érkezésekor nevet viseli.
Ha nem rendelkezik munkafolyamatokkal, tekintse meg a következő dokumentációt:
Attól függően, hogy a logikai alkalmazás Használat vagy Standard, tekintse át a következő követelményeket:
Használat: Node.js 8.11.10-es verziót és egy, a logikai alkalmazás erőforrásából származó integrációs fiókra mutató hivatkozást igényel.
Fontos
Győződjön meg arról, hogy a használati esetnek vagy forgatókönyvnek megfelelő integrációs fiókot használ.
Az ingyenes szintű integrációs fiókok például csak felderítési forgatókönyvekre és számítási feladatokra szolgálnak, nem éles forgatókönyvekre, korlátozottak a használatban és az átviteli sebességben, és nem támogatják a szolgáltatásiszint-szerződés (SLA) által.
Az integrációs fiók egyéb szintjei költségekkel járnak, de magukban foglalják az SLA-támogatást, nagyobb átviteli sebességet kínálnak, és magasabb korlátokkal rendelkeznek. További információ az integrációs fiók szintjeiről, korlátairól és díjszabásáról.
Standard: Node.js 16.x.x verziót igényel, integrációs fiók nélkül.
Adja hozzá a JavaScript-kód végrehajtása műveletet
A Azure Portal nyissa meg a Használat logikai alkalmazás munkafolyamatát a tervezőben.
-
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
. 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:
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.
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.
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. AzworkflowContext
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áhozbody
, 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 aworkflowContext
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.
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ásodikbody
tulajdonságotBody
. Adja hozzá a záró pontosvesszőt (;) a kódkivonat befejezéséhez.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ávalreturn
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.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 , trigger
a és workflow
a actions
tulajdonsá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_email
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
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ául
Send_approval_email
.A tervező nézetre való visszatéréshez a kódnézet eszköztárán válassza a Tervező lehetőséget.
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
A JavaScript-kód végrehajtása műveletben nyissa meg az Új paraméter hozzáadása listát.
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. Ebben a példában válassza a Műveletek paramétert.
A Műveletek elem – 1 mezőben adja meg a művelet JSON-nevét.
Egy másik műveletnév hozzáadásához válassza az Új elem hozzáadása lehetőséget.
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.